Sunteți pe pagina 1din 63

Silberschatz and Galvin 1999 4.

1
Akash Rajak, KIET, Gzb (UNIT-2)
UNIT-II
Process Concept
Process Scheduling
Cooperating Processes
Threads
Inter-process Communication
CPU Scheduling
Scheduling Criteria, CPU scheduling criteria, Scheduling algorithms,
Multipleprocessor, scheduling, Real-time scheduling
Algorithm evaluation

Silberschatz and Galvin 1999 4.2
Akash Rajak, KIET, Gzb (UNIT-2)
Process Concept
An operating system executes a variety of programs:
Batch system jobs
Time-shared systems user programs or tasks
Textbook uses the terms job and process almost
interchangeably.
Process a program in execution; process execution must
progress in sequential fashion.
A process includes:
program counter
stack
data section
Silberschatz and Galvin 1999 4.3
Akash Rajak, KIET, Gzb (UNIT-2)
Process State
As a process executes, it changes state
new: The process is being created.
running: Instructions are being executed.
waiting: The process is waiting for some event to occur.
ready: The process is waiting to be assigned to a process.
terminated: The process has finished execution.
Silberschatz and Galvin 1999 4.4
Akash Rajak, KIET, Gzb (UNIT-2)
Diagram of Process State
Silberschatz and Galvin 1999 4.5
Akash Rajak, KIET, Gzb (UNIT-2)
Process Control Block (PCB)
Information associated with each process.
Process state
Program counter
CPU registers
CPU scheduling information
Memory-management information
Accounting information
I/O status information

Silberschatz and Galvin 1999 4.6
Akash Rajak, KIET, Gzb (UNIT-2)
Process Control Block (PCB)
Silberschatz and Galvin 1999 4.7
Akash Rajak, KIET, Gzb (UNIT-2)
CPU Switch From Process to Process
Silberschatz and Galvin 1999 4.8
Akash Rajak, KIET, Gzb (UNIT-2)
Process Scheduling Queues
Job queue set of all processes in the system.
Ready queue set of all processes residing in main memory,
ready and waiting to execute.
Device queues set of processes waiting for an I/O device.
Process migration between the various queues.
Silberschatz and Galvin 1999 4.9
Akash Rajak, KIET, Gzb (UNIT-2)
Ready Queue And Various I/O Device Queues
Silberschatz and Galvin 1999 4.10
Akash Rajak, KIET, Gzb (UNIT-2)
Representation of Process Scheduling
Silberschatz and Galvin 1999 4.11
Akash Rajak, KIET, Gzb (UNIT-2)
Schedulers
Long-term scheduler (or job scheduler) selects which
processes should be brought into the ready queue.
Short-term scheduler (or CPU scheduler) selects which
process should be executed next and allocates CPU.
Silberschatz and Galvin 1999 4.12
Akash Rajak, KIET, Gzb (UNIT-2)
Addition of Medium Term Scheduling
Silberschatz and Galvin 1999 4.13
Akash Rajak, KIET, Gzb (UNIT-2)
Schedulers (Cont.)
Short-term scheduler is invoked very frequently (milliseconds)
(must be fast).
Long-term scheduler is invoked very infrequently (seconds,
minutes) (may be slow).
The long-term scheduler controls the degree of
multiprogramming.
Processes can be described as either:
I/O-bound process spends more time doing I/O than
computations, many short CPU bursts.
CPU-bound process spends more time doing
computations; few very long CPU bursts.
Silberschatz and Galvin 1999 4.14
Akash Rajak, KIET, Gzb (UNIT-2)
Context Switch
When CPU switches to another process, the system must save
the state of the old process and load the saved state for the new
process.
Context-switch time is overhead; the system does no useful work
while switching.
Time dependent on hardware support.
Silberschatz and Galvin 1999 4.15
Akash Rajak, KIET, Gzb (UNIT-2)
Process Creation
Parent process creates children processes, which, in turn create
other processes, forming a tree of processes.
Resource sharing
Parent and children share all resources.
Children share subset of parents resources.
Parent and child share no resources.
Execution
Parent and children execute concurrently.
Parent waits until children terminate.

