Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Course Syllabus 1. Introduction - History; Views; Concepts; Structure 2. Process Management - Processes; State + Resources; Threads; Unix implementation.

Similar presentations


Presentation on theme: "1 Course Syllabus 1. Introduction - History; Views; Concepts; Structure 2. Process Management - Processes; State + Resources; Threads; Unix implementation."— Presentation transcript:

1 1 Course Syllabus 1. Introduction - History; Views; Concepts; Structure 2. Process Management - Processes; State + Resources; Threads; Unix implementation of Processes 3. Process Scheduling – Paradigms; Unix; Modeling 4. Process Synchronization - Synchronization primitives and their equivalence; Deadlocks 5. Memory Management - Virtual memory; Page replacement algorithms; Segmentation 6. File Systems - Implementation; Directory and space management; Unix file system; Distributed file systems (NFS) 7. Security – General policies and mechanisms; protection models; authentication 8. Distributed issues – Synchronization; Mutual exclusion Operating Systems, 2011, Danny Hendler & Amnon Meisels

2 2 Mutual exclusion: motivation Race Conditions: Example: Spooler directory with slots; index variables; two processes attempt concurrent access. In points to the next empty slot, Out points to entry holding name of file to print next.... abc.docf.pspaper.ps Process A Process B 4567 Out = 4 In=7

3 Operating Systems, 2011, Danny Hendler & Amnon Meisels 3 Code using reads/writes only Add-file-to-print-spool (char *name) 1.Local-in := In 2.StoreName(Spool-dir[local-in], name) 3.In := (local-in+1) mod DIR-LEN A scenario proving the above code wrong Process A performs line 1 Process A is preempted by Process B Process B performs Add-file-to-print-spool to completion Process A is re-scheduled, completes lines 2-3. Process B's file is never printed

4 Operating Systems, 2011, Danny Hendler & Amnon Meisels 4 The mutual exclusion problem (Dijkstra, 1965) We need to devise a protocol that guarantees mutually exclusive access by processes to a shared resource (such as a file, printer, etc.) How can we avoid such race conditions?

5 Operating Systems, 2011, Danny Hendler & Amnon Meisels 5 The problem model  Multiple processes  Processes can apply read, write, or stronger operations to shared memory  Completely asynchronous  We assume processes do not fail-stop

6 Operating Systems, 2011, Danny Hendler & Amnon Meisels 6 Mutual exclusion: formal definition loop forever Remainder code Entry code Critical section (CS) Exit code end loop Remainder code Entry code Exit code CS

7 Operating Systems, 2011, Danny Hendler & Amnon Meisels 7 Mutex Requirements  Mutual exclusion : No two processes are at the critical section (CS) at the same time  Deadlock-freedom : If processes are trying to enter their critical section, then some process eventually enters the critical section aka Progress  Starvation-freedom : If a process is trying to enter its critical section, then this process must eventually enter its critical section also called Bounded waiting

8 Operating Systems, 2011, Danny Hendler & Amnon Meisels 8 Mutual exclusion using critical regions

9 Operating Systems, 2011, Danny Hendler & Amnon Meisels 9 Brute force solution: disabling interrupts Disable interrupts Do your stuff Enable interrupts Problems  User processes should not be allowed to disable interrupts  Disabling interrupts must be done for a very short period of time  Does not solve the problem in a multi-processor system

10 Operating Systems, 2011, Danny Hendler & Amnon Meisels 10 Mutual Exclusion with a lock variable Program for both processes 1.await lock=0 2.lock:=1 3.CS 4.lock:=0 initially: lock=0 Does the algorithm satisfy mutex? Does it satisfy deadlock-freedom? Does it satisfy starvation-freedom? No Yes No

11 Operating Systems, 2011, Danny Hendler & Amnon Meisels 11 Mutual Exclusion: strict alternation Does the algorithm satisfy mutex? Does it satisfy deadlock-freedom? Does it satisfy starvation-freedom? Yes No Program for process 0 1.await turn=0 2.CS 3.turn:=1 Program for process 1 1.await turn=1 2.CS 3.turn:=0 initially: turn=0

