process synchronization in operating system
TRANSCRIPT
Process Synchronization
Presented by Dani MfungoHD/UDOM/408/T.2015
CS603:computer system programming
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Objective and Outcomes• What happened when Concurrent process shared data
• How to handle data inconsistency
• Investigate a critical section (CS) as a protocol for synchronization
• Algorithmic approach to CS implementation
• Investigate classical process-synchronization problems
• Producer – consumer problem
• Dining –philosopher problems
• Sleeping barber problems
• Cigarette smokers’ problem
• Investigation of tools used to solve process synchronization problems
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Lets consider to approach on handling concurrent problem
• LANGUAGE STRUCTURE FOR CONCURENCY PROCESS
• Fork – Join
• Cobegin - Coend
• How do they help on construct concurrency program??
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
TRANSLATE THE PRECENDENCE GRAPH TO
Cobegin –Coend structure
1. Begin2. S1;3. Cobegin4. S3;5. begin6. S2;7. Cobegin8. S4;9. S5;10. Coend11. S6;12. End13. Coend14. S7;15. End
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
TRANSLATE THE PRECENDENCE GRAPH TO
fork –join structure
1. Begin L1:S3 L2:S62. count = 3; goto L3 goto L33. S1;4. fork L15. S2;6. S4;7. fork L28. S5;9. L3: join count;10. S7;11. End
Task of Join Count statementCount = count -1If count
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Which structure is better than Other?
What is solution for a system which implement
Cobegin – Coend structure ???
• It is impossible to write Cobegin – Coend Here
• Fork –join is the best solution
?
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
PRODUCER / CONSUMER PROBLEM
What will happen if
• the rate to producer is greater than the rate to consume?
• Rate to producer < rate to consume?
• Rate to produce == to Rate to consume?
• Producer generate Items
• Consumer consume item
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
PRODUCER – CONSUMER PROBLEM-> SOLUTION
Two Situation
1. Unbounded Buffer
2. Bounded buffer – limited size
When buffer is buffer is full,
• producer wait until items are consumed
• Rate of consumption > rate of production, result to empty buffer
Producer Consumer problems also known as Bounded Buffer Problem
Buffer (n)
Pc
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
bounded buffer problem
• Solution to this must satisfy the following condition
1. A producer must not overwrite a full buffer
2. Consumer must not consume an empty buffer
3. Consumer and buffer must access buffer in a mutually exclusive manner
• Variable count keep track number of item (N) in buffer
• For Producer
• If count = n -> buffer is full then producer go to sleep
• If count producer add item and increment count
• For Consumer
• If count = 0 - > buffer empty, consumer go to sleep
• If count consumer remove an item and decrement counter
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
bounded buffer problem
Is this simple algorithm free of problems??
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Producer Processcount + 1
A: R1 = count
B: R1 = R1+ 1
C: count = R1
Consumer Processcount -1
D: R2 = count
E: R2 = R2-1
F: count = R2
Bounded buffer weakness & race condition
Execution sequenceA R1 =7B R1=8D R2=7E R2=6C count=8F count=6
Also consider Transaction process
Race condition result a critical section problems
CRITICAL SECTION• A critical section of a data item d is a section of code which cannot be executed
concurrently with it self or with other critical section(s) for d.
• PROPERTIES OF CS IMPLEMENTATION
• CORRECTENESS (Mutual execution): at most one process may execute a CS at a given moment
• PROGRESS: A process will take a finite time interval to execute its critical section
• BOUNDED WAIT: Processes wait a finite time interval to enter their criticalsections.
• Absence of deadlock: Processes should not block each other indefinitely
Tuesday, May 2, 2023DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Approaches for Implementing Synchronization
• 3 Categories
1. Busy waiting
2. Hardware support
3. Operating System support
1. Dekker’s algorithm and Peterson’s algorithm are used for Busy waiting
2. Disable interrupt for accessing hardware facilities
3. Mechanism and tools such as semaphores and monitors are used by OS
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
CRITICAL SECTION• Entry section make decision if process should enter CS or not
• Shared Lock mechanism is used for CS
• Process enter a exit section after CS
ENTRY SECTION {
} EXIT SECTION {
CRITICAL SECTION
REMINDER SECTION }
Decision made, locking mechanism
Decision made, locking mechanism (unlock process)
Reminder section (other part of the code)
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Simple natural solution• Synchronization between two process P1 and P2
• Each process wait for the other to leave CS
• Implement shared variable process_turn
• While loop act as entry section and if variable = 1, P1 enter CS otherwise if 2, P2 enter CS
• P1 finish execution, initialize process_turn to 2, P2 execute also.
• What if P2 still in non critical section and don’t want to execute?
• This approach / protocol will satisfy ME but not Progress
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
• Only Mutual execution are granted
• Progress is not work in this situation
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Another Solution• The algorithm is that it does not save the state of the executing process
• To store the state of the process, two more variables, namely, state_flag_P1 and state_flag_P2
• If a process enters its critical section, it first sets this state flag to zero,and after exiting, it sets it to one
• It indicates that if a process is using its CS, then the other process must wait until the state flag becomes one,
• state flag variables eliminate the problem of progress
• Also this solution suffer from other problem as well – don’t guarantee Mutual execution since
• In the beginning, when no process is executing, both P1 and P2 will try to enter the critical section
consider diagram
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
3rd Solution • Setting state_flag_P1 and state_flag_P2 to 0 before the while loop
• This will solve the problem of mutual exclusion, but there still is one problem
• Suppose, at the moment P1 starts and executes its first statement as state_ flag_P1 = 0, P2 interrupts and gets the execution and executes its first statement, state_ flag_P2 = 0.
• In this situation, if P2 continues and executes its while loop, then it will not be able to proceed as it is waiting for P1 to set state_ flag_P1 to 1.
• Both the processes are waiting for each other, thereby causing deadlock in the system.
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
• Two result
• Dead lock and livelock
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Dekker’s Solution• This algorithm satisfies all the rules of the designed protocol.
• Both the processes will not try to enter simultaneously due to the variable, process_turn and will satisfy the mutual exclusion property.
• If P1 starts first and finds that state_ flag_P2 = 0, that is, P2 wants to enter the CS, it will allow P2, only when process_turn = 2.
• Otherwise, it will wait for state_ flag_P2 to be 1 so that P1 can enter its CS. If state_ flag_P2 = 1 initially, then P1 will skip the while loop and straightway enter the CS.
• In this way, there will not be any deadlock or livelock.
• Moreover, the chance is given to only those processes that are waiting in the queue to enter the CS.
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Dekker’s Solution
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Peterson’s Solution
• easier method compared to Dekker’s solution
var flag: array [0..1] of Boolean;
Turn : 0..1;
Pi Flag [i] =true;Turn =j;
While(flag[i] and turn=j) do skip;
CS
Flag [i] = false;
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
• process_turn takes the value zero for Process P1 and one for Process P2
• For the process flag, a Boolean array process_ flag[] is taken that consistsof two values, 0 for P1 and 1 for P2
• The variable process_turn maintains the mutual exclusion and process_ flag[] maintains the state of the process.
• Initially, both the processes make their flags true but to maintain the mutual exclusion, the processes before entering their critical sections allow other processes to run
• After exiting the critical section, the process makes its flag false so that theother process can start if it wants.
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Peterson’s Solution
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
SEMAPHORE• The semaphore is used to protect any resource such as global shared memory that needs to be
accessed and updated by many processes simultaneously
• Semaphore acts as a guard or lock on the resource
• Whenever a process needs to access the resource, it first needs to take permission from the semaphore
• The semaphore is implemented as an integer variable, say as S, and can be initialized with any positive integer values.
• The semaphore is accessed by only two indivisible operations known as wait and signal operations, denoted by P and V, respectively
• Whenever a process tries to enter the critical section, it needs to perform wait operation
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
SEMAPHORE cont…• Initially, the count of semaphore is 1
• It decrement to zero when process accesses the available critical area
• When a process exits the critical section, it performs the signal operation
• The semaphore whose value is either zero or one is known as binary semaphore
• semaphore that takes a value greater than one is known as counting semaphore.
• In binary semaphore,the CS locked by a process may be unlocked by any other process.
• However, in mutex, only the process that locks the CS can unlock it.
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
one problem in the implementation of such a semaphore• When a process does not get access to the
critical section, it loops continually waiting for it.
• This does not produce any result but consumes CPU cycles, thereby wasting the processor time
Mutex: semaphore mutex=1Pi: P(mutex)
CSV(mutex)
RS
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
SOLUTION OF CLASSIC SYNCHRONIZATION PROBLEMS USING SEMAPHORES
• PROCESS SYNCHRONIZATION
P(sync)Sj
SiV(sync)
Si Sj
Sync:semaphoreSync = 0;
S1S2...
SiSi+1Si+2
.
.
U1U2
.
.
.Uj
Uj+1Uj+2
.
.
V(s)
P(s)
Wait for Ui to finish
Sequence: J1 J2
Run concurrently
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
SOLUTION OF CLASSIC SYNCHRONIZATION PROBLEMS USING SEMAPHORES
• SOLUTION OF Cobegin – coend synchronization process
Variable a,b,c,d,e,g: semaphore
1. Begin
2. Cobegin
3. S1; V(a);V(b); end
4. P(a); S2;S4;V(c);V(d);
5. P(b); S3; V(e);
6. P(c);S5;V(f);
7. P(d);P(e);S6;V(g);
8. P(f);P(g);S7;
9. coend
10. End
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Type semaphore = record
value= integer;
L: list of processes;
end;
Var S:semaphore;
TO OVERCOME A BUSY WAIT PROBLEM
Define a semaphore AS structure or records and not integer
V(S): S.Value=S.Value+1If S.value 0 then
BeginRemove process P from S.L//put P into ready queue
Wakeup(P);End;
P(S): S.Value=S.Value-1If S.value<0 then
BeginAdd this process to S.L
// into wait stateBlock;End;
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
SOLUTION OF CLASSIC SYNCHRONIZATION PROBLEMS USING SEMAPHORES
• PRODUCER/ CONSUMER PROBLEM
full,empty,mutex:semaphore
nextp, nextc:item
full =0;
empty=n;
mutex=1;Consumer: repeat
P(full)P(mutex)
……Remove an item from buffer to nextc
……V(mutex)V(empty)
Until false;
Producer: repeat
production on item in nextp;…..
P(empty)P(mutex)
……Add nextp to buffer
……V(mutex)
V(full) Until false;
CONSUMERPRODUCER
Tuesday, May 2, 2023
DANI ELIAS MFUNGO HD/UDOM/408/T.2015
Demostration
Simulation about Process synchronization