Operating System - Shortest Job First (SJF) Scheduling Algorithm
Shortest Job First (SJF) is a CPU scheduling algorithm that selects the process with the smallest execution time (burst time) to execute next. It is a non-preemptive scheduling algorithm (though there's a preemptive version called Shortest Remaining Time First, or SRTF).
Characteristics:
-
Non-preemptive: Once a process starts execution, it runs till completion.
-
Optimal in terms of average waiting time (but hard to implement in practice because it requires knowledge of future burst times).
-
May cause starvation for longer processes if short ones keep arriving.
Terminology:
-
Arrival Time (AT): Time when a process arrives in the ready queue.
-
Burst Time (BT): Time required by a process for execution.
-
Waiting Time (WT): Time a process waits in the ready queue.
-
Turnaround Time (TAT): Time from arrival to completion.
TAT = Completion Time - Arrival Time
WT = Turnaround Time - Burst Time
Example:
Let’s consider the following set of processes:
Process | Arrival Time (AT) | Burst Time (BT) |
---|---|---|
P1 | 0 | 8 |
P2 | 1 | 4 |
P3 | 2 | 9 |
P4 | 3 | 5 |
Step 1: Sort by Arrival Time
Already sorted.
Step 2: Start scheduling based on SJF
Time 0:
-
Only P1 is available → Execute P1.
Time 8:
-
P2, P3, and P4 have arrived.
-
Among them, P2 (BT=4) is the shortest → Execute P2.
Time 12:
-
P3 (BT=9) and P4 (BT=5) remain.
-
P4 is shorter → Execute P4.
Time 17:
-
Only P3 remains → Execute P3.
Schedule Order:
P1 → P2 → P4 → P3
Calculate Completion, Turnaround, and Waiting Time:
Process | AT | BT | Completion Time | TAT = CT - AT | WT = TAT - BT |
---|---|---|---|---|---|
P1 | 0 | 8 | 8 | 8 | 0 |
P2 | 1 | 4 | 12 | 11 | 7 |
P4 | 3 | 5 | 17 | 14 | 9 |
P3 | 2 | 9 | 26 | 24 | 15 |
Average Waiting Time:
0+7+9+154=314=7.75\frac{0 + 7 + 9 + 15}{4} = \frac{31}{4} = 7.75
Average Turnaround Time:
8+11+14+244=574=14.25\frac{8 + 11 + 14 + 24}{4} = \frac{57}{4} = 14.25
Pros:
-
Minimizes average waiting time (theoretically optimal).
Cons:
-
Hard to predict exact burst times.
-
Long processes can suffer starvation.