12 Operating Systems, 2011, Danny Hendler & Amnon Meisels 12 Mutual Exclusion: flag array Does the algorithm satisfy mutex? Does it satisfy deadlock-freedom? Does it satisfy starvation-freedom? Yes No Program for process 0 1.flags[0]:=true 2.await flags[1]=false 3.CS 4.flags[0]:=false Program for process 1 1.flags[1]:=true 2.await flags[0]=false 3.CS 4.flags[1]:=false bool flags[2] initially {false, false}

13 Operating Systems, 2011, Danny Hendler & Amnon Meisels 13 Peterson’s 2-process algorithm (Peterson, 1981) initially: b[0]:=false, b[1]:=false, value of turn immaterial Program for process 0 1.b[0]:=true 2.turn:=0 3.await (b[1]=false or turn=1) 4.CS 5.b[0]:=false Program for process 1 1.b[1]:=true 2.turn:=1 3.await (b[0]=false or turn=0) 4.CS 5.b[1]:=false

14 Operating Systems, 2011, Danny Hendler & Amnon Meisels 14 Schema for Peterson’s 2-process algorithm Indicate participation b[i]:=true Barrier turn:=i Is there contention? b[1-i]=true? yes no Critical Section Exit code b[i]:=false First to cross barrier? turn=1-i? no, maybe yes Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

15 Operating Systems, 2011, Danny Hendler & Amnon Meisels 15 Peterson’s 2-process algorithm satisfies mutual-exclusion and deadlock-freedom and starvation-freedom

16 Operating Systems, 2011, Danny Hendler & Amnon Meisels 16 Observations  Shared register: turn (2-valued) read & write by both processes  Two boolean registers: b[0], b[1] process 0 can write b[0], process 1 can write b[1] both can read b[0] & b[1]  Can the algorithm be modified to use only single-writer registers ?

17 Operating Systems, 2011, Danny Hendler & Amnon Meisels 17 Kessels’ 2-process algorithm (1982) encode turn=0 as turn[0] = turn[1] turn=1 as turn[0] ≠ turn[1] initially: b[0]:=false, b[1]:=false, value of turn[i] immaterial Program for process 0 1.b[0]:=true 2.local[0]:=turn[1] 3.turn[0]:=local[0] 4.await (b[1]=false or local[0] ≠ turn[1]) 5.CS 6.b[0]:=false Program for process 1 1.b[1]:=true 2.local[1]:=1 – turn[0] 3.turn[1]:=local[1] 4.await (b[0]=false or local[1] = turn[0]) 5.CS 6.b[1]:=false