Silberschatz and Galvin 1999 4.16
Akash Rajak, KIET, Gzb (UNIT-2)
Process Creation (Cont.)
Address space
Child duplicate of parent.
Child has a program loaded into it.
UNIX examples
fork system call creates new process
execve system call used after a fork to replace the process
memory space with a new program.
Silberschatz and Galvin 1999 4.17
Akash Rajak, KIET, Gzb (UNIT-2)
A Tree of Processes On A Typical UNIX System
Silberschatz and Galvin 1999 4.18
Akash Rajak, KIET, Gzb (UNIT-2)
Process Termination
Process executes last statement and asks the operating system
to decide it (exit).
Output data from child to parent (via wait).
Process resources are deallocated by operating system.
Parent may terminate execution of children processes (abort).
Child has exceeded allocated resources.
Task assigned to child is no longer required.
Parent is exiting.
Operating system does not allow child to continue if its
parent terminates.
Cascading termination.
Silberschatz and Galvin 1999 4.19
Akash Rajak, KIET, Gzb (UNIT-2)
Cooperating Processes
Independent process cannot affect or be affected by the
execution of another process.
Cooperating process can affect or be affected by the execution of
another process
Advantages of process cooperation
Information sharing
Computation speed-up
Modularity
Convenience
Silberschatz and Galvin 1999 4.20
Akash Rajak, KIET, Gzb (UNIT-2)
Producer-Consumer Problem
Paradigm for cooperating processes, producer process produces
information that is consumed by a consumer process.
unbounded-buffer places no practical limit on the size of the
buffer.
bounded-buffer assumes that there is a fixed buffer size.
Silberschatz and Galvin 1999 4.21
Akash Rajak, KIET, Gzb (UNIT-2)
Bounded-Buffer Shared-Memory Solution
Shared data
var n;
type item = ;
var buffer. array [0..n1] of item;
in, out: 0..n1;
Producer process
repeat

produce an item in nextp

while in+1 mod n = out do no-op;
buffer [in] :=nextp;
in :=in+1 mod n;
until false;
Silberschatz and Galvin 1999 4.22
Akash Rajak, KIET, Gzb (UNIT-2)
Bounded-Buffer (Cont.)
Consumer process

repeat
while in = out do no-op;
nextc := buffer [out];
out := out+1 mod n;

consume the item in nextc

until false;
Solution is correct, but can only fill up n1 buffer.

