Anda di halaman 1dari 22

Schedulin

g
Algorithm
s

Group No. 2 1
Overview
Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Implementation in C++
Demonstration
Involvement of Operating System

CPU Scheduling Algorithms 2


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


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


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


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


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


Scheduling Algorithms
First Come, First Served
Shortest Job First
Priority
Round Robin

CPU Scheduling Algorithms 8


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
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
CPU Scheduling Algorithms 10
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
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
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
CONT
Shortest Job First
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

CPU Scheduling Algorithms 14

CONT
Shortest Job First
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


CONT
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.
CPU Scheduling Algorithms 16
Priority
Process Burst Time Priority
P1 10 3
P2 1 1
P3 2 4
P4 1 5
P5 5 2

Gantt Chart
P2 P5 P1 P3 P4

0 1 6 16 18 19

Average waiting time = (6 + 0 + 16 + 18 +


1)/5 = 8.2 CPU Scheduling Algorithms 17
CONT
Priority
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


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


CONT
Round Robin
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


Involvement of OS
Source Code (.c)

Compiler Conversion (.i , .o)

Executable (.exe)

Microsoft Micro- (load executable


Windows kernel directly to memory)

Memory

CP
U Scheduling
Algorithms
Execut
e
CPU Scheduling Algorithms 21
CPU
Schedulin
g
Algorithm
s
Group No.
2

Group No. 2 22

Anda mungkin juga menyukai