18 Operating Systems, 2011, Danny Hendler & Amnon Meisels 18 Mutual exclusion for n processes : A tournament tree Level 0 Level 1 Level 2 Processes A tree-node is identified by: [level, node#] Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

19 Operating Systems, 2011, Danny Hendler & Amnon Meisels 19 N-process mutual exclusion: a tournament tree Program for process i 1.node:=i 2.For level = 0 to log n-1 do 3. id:=node mod 2 4. node:=  node/2  5. b[level,2node+id]:=true 6. turn[level,node]:=id 7. await (b[level,2node+1-id]=false or turn[level,node]=1-id) 8.od 9.CS 10.for level=log n –1 downto 0 do 11. node:=  i/2 level+1  12. b[level,node]:=false 13.od Variables Per node: b[level, 2node], b[level, 2node+1], turn[level,node] Per process (local): level, node, id

20 Operating Systems, 2011, Danny Hendler & Amnon Meisels 20 Fairness: First in First Out (FIFO) entry code exit code critical section remainder  Mutual Exclusion  Deadlock-freedom  Starvation-freedom doorway waiting FIFO: if process p is waiting and process q has not yet started the doorway, then q will not enter the CS before p Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

21 Operating Systems, 2011, Danny Hendler & Amnon Meisels 21 time Lamport’s Bakery Algorithm doorway 12345n CS exit waiting entry remainder Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

22 Operating Systems, 2011, Danny Hendler & Amnon Meisels 22 Implementation 1 code of process i, i  {1,..., n} number[i] := 1 + max {number[j] | (1  j  n)} for j := 1 to n (<> i) { await (number[j] = 0)  (number[j] > number[i]) } critical section number[i] := n numberinteger Answer: No, it can deadlock! Does this implementation work? Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

23 Operating Systems, 2011, Danny Hendler & Amnon Meisels 23 time Implementation 1: deadlock doorway 12345n CS exit waiting entry remainder deadlock Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

24 Operating Systems, 2011, Danny Hendler & Amnon Meisels 24 number[i] := 1 + max {number[j] | (1  j  n)} for j := 1 to n (<> i) { await (number[j] = 0)  (number[j],j) < number[i],i) // lexicographical order } critical section number[i] := n numberinteger Answer: It does not satisfy mutual exclusion! Implementation 2 code of process i, i  {1,..., n} Does this implementation work? Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

25 Operating Systems, 2011, Danny Hendler & Amnon Meisels 25 time Implementation 2: no mutual exclusion doorway 12345n CS exit waiting entry remainder Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

26 Operating Systems, 2011, Danny Hendler & Amnon Meisels 26 The Bakery Algorithm code of process i, i  {1,..., n} 1: choosing[i] := true 2: number[i] := 1 + max {number[j] | (1  j  n)} 3: choosing[i] := false 4: for j := 1 to n do 5: await choosing[j] = false 6: await (number[j] = 0)  (number[j],j)  (number[i],i) 7: od 8: critical section 9: number[i] := n choosingbits false numberinteger false Doorway Waiting Bakery

27 Operating Systems, 2011, Danny Hendler & Amnon Meisels 27 Implementing the choice of number[] local1 := 0; for local2:= 1 to n { local3 := number[local2] ; if local1 < local3 then local1 := local3; } number[i] := 1 + local1; greater than If the value of number[k] does not change while process i is computing the maximum, then number[i] will have a value greater than number[k] Synchronization Algorithms and Concurrent Programming, Gadi Taubenfeld © 2006

28 Operating Systems, 2011, Danny Hendler & Amnon Meisels 28 Correctness of the Bakery algorithm  Doorway – lines 1-3; Bakery – lines 4-8  Process i is in its CS and process k is in the bakery  T[i,5] – last time process i read choosing[k] (line 5)  T[i,6] – last time process i executed line 6 for j=k  T[k,1] – last time process k executed line 1 (entered doorway)  T[k,3] – last time process k executed line 3 (left doorway)  Either T[i,5] < T[k,1] or T[k,3] < T[i,5]  First case: number[i] < number[k]  Second: (number[i],i) < (number[k],k)  If process i is in the CS and process k is in the bakery then (number[i],i) < (number[k],k)

29 Operating Systems, 2011, Danny Hendler & Amnon Meisels 29 Lamport’s bakery algorithm satisfies mutual-exclusion, starvation-freedom, and FIFO

30 Operating Systems, 2011, Danny Hendler & Amnon Meisels 30 Test-and-set(w) do atomically prev:=w w:=1 return prev The test-and-set instruction Program for process i 1.await test&set(v) = 0 2.Critical Section 3.v:=0 initially: v:=0 Mutual exclusion? Yes Deadlock-freedom? No Starvation-freedom? Yes

31 Operating Systems, 2011, Danny Hendler & Amnon Meisels 31 Starvation-free mutex using test-and-set program for process i 1.interested[i]:=true 2.await ( (test-and-set(lock) = 0) || (interested[i]=false) ) 3.CS 4. interested[i]:=false 5.j:=(i+1) % n 6.while (j != i && !interested[j]) j:=++j % n 7.if (j=i) 8. lock:=0 9.else 10. interested[j]:=false boolean lock initially 0, interested[n] initially false


Download ppt "1 Course Syllabus 1. Introduction - History; Views; Concepts; Structure 2. Process Management - Processes; State + Resources; Threads; Unix implementation."

Similar presentations


Ads by Google