Professional Documents
Culture Documents
R22 Unit - II Final Material OS
R22 Unit - II Final Material OS
R22 Unit - II Final Material OS
Process Concept
Process Scheduling
Operations on Processes
Inter-process Communication
Process Concept
queues,
• process creation
• process termination
Process Creation
Shared data
#define BUFFER_SIZE 10
typedef struct {
...
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
while (true)
{
/* produce an item in next produced */
while (((in + 1) % BUFFER_SIZE) == out); /* do nothing */
buffer[in] = next_produced;
in = (in + 1) % BUFFER_SIZE;
}
Bounded Buffer – Consumer
item next_consumed;
while (true)
{
while (in == out)
; /* do nothing */
next_consumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
communicate
memory.
Interprocess Communication – Message Passing
Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Thread Scheduling
Multiple-Processor Scheduling
Real-Time CPU Scheduling
Operating Systems Examples
Algorithm Evaluation
Basic Concepts
P0 0 10
P1 5 1
P2 2 3
P3 3 4
P4 1 5
FCFS – With Arrival Time
P0 P4 P2 P3 P1
0 10 15 18 22 23
FCFS – With Arrival Time
Process ID Arrival Burst Finishing Waiting TAT
Time Time Time Time
P0 0 10 10 0 10
P1 5 1 23 17 18
P2 2 3 18 13 16
P3 3 4 22 15 19
P4 1 5 15 9 14
Problem Statement - SJF
Process ID Arrival Time Burst Time
P0 0 10
P1 5 1
P2 2 3
P3 3 4
P4 1 5
SJF – With Arrival Time – Without
Preemptive
P0 P1 P2 P3 P4
0 10 11 14 18 23
SJF – With Arrival Time Without
Preemptive
Process ID Arrival Burst Finishing Waiting TAT
Time Time Time Time
P0 0 10 10 ? ?
P1 5 1 11 ? ?
P2 2 3 14 ? ?
P3 3 4 18 ? ?
P4 1 5 23 ? ?
Problem Statement - SJF
Process ID Arrival Time Burst Time
P0 0 10
P1 5 1
P2 2 3
P3 3 4
P4 1 5
SJF – With Arrival Time – With
Preemptive
P0 P4 P2 P1 P4 P3 P0
0 1 2 5 6 10 14 23
SJF – With Arrival Time-With Preemptive
Process ID Arrival Burst Finishing Waiting TAT
Time Time Time Time
P0 0 10 (9) 23 13 23
P1 5 1 6 0 1
P2 2 3 5 0 3
P3 3 4 14 7 11
P4 1 5(4) 10 4 9
Problem Statement - Priority
Process ID Arrival Time Burst Time Priority
P0 0 10 4
P1 5 1 5
P2 2 3 2
P3 3 4 1
P4 1 5 3
P0 P3 P2 P4 P1
0 10 14 17 22 23
Priority – With Arrival Time – Without
Preemptive
Process ID Arrival Burst Priority Finishing Waiting TAT
Time Time Time Time
P0 0 10 4 10 ? ?
P1 5 1 5 23 ? ?
P2 2 3 2 17 ? ?
P3 3 4 1 14 ? ?
P4 1 5 3 22 ? ?
Problem Statement - Priority
Process ID Arrival Time Burst Time Priority
P0 0 10 4
P1 5 1 5
P2 2 3 2
P3 3 4 1
P4 1 5 3
P0 P4 P2 P3 P2 P4 P0 P1
0 1 2 3 7 9 13 22 23
Priority– With Arrival Time-With
Preemptive
Process Arrival Burst Priority Finishing Waiting TAT
ID Time Time Time Time
P0 0 10 4 22 12 22
P1 5 1 5 23 17 18
P2 2 3 2 9 4 7
P3 3 4 1 7 0 4
P4 1 5 3 13 7 12
Problem Statement – Round Robin
Process ID Burst Time
P0 10
P1 5
P2 1
P3 20
P0 P1 P2 P3 P0 P1 P3 P0 P3
0 4 8 9 13 17 18 22 24 36
Ready Queue
Round Robin – Without Arrival Time
P0 10 24 ? ?
P1 5 18 ? ?
P2 1 9 ? ?
P3 20 38 ? ?
Problem Statement – Round Robin
Process ID Arrival Time Burst Time
P0 0 10
P1 5 1
P2 2 3
P3 3 4
P4 1 5
P0 P4 P3 P2 P0 P1 P4 P0
0 4 8 12 15 19 20 21 23
Ready Queue
Round Robin– With Arrival Time
Process ID Arrival Burst Time Finishing Waiting TAT
Time Time Time
P0 0 10 23 ? ?
P1 5 1 20 ? ?
P2 2 3 15 ? ?
P3 3 4 12 ? ?
P4 1 5 21 ? ?
Problem Statement – CPU Scheduling
Process ID Arrival Time Burst Time
P1 0 4
P2 2 7
P3 3 2
P4 3 2
P1 8 3
P2 3 1
P3 4 4
P4 2 2
P5 6 5
A 10 5 0
B 6 2 0
C 7 4 1
D 4 1 1
2
E 5 3
architectures
Multicore Programming
Multicore or multiprocessor systems putting pressure on
programmers, challenges include:
• Dividing activities
• Balance
• Data splitting
• Data dependency
• Testing and debugging
Parallelism implies a system can perform more than one task
simultaneously – DATA, TASK Parallelism
Concurrency supports more than one task making progress
• Single processor / core, scheduler providing concurrency
Concurrency vs. Parallelism
Concurrent execution on single-core system:
Many-to-One
One-to-One
Many-to-Many
Many-to-One
Background
Mutex Locks
Semaphores
Monitors
Background
Processes can execute concurrently
while (true) {
/* produce an item in next
produced */
while(counter == BUFFER_SIZE)
/* do nothing */
buffer[in] = next_produced;
in = (in + 1) % BUFFER_SIZE;
counter++;
}
Consumer
while (true) {
while (counter == 0)
; /* do nothing */
next_consumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
counter--;
/* consume the item in next
consumed */
}
Race Condition
counter++ could be implemented as
register1 = counter
register1 = register1 + 1
counter = register1
register2 = counter
register2 = register2 - 1
counter = register2
Race Condition
Consider this execution interleaving with “count = 5” initially:
3. Bounded Waiting - A bound must exist on the number of times that other
processes are allowed to enter their critical sections after a process has
made a request to enter its critical section and before that request is granted
do {
critical section
turn = j;
remainder section
} while (true);
Synchronization Hardware
Many systems provide hardware support for implementing the critical
section code.
All solutions below based on idea of locking
• Protecting critical regions via locks
Uniprocessors – could disable interrupts
• Currently running code would execute without preemption
• Generally too inefficient on multiprocessor systems
Operating systems using this not broadly scalable
Modern machines provide special atomic hardware instructions
Atomic = non-interruptible
• Either test memory word and set value
• Or swap contents of two memory words
Solution to Critical-section Problem Using Locks
do {
acquire lock
critical section
release lock
remainder section
} while (TRUE);
test_and_set Instruction
Definition:
boolean test_and_set (boolean *target)
{
boolean rv = *target;
*target = TRUE;
return rv:
}
1. Executed atomically
2. Returns the original value of passed parameter
3. Set the new value of passed parameter to “TRUE”.
Solution using test_and_set()
if (*value == expected)
*value = new_value;
return temp;
}
1. Executed atomically
2. Returns the original value of passed parameter “value”
3. Set the variable “value” the value of the passed parameter
“new_value” but only if “value” ==“expected”. That is, the swap takes
place only under this condition.
Solution using compare_and_swap
1. Bounded-Buffer Problem
3. Dining-Philosophers Problem
Bounded-Buffer Problem
do {
...
/* produce an item in next_produced */
...
wait(empty);
wait(mutex);
...
/* add next produced to the buffer */
...
signal(mutex);
signal(full);
} while (true);
Bounded Buffer Problem
The structure of the consumer process
Do {
wait(full);
wait(mutex);
...
/* remove an item from buffer to next_consumed */
...
signal(mutex);
signal(empty);
...
/* consume the item in next consumed */
...
} while (true);
Readers-Writers Problem
A data set is shared among a number of concurrent processes
• Readers – only read the data set; they do not perform any updates
• Writers – can both read and write
Problem – allow multiple readers to read at the same time
• Only one single writer can access the shared data at the same time
Several variations of how readers and writers are considered – all
involve some form of priorities
Shared Data
• Data set
• Semaphore rw_mutex initialized to 1
• Semaphore mutex initialized to 1
• Integer read_count initialized to 0
Readers-Writers Problem
do {
wait(rw_mutex);
...
/* writing is performed */
...
signal(rw_mutex);
} while (true);
Readers-Writers Problem
The structure of a reader process
do {
wait(mutex);
read_count++;
if (read_count == 1)
wait(rw_mutex);
signal(mutex);
...
/* reading is performed */
...
wait(mutex);
read count--;
if (read_count == 0)
signal(rw_mutex);
signal(mutex);
} while (true);
Readers-Writers Problem Variations
// eat
signal (chopstick[i] );
signal (chopstick[ (i + 1) % 5] );
// think
} while (TRUE);
What is the problem with this algorithm?
Problems with Semaphores
condition x, y;
Two operations are allowed on a condition variable:
• x.wait() – a process that invokes the operation is
suspended until x.signal()
• x.signal() – resumes one of processes (if any) that
invoked x.wait()
If no x.wait() on the variable, then it has no
effect on the variable
Monitor with Condition Variables
Condition Variables Choices
If process P invokes x.signal(), and process Q is suspended in x.wait(),
what should happen next?
Both Q and P cannot execute in paralel. If Q is resumed, then P
must wait
Options include
Signal and wait – P waits until Q either leaves the monitor or it
waits for another condition
Signal and continue – Q waits until P either leaves the monitor or
it waits for another condition
Both have pros and cons – language implementer can decide
Monitors implemented in Concurrent Pascal compromise
P executing signal immediately leaves the monitor, Q is
resumed
Implemented in other languages including Mesa, C#, Java
Monitor Solution to Dining Philosophers
monitor DiningPhilosophers
{
enum { THINKING; HUNGRY, EATING) state [5] ;
condition self [5];
initialization_code() {
for (int i = 0; i < 5; i++)
state[i] = THINKING;
}
}
Solution to Dining Philosophers
DiningPhilosophers.pickup(i);
EAT
DiningPhilosophers.putdown(i);
Variables
wait(mutex);
…
body of F;
…
if (next_count > 0)
signal(next)
else
signal(mutex);
if (x_count > 0) {
next_count++;
signal(x_sem);
wait(next);
next_count--;
}
Resuming Processes within a Monitor
R.acquire(t);
...
access the resource;
...
R.release;
P1 P2 P3
0 24 27 30
P2 P3 P1
0 3 6 30
P1 P2 P4 P1 P3
0 1 5 10 17 26
P2 P5 P1 P3 P4
0 1 6 16 18 19
Waiting Time for P1 = 6; P2 = 0; P3 = 16; P4 = 18; P5 = 1
Average waiting time =(6+0+16+18+1)/5= 8.2 msec
Problem
Consider the following set of processes, with the length of the CPU burst given in
milliseconds:
Process Burst Time Priority
--------- ------------- -----------
P1 2 2
P2 1 1
P3 8 4
P4 4 2
P5 5 3
The processes are assumed to have arrived in the order P1, P2, P3, P4, P5, all at time 0.
a. Draw four Gantt charts that illustrate the execution of these processes using the
following scheduling algorithms: FCFS, SJF, priority, and RR (quantum = 2).
b. What is the turnaround time of each process for each of the scheduling algorithms in
part a?
c. What is the waiting time of each process for each of these scheduling algorithms?
First Come First Serve (FCFS)
0 2 3 11 15 20
Process WT TT
P1 0 2
p2 2 3
p3 3 11
p4 11 15
p5 15 20
0 1 3 7 12 20
Process WT TT
P1 1 3
p2 0 1
p3 12 20
p4 3 7
p5 7 12
0 1 3 7 12 20
Process WT TT
P1 1 3
p2 0 1
p3 12 20
p4 3 7
p5 7 12
p1 p2 p3 p4 p5 p3 p4 p5 p3 p5 p3
0 2 3 5 7 9 11 13 15 17 18 20
Process WT TT
P1 0 2
p2 2 3
p3 12 20
p4 9 13
p5 13 18
0 8 17 21 26 28
Process WT TT
P0 0 8
p1 14 18 WT = WT-AT
p2 17 22
p3 6 15
p4 21 23
P0 p4 p1 p2 p3
0 8 10 14 19 28
Process WT TT
P0 0 8
p1 7 11 WT = WT-AT
p2 10 15
p3 17 26
p4 3 5
P0 p1 P4 P0 P2 p3
0 3 7 9 14 19 28
Process WT TT
P0 6 14
p1 0 4 WT = WT-AT
p2 10 15
p3 17 26
p4 2 4
P0 P2 P3 P4 P1
0 8 13 22 24 28
Process WT TT
P0 0 8
p1 21 25 WT = WT-AT
p2 4 9
p3 11 20
p4 17 19
P0 P2 P3 P4 P1
0 8 13 22 24 28
Process WT TT
P0 0 8
p1 21 25 WT = WT-AT
p2 4 9
p3 11 20
p4 17 19
P0 P3 P1 P2 P4 p0 p3 p2 p3
0 4 8 12 16 18 22 26 27 28
Process WT TT
P0 14 22
p1 5 9 WT = WT-AT
p2 18 23
p3 17 26
p4 11 13
RR is 23ms: