cpu scheduling algorithms
DESCRIPTION
A presentation on implementing CPU Scheduling Algorithms in C++TRANSCRIPT
CPU Schedulin
gAlgorithm
s
1Group No. 2
Overview
Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Implementation in C++
Demonstration
Involvement of Operating System
2CPU Scheduling Algorithms
CPU Scheduling Algorithms 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.
4
CPU Scheduler CPU scheduling decisions may take
place when a process:o 1. Switches from running to waiting
stateo 2. Switches from running to ready
stateo 3. Switches from waiting to readyo 4. Terminates
Scheduling under 1 and 4 is non preemptive.
All other scheduling is preemptive.
CPU Scheduling Algorithms
5
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
CONT…
CPU Scheduling Algorithms
CPU Scheduler
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
7
CONT…
CPU Scheduling Algorithms
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
Scheduling Criteria
8
Scheduling Algorithms
First Come, First Served
Shortest Job First
Priority
Round Robin
CPU Scheduling Algorithms
9CPU Scheduling Algorithms
Implementation in C++
Class: cpuschedule Attributes:
o n – number of processeso Bu[ ] – Array to store Burst
Timeo A[ ] – Array to store Arrival
Timeo Wt[ ] – Array to store Waiting
Timeo Twt – Total Waiting Timeo Awt – Average Waiting Time
10CPU Scheduling Algorithms
Implementation in C++
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 Algorithmo RoundRobin() – Round Robin
Algorithm
CONT…
Operations:
11
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:
Waiting time for P1 = 0; P2 = 24; P3 = 27 Average waiting time: (0 + 24 + 27)/3 = 17
CPU Scheduling Algorithms
First Come, First Served
P1 P2 P3
24 27 300
12
Suppose that the processes arrive in the order : P2 , P3 , P1 (P1:24,P2:3,P3:3)
The Gantt chart for the schedule is:
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
CONT…
CPU Scheduling Algorithms
First Come First Served
P1P3P2
63 300
13CPU Scheduling Algorithms
Shortest Job FirstNormal SJF
Process Burst Time P1 7
P2 3
P3 4
The Gantt Chart for SJF (Normal) is:
Average waiting time = (0 + 3 + 7)/3 = 3.33
P2 P3 P1
730 14
14
Process Arrival Time Burst
TimeP1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4 The Gantt Chart for SJF (non-preemptive)
is:
Average waiting time = (0 + 6 + 3 + 7)/4 = 4
Non-Preemptive SJF
CPU Scheduling Algorithms
Shortest Job FirstCONT…
P1 P3 P2
72 160
P4
8 124 5
15
CONT…
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:
Average waiting time = (9 + 1 + 0 +2)/4 = 3
P1 P3P2
42 110
P4
5 7
P2 P1
16
CPU Scheduling Algorithms
Preemptive SJF
Shortest Job First
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.
Shortest Job FirstCONT…
CPU Scheduling Algorithms 16
17CPU Scheduling Algorithms
PriorityProcess Burst Time Priority P1 10 3 P2 1 1
P3 2 4
P4 1 5 P5 5 2
Gantt Chart
Average waiting time = (6 + 0 + 16 + 18 + 1)/5 = 8.2
P2 P1P5
61 160
P3
18
P4
19
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.
PriorityCONT…
CPU Scheduling Algorithms 18
19CPU Scheduling Algorithms
Round RobinProcess Burst Time
P1 24P2 3P3 3
Quantum time = 4 millisecondsThe Gantt chart is:
Average waiting time = {[0+(10-4)]+4+7}/3 = 5.6
P1 P2 P3 P1 P1 P1 P1 P1
0 4 7 10 14 18 22 26 30
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.
Performanceoq large FCFSoq small q must be large with
respect to context switch, otherwise overhead is too high
CPU Scheduling Algorithms 20
Round RobinCONT…
CPU Scheduling Algorithms 21
Involvement of OSSource Code (.c)
Conversion
Executable (.exe)
Compiler
MicrosoftWindows
Micro-kernel
(.i , .o)
Memory
CPU
(load executable directly to memory)
Execute
Scheduling Algorithms
CPU Schedulin
gAlgorithm
sGroup No. 2 22
Group No. 2