Silberschatz and Galvin 1999 4.23
Akash Rajak, KIET, Gzb (UNIT-2)
Threads
A thread (or lightweight process) is a basic unit of CPU utilization;
it consists of:
program counter
register set
stack space
A thread shares with its peer threads its:
code section
data section
operating-system resources
collectively know as a task.
A traditional or heavyweight process is equal to a task with one
thread
Silberschatz and Galvin 1999 4.24
Akash Rajak, KIET, Gzb (UNIT-2)
Threads (Cont.)
In a multiple threaded task, while one server thread is blocked
and waiting, a second thread in the same task can run.
Cooperation of multiple threads in same job confers higher
throughput and improved performance.
Applications that require sharing a common buffer (i.e.,
producer-consumer) benefit from thread utilization.
Threads provide a mechanism that allows sequential processes
to make blocking system calls while also achieving parallelism.
Kernel-supported threads (Mach and OS/2).
User-level threads; supported above the kernel, via a set of
library calls at the user level (Project Andrew from CMU).
Hybrid approach implements both user-level and kernel-
supported threads (Solaris 2).
Silberschatz and Galvin 1999 4.25
Akash Rajak, KIET, Gzb (UNIT-2)
Multiple Threads within a Task
Silberschatz and Galvin 1999 4.26
Akash Rajak, KIET, Gzb (UNIT-2)
Threads Support in Solaris 2
Solaris 2 is a version of UNIX with support for threads at the
kernel and user levels, symmetric multiprocessing, and
real-time scheduling.
LWP intermediate level between user-level threads and
kernel-level threads.
Resource needs of thread types:
Kernel thread: small data structure and a stack; thread
switching does not require changing memory access
information relatively fast.
LWP: PCB with register data, accounting and memory
information,; switching between LWPs is relatively slow.
User-level thread: only ned stack and program counter;
no kernel involvement means fast switching. Kernel only
sees the LWPs that support user-level threads.
Silberschatz and Galvin 1999 4.27
Akash Rajak, KIET, Gzb (UNIT-2)
Solaris 2 Threads
Silberschatz and Galvin 1999 4.28
Akash Rajak, KIET, Gzb (UNIT-2)
Interprocess Communication (IPC)
Mechanism for processes to communicate and to synchronize
their actions.
Message system processes communicate with each other
without resorting to shared variables.
IPC facility provides two operations:
send(message) message size fixed or variable
receive(message)
If P and Q wish to communicate, they need to:
establish a communication link between them
exchange messages via send/receive
Implementation of communication link
physical (e.g., shared memory, hardware bus)
logical (e.g., logical properties)
Silberschatz and Galvin 1999 4.29
Akash Rajak, KIET, Gzb (UNIT-2)
Implementation Questions
How are links established?
Can a link be associated with more than two processes?
How many links can there be between every pair of
communicating processes?
What is the capacity of a link?
Is the size of a message that the link can accommodate fixed or
variable?
Is a link unidirectional or bi-directional?
Silberschatz and Galvin 1999 4.30
Akash Rajak, KIET, Gzb (UNIT-2)
Direct Communication
Processes must name each other explicitly:
send (P, message) send a message to process P
receive(Q, message) receive a message from process Q
Properties of communication link
Links are established automatically.
A link is associated with exactly one pair of communicating
processes.
Between each pair there exists exactly one link.
The link may be unidirectional, but is usually bi-directional.
Silberschatz and Galvin 1999 4.31
Akash Rajak, KIET, Gzb (UNIT-2)
Indirect Communication
Messages are directed and received from mailboxes (also
referred to as ports).
Each mailbox has a unique id.
Processes can communicate only if they share a mailbox.
Properties of communication link
Link established only if processes share a common mailbox
A link may be associated with many processes.
Each pair of processes may share several communication
links.
Link may be unidirectional or bi-directional.
Operations
create a new mailbox
send and receive messages through mailbox
destroy a mailbox
Silberschatz and Galvin 1999 4.32
Akash Rajak, KIET, Gzb (UNIT-2)
Indirect Communication (Continued)
Mailbox sharing
P
1
, P
2
, and P
3
share mailbox A.
P
1
, sends; P
2
and P
3
receive.
Who gets the message?
Solutions
Allow a link to be associated with at most two processes.
Allow only one process at a time to execute a receive
operation.
Allow the system to select arbitrarily the receiver. Sender is
notified who the receiver was.
Silberschatz and Galvin 1999 4.33
Akash Rajak, KIET, Gzb (UNIT-2)
Buffering
Queue of messages attached to the link; implemented in one of
three ways.
1. Zero capacity 0 messages
Sender must wait for receiver (rendezvous).
2. Bounded capacity finite length of n messages
Sender must wait if link full.
3. Unbounded capacity infinite length
Sender never waits.
Silberschatz and Galvin 1999 4.34
Akash Rajak, KIET, Gzb (UNIT-2)
Exception Conditions Error Recovery
Process terminates
Lost messages
Scrambled Messages
Silberschatz and Galvin 1999 4.35
Akash Rajak, KIET, Gzb (UNIT-2)
CPU Scheduling: Basic Concepts
Maximum CPU utilization obtained with multiprogramming
CPUI/O Burst Cycle Process execution consists of a cycle of
CPU execution and I/O wait.
CPU burst distribution
Silberschatz and Galvin 1999 4.36
Akash Rajak, KIET, Gzb (UNIT-2)
Alternating Sequence of CPU And I/O Bursts
Silberschatz and Galvin 1999 4.37
Akash Rajak, KIET, Gzb (UNIT-2)
Histogram of CPU-burst Times
Silberschatz and Galvin 1999 4.38
Akash Rajak, KIET, Gzb (UNIT-2)
CPU Scheduler
Selects from among the processes in memory that are ready to
execute, and allocates the CPU to one of them.
CPU scheduling decisions may take place when a process:
1. Switches from running to waiting state.
2. Switches from running to ready state.
3. Switches from waiting to ready.
4. Terminates.
Scheduling under 1 and 4 is nonpreemptive.
All other scheduling is preemptive.
Silberschatz and Galvin 1999 4.39
Akash Rajak, KIET, Gzb (UNIT-2)
Dispatcher
Dispatcher module gives control of the CPU to the process
selected by the short-term scheduler; this involves:
switching context
switching to user mode
jumping to the proper location in the user program to restart
that program
Dispatch latency time it takes for the dispatcher to stop one
process and start another running.
Silberschatz and Galvin 1999 4.40
Akash Rajak, KIET, Gzb (UNIT-2)
Scheduling Criteria
CPU utilization keep the CPU as busy as possible
Throughput # of processes that complete their execution per
time unit
Turnaround time amount of time to execute a particular process
Waiting time amount of time a process has been waiting in the
ready queue
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)
Silberschatz and Galvin 1999 4.41
Akash Rajak, KIET, Gzb (UNIT-2)
Optimization Criteria
Max CPU utilization
Max throughput
Min turnaround time
Min waiting time
Min response time
Silberschatz and Galvin 1999 4.42
Akash Rajak, KIET, Gzb (UNIT-2)
First-Come, First-Served (FCFS) Scheduling
Example: Process Burst Time
P
1
24
P
2
3
P
3
3

Suppose that the processes arrive in the order: P
1
, P
2
, P
3
The Gantt Chart for the schedule is:





Waiting time for P
1
= 0; P
2
= 24; P
3
= 27
Average waiting time: (0 + 24 + 27)/3 = 17
P
1
P
2
P
3

24 27 30 0
Silberschatz and Galvin 1999 4.43
Akash Rajak, KIET, Gzb (UNIT-2)
FCFS Scheduling (Cont.)
Suppose that the processes arrive in the order
P
2
, P
3
, P
1
.
The Gantt chart for the schedule is:




Waiting time for P
1
= 6;

P
2
= 0
;
P
3
= 3
Average waiting time: (6 + 0 + 3)/3 = 3
Much better than previous case.
Convoy effect short process behind long process
P
1
P
3
P
2

6 3 30 0
Silberschatz and Galvin 1999 4.44
Akash Rajak, KIET, Gzb (UNIT-2)
Shortest-Job-First (SJR) Scheduling
Associate with each process the length of its next CPU burst.
Use these lengths to schedule the process with the shortest time.
Two schemes:
nonpreemptive once CPU given to the process it cannot
be preempted until completes its CPU burst.
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.
Silberschatz and Galvin 1999 4.45
Akash Rajak, KIET, Gzb (UNIT-2)
Process Arrival Time Burst Time
P
1
0.0 7
P
2
2.0 4
P
3
4.0 1
P
4
5.0 4
SJF (non-preemptive)




Average waiting time = (0 + 6 + 3 + 7)/4 - 4

Example of Non-Preemptive SJF
P
1
P
3
P
2

7 3 16 0
P
4

8 12
Silberschatz and Galvin 1999 4.46
Akash Rajak, KIET, Gzb (UNIT-2)
Example of Preemptive SJF
Process Arrival Time Burst Time
P
1
0.0 7
P
2
2.0 4
P
3
4.0 1
P
4
5.0 4
SJF (preemptive)




Average waiting time = (9 + 1 + 0 +2)/4 - 3

P
1
P
3
P
2

4 2
11 0
P
4

5 7
P
2
P
1

16
Silberschatz and Galvin 1999 4.47
Akash Rajak, KIET, Gzb (UNIT-2)
Determining Length of Next CPU Burst
Can only estimate the length.
Can be done by using the length of previous CPU bursts, using
exponential averaging.


: Define 4.
1 0 , 3.
burst CPU next the for value predicted 2.
burst CPU of lenght actual 1.
s s
=
=
+
o o
t
1 n
th
n
n t
( ) . t
n n n
t o o t + =
=
1
1

Silberschatz and Galvin 1999 4.48
Akash Rajak, KIET, Gzb (UNIT-2)
Examples of Exponential Averaging
o =0
t
n+1
= t
n
Recent history does not count.
o =1
t
n+1
= t
n
Only the actual last CPU burst counts.
If we expand the formula, we get:
t
n+1
= o t
n
+(1 - o) o t
n
-1 +
+(1 - o )
j
o t
n
-1 +
+(1 - o )
n=1
t
n
t
0
Since both o and (1 - o) are less than or equal to 1, each
successive term has less weight than its predecessor.
Silberschatz and Galvin 1999 4.49
Akash Rajak, KIET, Gzb (UNIT-2)
Priority Scheduling
A priority number (integer) is associated with each process
The CPU is allocated to the process with the highest priority
(smallest integer highest priority).
Preemptive
nonpreemptive
SJF is a priority scheduling where priority is the predicted next
CPU burst time.
Problem Starvation low priority processes may never
execute.
Solution Aging as time progresses increase the priority of the
process.
Silberschatz and Galvin 1999 4.50
Akash Rajak, KIET, Gzb (UNIT-2)
Round Robin (RR)
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.
If there are n processes in the ready queue and the time
quantum is q, then each process gets 1/n of the CPU time in
chunks of at most q time units at once. No process waits more
than (n-1)q time units.
Performance
q large FIFO
q small q must be large with respect to context switch,
otherwise overhead is too high.
Silberschatz and Galvin 1999 4.51
Akash Rajak, KIET, Gzb (UNIT-2)
Example: RR with Time Quantum = 20
Process Burst Time
P
1
53
P
2
17
P
3
68
P
4
24
The Gantt chart is:






