Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
16 views53 pages

OSC - Unit 2 - Process Scheduling

This document covers process management in operating systems, detailing process concepts, scheduling algorithms, and thread management. It includes information on process states, control blocks, scheduling criteria, and various scheduling algorithms such as FCFS, SJF, and Round Robin. Additionally, it discusses thread libraries, cancellation, and the differences in thread management across different operating systems like Linux and Windows.

Uploaded by

thayyabid
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views53 pages

OSC - Unit 2 - Process Scheduling

This document covers process management in operating systems, detailing process concepts, scheduling algorithms, and thread management. It includes information on process states, control blocks, scheduling criteria, and various scheduling algorithms such as FCFS, SJF, and Round Robin. Additionally, it discusses thread libraries, cancellation, and the differences in thread management across different operating systems like Linux and Windows.

Uploaded by

thayyabid
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 53

OPERATING SYTEMS

UNIT 2 – PROCESS MANAGEMENT

TEXT BOOK:

Operating System Concepts – Abraham Silberchatz,


Peter B. Galvin, Greg Gagne 7th Edition, John Wiley

CHAPTERS – 3 to 5
INDEX
UNIT 2 PPT SLIDES
S.NO. TOPIC LECTURE NO. PPTSLIDES
1. Process concepts L9 L9.1 to L9.10
2. scheduling-criteria alg L10 L10.1 to L10.7
3. scheduling-criteria alg L11 L11.1 to L11.7
4. Algorithms evaluation L12 L12.1 to L12.6
5. Thread scheduling L13 L13.1 to L13.11
6. Case studies UNIX,LINUX L14 L14.1 to
L14.4
7. Windows L15 L15.1 to L15.2
8. REVISION L16
Process Concept
• Process
– An entity which represents the basic unit of work to be implemented in the system
– A program in execution and the execution of a process must generally progress in a sequential fashion

• System consists of a collection of processes


– OS processes (execute system code)
– User processes (execute user code)

• Modern systems support concurrent execution of processes and also threads

• An operating system executes a variety of programs:


– Batch system – jobs
– Time-shared systems – user programs or tasks

• To accomplish its task, a process needs some resources like CPU Time, Memory, Files, I/O devices etc.
– These resources are allocated to a process either when it is created or during run time

• OS is responsible for Process Management i.e. Creation / Deletion / Scheduling of processes (scheduling
is very important)
Process Concept (Contd..)
• A process includes
– Text section
• This includes the current activity represented by the value of
Program Counter and the contents of the processor's registers.
– Program Counter
• Specifies the address of the next instruction to be executed
• A program counter is a register in a computer processor that
contains the address (location) of the instruction being
executed at the current time. As each instruction gets fetched,
the program counter increases its stored value by 1
– Process Stack
• For temporary data like function parameters, return addresses
and local variables
– Data section
• For Global and static variables
– Heap
• For dynamic allocation of memory during run time / execution
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
processor
– terminated: The process has finished execution
Diagram of Process State
Process Control Block (PCB)
Information / Data Structure associated with
each process
– Process state
– Program counter
– CPU registers
– CPU scheduling information
– Memory-management information
– Accounting information
– I/O status information
Process Control Block (PCB)
CPU Switch From Process to Process
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
• Processes migrate among these various
queues
Ready Queue And Various I/O Device Queues
Representation of Process Scheduling
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
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
Bounded-Buffer – Shared-Memory Solution
• Shared data
#define BUFFER_SIZE 10
typedef struct {
...
} item;

item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
• Solution is correct, but can only use
BUFFER_SIZE-1 elements
Bounded-Buffer – Producer
while (true) {
/* Produce an item */
while (((in = (in + 1) % BUFFER
SIZE count) == out)
; /* do nothing -- no free buffers
*/
buffer[in] = item;
in = (in + 1) % BUFFER SIZE;
}
Bounded Buffer – Consumer
while (true) {
while (in == out)
; // do nothing -- nothing to
consume

// remove an item from the buffer


item = buffer[out];
out = (out + 1) % BUFFER SIZE;
return item;
}
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)
Scheduling Algorithm Optimization
Criteria
• Max CPU utilization
• Max throughput
• Min turnaround time
• Min waiting time
• Min response time
First-Come, First-Served (FCFS) Scheduling

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
FCFS Scheduling (Cont)
Suppose that the processes arrive in the order
P2 , P3 , P1
• 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
P2 P3 P1

0 3 6 30
Shortest-Job-First (SJF)
Scheduling
• Associate with each process the length of
its next CPU burst. Use these lengths to
schedule the process with the shortest
time
• SJF is optimal – gives minimum average
waiting time for a given set of processes
– The difficulty is knowing the length of the next
CPU request
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

 n 1  t n  1    n .
1. t n actual length of n th CPU burst
2.  n 1 predicted value for the next CPU burst
3.  , 0  1
4. Define :
Examples of Exponential Averaging
  =0
 n+1 = n
– Recent history does not count
  =1
– n+1 =  tn
– Only the actual last CPU burst counts
• If we expand the formula, we get:
n+1 =  tn+(1 - ) tn -1 + …
+(1 -  )j  tn -j + …
+(1 -  )n +1 0

• Since both  and (1 - ) are less than or


equal to 1, each successive term has less
weight than its predecessor
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
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
Process Burst Time
P1 24
P2 3
P1 P2 P3 P1 P1 P1 P1 P1
P3 3
0 4 7 10 14 18 22 26 30
The Gantt chart is:
Typically, higher average turnaround than SJF, but better response
Time Quantum and Context Switch Time
Multilevel Queue Scheduling

