Visualize FCFS, SJF, Round Robin, Priority, HRRN, Multilevel Queues, and I/O scheduling with animated Gantt charts and live metrics.
The Challenge: Understanding CPU scheduling algorithms is fundamental to Operating Systems education, yet traditional learning methods rely on static diagrams and manual calculations that fail to convey the dynamic nature of process scheduling.
The Gap: Students struggle to visualize how different algorithms behave under varying workloads, compare their performance metrics, and understand the trade-offs between efficiency, fairness, and overhead.
Our Solution: A real-time, interactive simulator that visualizes CPU scheduling algorithms with animated Gantt charts, live performance metrics, and intelligent algorithm recommendations.
CPU scheduling is the cornerstone of multiprogramming operating systems. It determines system performance, responsiveness, and resource utilization.
Maximize CPU usage to ensure the processor is never idle when processes are waiting.
Complete as many processes as possible per unit time for efficient batch processing.
Minimize the total time from process submission to completion.
Reduce time processes spend in the ready queue waiting for CPU allocation.
Ensure quick first response for interactive systems and user experience.
Guarantee all processes receive fair share of CPU time without starvation.
Create animated Gantt charts that show real-time process execution and context switches.
FCFS, SJF (preemptive & non-preemptive), Round Robin, Priority, HRRN, Multilevel Queue, MLFQ, and I/O-aware scheduling with accurate behavior.
Calculate and display waiting time, turnaround time, throughput, and context switches.
Build an intelligent system that detects suboptimal scheduling and suggests better algorithms.
Provide clear explanations and comparisons to help students understand trade-offs.
Deliver a polished, responsive web application with smooth animations and intuitive UX.
Every scheduling algorithm available in the simulator is listed below. You can try each one in the simulator and compare behavior, metrics, and Gantt charts in real time.
Processes are executed in the exact order they arrive in the ready queue.
Formula: Select process with minimum arrival time among ready.
Best for: Batch processing where simplicity is preferred over efficiency.
The process with the smallest remaining burst time is executed; preemption when a shorter job arrives.
Formula: Select process with minimum remaining burst time among ready.
Best for: Minimizing average waiting time when burst times are predictable.
Among ready processes, the one with the smallest burst time runs to completion. No preemption.
Formula: Select ready process with minimum burst time; run to completion.
Best for: Batch systems when jobs are known in advance.
The ready process with the largest burst time runs to completion. No preemption.
Formula: Select ready process with maximum burst time; run to completion.
Best for: Favoring long-running jobs.
The process with the largest remaining burst time runs; preemption when a longer job arrives.
Formula: Select process with maximum remaining burst time among ready.
Best for: Preemptive favoring of long jobs.
Each process gets a fixed time quantum; after quantum expires, it is preempted and added to the end of the ready queue.
Formula: Cyclic: run each ready process for up to quantum time units, then move to back of queue.
Best for: Time-sharing and interactive systems; fair CPU allocation.
The process with the highest priority (lowest number here) runs first. Once started, runs to completion.
Formula: Select ready process with highest priority (smallest priority number).
Best for: Real-time systems where certain tasks must run first.
Highest-priority process runs; preemption occurs when a higher-priority process arrives.
Formula: At each instant, run ready process with highest priority. Preempt when higher-priority arrives.
Best for: Real-time systems with dynamic priority arrivals.
Processes are assigned to queues by priority level; each queue may use a different algorithm (e.g. RR).
Formula: Assign to queue by priority; schedule from highest-priority non-empty queue (e.g. RR within queue).
Best for: Separating workload types (e.g. system vs user) with different policies.
Response Ratio = (Waiting + Burst) / Burst. The ready process with highest RR runs to completion.
Formula: RR = (waiting_time + burst_time) / burst_time; select max RR among ready.
Best for: Balancing waiting time and service time; reduces starvation.
Each process gets tickets; each quantum a random ticket wins and that process runs. Proportional-share.
Formula: Pick random ticket among ready (probability ∝ tickets); run winner for quantum.
Best for: Proportional CPU share with simple ticket assignment.
Deterministic proportional-share: each process has a stride (inverse of share); run process with smallest pass, then add stride.
Formula: pass += stride after run; select process with minimum pass among ready.
Best for: Deterministic proportional CPU allocation.
Like FCFS but processes can have multiple CPU burst / I/O burst pairs; while in I/O the process is blocked and does not use the CPU.
Formula: Bursts: [cpu1, io1, cpu2, io2, ...]. Ready = arrived and not in I/O; schedule FCFS among ready.
Best for: Realistic I/O-bound workloads and blocking behavior.
Processes start in the top queue; if they use a full time slice they are demoted to a lower queue.
Formula: Start in top queue; after using full quantum, demote to next queue. Schedule from highest non-empty queue (e.g. RR).
Best for: Favoring short and I/O-bound jobs without prior knowledge.
Run your own scheduling strategy in the browser: JavaScript that receives ready processes and current time and returns which process to run.
Formula: function(state) => pid; state has ready processes and time.
Best for: Experiments and custom scheduling logic in JavaScript.
React 18
UI Library
TypeScript
Type Safety
Vite
Build Tool
Tailwind
Styling
Framer Motion
Animations
MUI Charts
Data Viz
Express
Backend
Node.js
Runtime
React SPA with real-time updates
RESTful endpoints for simulation
Core algorithms & metrics engine
Time when process finishes
Example: CT = End time in Gantt chart
CT - Arrival Time
Example: TAT = 10 - 2 = 8 units
TAT - Burst Time
Example: WT = 8 - 5 = 3 units
Σ(WT) / n
Example: (3 + 5 + 2) / 3 = 3.33
n / Total Time
Example: 5 processes / 20 units = 0.25
(Busy Time / Total Time) × 100
Example: (18 / 20) × 100 = 90%
Algorithm selection, process ordering, ready queue management
Process state saving, overhead measurement, switch optimization
Wait time, turnaround time, throughput, CPU utilization
Process states, arrival modeling, burst time simulation
Time-slicing, preemption intervals, quantum selection
Priority assignment, scheduling decisions, starvation prevention
Algorithm comparison, trade-off analysis, workload adaptation
Preemptive vs non-preemptive, SRTF implementation, state management
Our intelligent evaluator detects suboptimal scheduling and automatically recommends better algorithms.
When context switches exceed threshold:
// Detection
if (contextSwitches > processes.length × 2.5)
→ Switch to SJF
Example
"Round Robin caused 8 context switches. System switched to SJF to reduce turnaround time by 25%."
When convoy effect causes high waiting time:
// Detection
if (fcfsWaitTime > sjfWaitTime × 2)
→ Switch to SJF
Example
"FCFS led to high average waiting time (12.5). System switched to SJF (avg waiting: 4.2)."
Configure processes, select an algorithm, and watch the scheduling unfold in real-time with animated Gantt charts and live metrics.