Typically, higher average turnaround than SJF, but better
response.
P
1
P
2
P
3
P
4
P
1
P
3
P
4
P
1
P
3
P
3
0 20 37 57 77 97 117 121 134 154 162
Silberschatz and Galvin 1999 4.52
Akash Rajak, KIET, Gzb (UNIT-2)
How a Smaller Time Quantum Increases Context Switches
Silberschatz and Galvin 1999 4.53
Akash Rajak, KIET, Gzb (UNIT-2)
Turnaround Time Varies With The Time Quantum
Silberschatz and Galvin 1999 4.54
Akash Rajak, KIET, Gzb (UNIT-2)
Multilevel Queue
Ready queue is partitioned into separate queues:
foreground (interactive)
background (batch)
Each queue has its own scheduling algorithm,
foreground RR
background FCFS
Scheduling must be done between the queues.
Fixed priority scheduling; i.e., serve all from foreground then
from background. Possibility of starvation.
Time slice each queue gets a certain amount of CPU time
which it can schedule amongst its processes; i.e.,
80% to foreground in RR
20% to background in FCFS
Silberschatz and Galvin 1999 4.55
Akash Rajak, KIET, Gzb (UNIT-2)
Multilevel Queue Scheduling
Silberschatz and Galvin 1999 4.56
Akash Rajak, KIET, Gzb (UNIT-2)
Multilevel Feedback Queue
A process can move between the various queues; aging can be
implemented this way.
Multilevel-feedback-queue scheduler defined by the following
parameters:
number of queues
scheduling algorithms for each queue
method used to determine when to upgrade a process
method used to determine when to demote a process
method used to determine which queue a process will enter
when that process needs service
Silberschatz and Galvin 1999 4.57
Akash Rajak, KIET, Gzb (UNIT-2)
Multilevel Feedback Queues
Silberschatz and Galvin 1999 4.58
Akash Rajak, KIET, Gzb (UNIT-2)
Example of Multilevel Feedback Queue
Three queues:
Q
0
time quantum 8 milliseconds
Q
1
time quantum 16 milliseconds
Q
2
FCFS
Scheduling
A new job enters queue Q
0
which is served FCFS. When it
gains CPU, job receives 8 milliseconds. If it does not finish
in 8 milliseconds, job is moved to queue Q
1
.
At Q
1
job is again served FCFS and receives 16 additional
milliseconds. If it still does not complete, it is preempted
and moved to queue Q
2
.
Silberschatz and Galvin 1999 4.59
Akash Rajak, KIET, Gzb (UNIT-2)
Multiple-Processor Scheduling
CPU scheduling more complex when multiple CPUs are
available.
Homogeneous processors within a multiprocessor.
Load sharing
Asymmetric multiprocessing only one processor accesses the
system data structures, alleviating the need for data sharing.
Silberschatz and Galvin 1999 4.60
Akash Rajak, KIET, Gzb (UNIT-2)
Real-Time Scheduling
Hard real-time systems required to complete a critical task
within a guaranteed amount of time.
Soft real-time computing requires that critical processes receive
priority over less fortunate ones.
Silberschatz and Galvin 1999 4.61
Akash Rajak, KIET, Gzb (UNIT-2)
Dispatch Latency
Silberschatz and Galvin 1999 4.62
Akash Rajak, KIET, Gzb (UNIT-2)
Algorithm Evaluation
Deterministic modeling takes a particular predetermined
workload and defines the performance of each algorithm for that
workload.
Queuing models
Implementation
Silberschatz and Galvin 1999 4.63
Akash Rajak, KIET, Gzb (UNIT-2)
Evaluation of CPU Schedulers by Simulation