Multilevel Feedback Queues NUMA and CPU Scheduling


Algorithm Evaluation
• Deterministic modeling – takes a particular
predetermined workload and defines the
performance of each algorithm for that
workload
• Queueing models
• Implementation
Evaluation of CPU schedulers by
Simulation
Dispatch Latency
Time-Slicing
Since the JVM Doesn’t Ensure Time-Slicing, the
yield() Method
May Be Used:

while (true) {
// perform CPU-intensive task
...
Thread.yield();
}

This Yields Control to Another Thread of Equal


Priority
Thread Priorities

Priority Comment
Thread.MIN_PRIORITY Minimum Thread Priority
Thread.MAX_PRIORITY Maximum Thread
Priority
Thread.NORM_PRIORITY Default Thread
Priority

Priorities May Be Set Using setPriority() method:


setPriority(Thread.NORM_PRIORITY + 2);
Solaris 2 Scheduling
User Threads
• Thread management done by user-level
threads library

• Three primary thread libraries:


– POSIX Pthreads
– Win32 threads
Kernel
– Java threads Threads
• Supported by the Kernel

• Examples
– Windows XP/2000
– Solaris
– Linux
– Tru64 UNIX
– Mac OS X
Thread Scheduling
• Distinction between user-level and kernel-level
threads
• Many-to-one and many-to-many models, thread
library schedules user-level threads to run on
LWP
– Known as process-contention scope (PCS) since
scheduling competition is within the process
Kernel thread scheduled onto available CPU is
system-contention scope (SCS) –
competition among all threads in system
Pthread Scheduling
• API allows specifying either PCS or
SCS during thread creation
– PTHREAD SCOPE PROCESS schedules
threads using PCS scheduling
– PTHREAD SCOPE SYSTEM schedules
threads using SCS scheduling.
Pthread Scheduling API
#include <pthread.h>
#include <stdio.h>
#define NUM THREADS 5
int main(int argc, char *argv[])
{
int i;
pthread t tid[NUM THREADS];
pthread attr t attr;
/* get the default attributes */
pthread attr init(&attr);
/* set the scheduling algorithm to PROCESS or SYSTEM */
pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM);
/* set the scheduling policy - FIFO, RT, or OTHER */
pthread attr setschedpolicy(&attr, SCHED OTHER);
/* create the threads */
for (i = 0; i < NUM THREADS; i++)
pthread create(&tid[i],&attr,runner,NULL);
Pthread Scheduling API
/* now join on each thread */
for (i = 0; i < NUM THREADS; i++)
pthread join(tid[i], NULL);
}
/* Each thread will begin control in this
function */
void *runner(void *param)
{
printf("I am a thread\n");
pthread exit(0);
}
Multiple-Processor Scheduling
• CPU scheduling more complex when multiple CPUs are
available
• Homogeneous processors within a multiprocessor
• Asymmetric multiprocessing – only one processor accesses
the system data structures, alleviating the need for data sharing
• Symmetric multiprocessing (SMP) – each processor is self-
scheduling, all processes in common ready queue, or each has
its own private queue of ready processes
• Processor affinity – process has affinity for processor on
which it is currently running
– soft affinity
– hard affinity
Thread Libraries
• Thread library provides programmer with
API for creating and managing threads
• Two primary ways of implementing
– Library entirely in user space
– Kernel-level library supported by the OS
Pthreads
• May be provided either as user-level or
kernel-level
• A POSIX standard (IEEE 1003.1c) API for
thread creation and synchronization
• API specifies behavior of the thread library,
implementation is up to development of the
library
• Common in UNIX operating systems
(Solaris, Linux, Mac OS X)
Threading Issues
• Semantics of fork() and exec() system calls
• Thread cancellation of target thread
– Asynchronous or deferred
• Signal handling
• Thread pools
• Thread-specific data
• Scheduler activations
Thread Cancellation
• Terminating a thread before it has finished
• Two general approaches:
– Asynchronous cancellation terminates the
target thread immediately
– Deferred cancellation allows the target thread to
periodically check if it should be cancelled
Linux Threads
Linux refers to them as tasks rather than threads

Thread creation is done through clone() system call

clone() allows a child task to share the address space of the parent task (process)
Windows XP Threads
Local Procedure Calls in Windows XP
Windows XP Threads
• Implements the one-to-one mapping, kernel-level
• Each thread contains
– A thread id
– Register set
– Separate user and kernel stacks
– Private data storage area
• The register set, stacks, and private storage area are
known as the context of the threads
• The primary data structures of a thread include:
– ETHREAD (executive thread block)
– KTHREAD (kernel thread block)
– TEB (thread environment block)
Alternating Sequence of CPU And
I/O Bursts
Windows XP Priorities
Linux Scheduling
• Constant order O(1) scheduling time
• Two priority ranges: time-sharing and
real-time
• Real-time range from 0 to 99 and
nice value from 100 to 140
• (figure 5.15)
Examples of IPC Systems – Windows XP
• Message-passing centric via local procedure call (LPC) facility
– Only works between processes on the same system
– Uses ports (like mailboxes) to establish and maintain
communication channels
– Communication works as follows:
• The client opens a handle to the subsystem’s connection
port object
• The client sends a connection request
• The server creates two private communication ports and
returns the handle to one of them to the client
• The client and server use the corresponding port handle
to send messages or callbacks and to listen for replies
Priorities and Time-slice length

You might also like