The document discusses various CPU scheduling algorithms including first come first served, shortest job first, priority, and round robin. It describes the basic concepts of CPU scheduling and criteria for evaluating algorithms. Implementation details are provided for shortest job first, priority, and round robin scheduling in C++.
2. Overview
Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Implementation in C++
Demonstration
Involvement of Operating System
CPU Scheduling Algorithms 2
3. Basic Concepts
Main objective of multiprogramming is to keep on
running processes all the time for maximum CPU
utilization.
Scheduling is fundamental function of OS.
The task of selecting the processes in memory that
are ready to execute, and allocating them to the
CPU is performed by the CPU Scheduler.
CPU Scheduling Algorithms 3
4. CPU Scheduler
CPU scheduling decisions may take place when a
process:
o 1. Switches from running to waiting state
o 2. Switches from running to ready state
o 3. Switches from waiting to ready
o 4. Terminates
Scheduling under 1 and 4 is non preemptive.
All other scheduling is preemptive.
CPU Scheduling Algorithms 4
5. CONT…
CPU Scheduler
Nonpreemptive
Once a process is allocated the CPU, it does not
leave unless:
o it has to wait, e.g., for I/O request
o it terminates
Preemptive
o OS can force (preempt) a process from CPU at
anytime
o E.g., to allocate CPU to another higher-priority
process
CPU Scheduling Algorithms 5
6. Scheduling Criteria
CPU utilization: keep the CPU as busy as possible
◦ Maximize
Throughput: No of processes that complete their
execution per time unit
◦ Maximize
Turnaround time: amount of time to execute a
particular process (time from submission to
termination)
◦ Minimize
CPU Scheduling Algorithms 6
7. CONT…
Scheduling Criteria
Waiting time: amount of time a process has been
waiting in the ready queue (sum of time waiting in
ready queue)
o Minimize
Response time – amount of time it takes from when
a request was submitted until the first response is
produced, not output (for time-sharing
environment)
o Minimize
CPU Scheduling Algorithms 7
8. Scheduling Algorithms
First Come, First Served
Shortest Job First
Priority
Round Robin
CPU Scheduling Algorithms 8
9. Implementation in C++
Class: cpuschedule
Attributes:
o n – number of processes
o Bu[ ] – Array to store Burst Time
o A[ ] – Array to store Arrival Time
o Wt[ ] – Array to store Waiting Time
o Twt – Total Waiting Time
o Awt – Average Waiting Time
CPU Scheduling Algorithms 9
10. CONT…
Implementation in C++
Operations:
o Getdata() – To get number of processes and
Burst Times from the user
o Fcfs() – First Come, First Served Algorithm
o Sjf() – Shortest Job First (normal) Algorithm
o SjfP() – Shortest Job First (Preemption)
Algorithm
o SjfNp() – Shortest Job First (non
preemption) Algorithm
o Priority() – Priority Algorithm
o RoundRobin() – Round Robin Algorithm
CPU Scheduling Algorithms 10
11. First Come, First Served
Process Burst Time
P1 24
P2 3
P3 3
Suppose that the processes arrive in the order:
P1 , P2 , P3
The Gantt Chart for the schedule is:
P1 P2 P3
0 24 27 30
Waiting time for P1 = 0; P2 = 24; P3 = 27
Average waiting time: (0 + 24 + 27)/3 = 17
CPU Scheduling Algorithms 11
12. First Come First CONT…
Served
Suppose that the processes arrive in the order :
P2 , P3 , P1 (P1:24,P2:3,P3:3)
The Gantt chart for the schedule is:
P2 P3 P1
0 3 6 30
Waiting time for P1 = 6; P2 = 0; P3 = 3
Average waiting time: (6 + 0 + 3)/3 = 3
Much better than previous case
Convoy effect - short process behind long process
CPU Scheduling Algorithms 12
13. Shortest Job First
Normal SJF
Process Burst Time
P1 7
P2 3
P3 4
The Gantt Chart for SJF (Normal) is:
P2 P3 P1
0 3 7 14
Average waiting time = (0 + 3 + 7)/3 = 3.33
CPU Scheduling Algorithms 13
14. Shortest Job First
CONT…
Non-Preemptive SJF
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
The Gantt Chart for SJF (non-preemptive) is:
P1 P3 P2 P4
0 2 4 5 7 8 12 16
Average waiting time = (0 + 6 + 3 + 7)/4 = 4
CPU Scheduling Algorithms 14
15. Shortest Job First
CONT…
Preemptive SJF
Process Arrival Time Burst Time
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
The Gantt Chart for SJF (preemptive) is:
P1 P2 P3 P2 P4 P1
0 2 4 5 7 11 16
Average waiting time = (9 + 1 + 0 +2)/4 = 3
CPU Scheduling Algorithms 15
16. Shortest Job First
CONT…
Associate with each process the length of its next CPU
burst.
Use these lengths to schedule the process with the
shortest time.
Two schemes:
o Non-Preemptive: once CPU given to the process it
cannot be preempted until completes its CPU burst.
o Preemptive: if a new process arrives with CPU burst
length less than remaining time of current executing
process, preempt. This scheme is know as the
Shortest-Remaining-Time-First (SRTF).
SJF is optimal: gives minimum average waiting time for a
given set of processes.
CPU Scheduling Algorithms 16
18. Priority
CONT…
A priority number (integer) is associated with each
process.
Lager the CPU burst lower the priority.
The CPU is allocated to the process with the highest
priority (smallest integer ≡ highest priority)
Starvation (Infinity blocking): low priority processes
may never execute.
Aging: as time progresses increase the priority of the
process.
CPU Scheduling Algorithms 18
19. Round Robin
Process Burst Time
P1 24
P2 3
P3 3
Quantum time = 4 milliseconds
The Gantt chart is:
P1 P2 P3 P1 P1 P1 P1 P1
0 4 7 10 14 18 22 26 30
Average waiting time = {[0+(10-4)]+4+7}/3 = 5.6
CPU Scheduling Algorithms 19
20. Round Robin
CONT…
Typically, higher average turnaround than SJF, but
better response
Each process gets a small unit of CPU time (time
quantum), usually 10-100 milliseconds. After this
time has elapsed, the process is preempted and
added to the end of the ready queue.
Performance
o q large ⇒ FCFS
o q small ⇒ q must be large with respect to
context switch, otherwise overhead is too high
CPU Scheduling Algorithms 20
21. Involvement of OS
Source Code (.c)
Compiler Conversion (.i , .o)
Executable (.exe)
Microsoft (load executable
Micro-kernel
Windows directly to memory)
Memory
CPU
Scheduling
Algorithms
Execut
e
CPU Scheduling Algorithms 21