Download presentation
Presentation is loading. Please wait.
Published byBeate Fischer Modified over 5 years ago
1
Course Syllabus 1. Introduction - History; Views; Concepts; Structure
2. Process Management - Processes; State + Resources; Threads; Unix implementation of Processes 3. Scheduling – Paradigms; Unix; Modeling 4. 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. Virtualization – Virtual machines, type I and II hypervisors, classic virtualization, sensitive and privileged instructions, binary translation, memory virtualization 7. Distributed Synchronization (if there's time) Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
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. Process A 4 5 6 7 . . . . . . abc.doc f.ps paper.ps In=7 Process B Out = 4 Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
3
Code using reads/writes only
Add-file-to-print-spool (char *name) Local-in := In StoreName(Spool-dir[local-in], name) 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. Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
4
The mutual exclusion problem (Dijkstra, 1965)
How can we avoid such race conditions? We need to devise a protocol that guarantees mutually exclusive access by processes to a shared resource (such as a file, printer, etc.) or, more generally, a critical section of code Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
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 Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
6
Mutual exclusion: formal definition
loop forever Remainder code Entry code Critical section (CS) Exit code end loop Remainder code Entry code CS Exit code Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
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 Starvation-freedom: If a process is trying to enter its critical section, then this process must eventually enter its critical section Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
8
Mutual exclusion using critical regions
Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
9
Brute force solution: disabling interrupts
Disable interrupts Do your stuff Enable interrupts Problems User processes are not 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 Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
10
2-process Mutual Exclusion with a lock variable
initially: lock=0 await c: repeatedly evaluate condition c until true Program for both processes await lock=0 lock:=1 CS lock:=0 No Does the algorithm satisfy mutex? Does it satisfy deadlock-freedom? Does it satisfy starvation-freedom? Yes No Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
11
Mutual Exclusion: strict alternation
initially: turn=0 Program for process 0 await turn=0 CS turn:=1 Program for process 1 await turn=1 CS turn:=0 Yes Does the algorithm satisfy mutex? Does it satisfy deadlock-freedom? Does it satisfy starvation-freedom? No No Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
12
Mutual Exclusion: flag array
bool flags[2] initially {false, false} Program for process 0 flags[0]:=true await flags[1]=false CS flags[0]:=false Program for process 1 flags[1]:=true await flags[0]=false CS flags[1]:=false Yes Does the algorithm satisfy mutex? Does it satisfy deadlock-freedom? Does it satisfy starvation-freedom? No No Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
13
Peterson’s 2-process algorithm (Peterson, 1981)
initially: b[0]:=false, b[1]:=false, initial value of turn immaterial Program for process 0 b[0]:=true turn:=0 await (b[1]=false or turn=1) CS b[0]:=false Program for process 1 b[1]:=true turn:=1 await (b[0]=false or turn=0) CS b[1]:=false Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
14
Schema for Peterson’s 2-process algorithm
Indicate participation b[i]:=true Barrier turn:=i no, maybe Is there contention? b[1-i]=true? yes First to cross barrier? turn=1-i? no yes Critical Section Exit code b[i]:=false Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili Synchronization Algorithms and Concurrent Programming , Gadi Taubenfeld © 2006
15
Peterson’s 2-process algorithm satisfies both mutual-exclusion and starvation-freedom
Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
16
Mutual exclusion for n processes: A tournament tree
Level 2 1 2 3 4 5 6 7 Level 1 Level 0 Processes A tree-node is identified by: [level, node#] Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili Synchronization Algorithms and Concurrent Programming , Gadi Taubenfeld © 2006
17
N-process mutual exclusion: a tournament tree
Variables Per node: b[level, 2node], b[level, 2node+1], turn[level,node] Per process (local): level, node, id. Program for process i node:=i For level = 0 to log n-1 do id:=node mod 2 node:= node/2 b[level,2node+id]:=true turn[level,node]:=id await (b[level,2node+1-id]=false or turn[level,node]=1-id) end do CS for level=log n –1 downto 0 do node:= i/2level b[level,2node+id]:=false // id is value set at this node in entry Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
18
Fairness: First in First Out (FIFO)
Mutual Exclusion Deadlock-freedom Starvation-freedom remainder doorway waiting entry code critical section exit code FIFO: if process p is waiting and process q has not yet started the doorway, then q will not enter the CS before p Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili Synchronization Algorithms and Concurrent Programming , Gadi Taubenfeld © 2006
19
Lamport’s Bakery Algorithm
1 2 3 4 5 n remainder 1 3 2 2 4 doorway entry waiting 1 3 2 4 2 1 2 2 CS time 1 2 2 exit Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili Synchronization Algorithms and Concurrent Programming , Gadi Taubenfeld © 2006
20
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] := 0 1 2 3 4 n number integer Does this implementation work? Answer: No, it can deadlock! Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili Synchronization Algorithms and Concurrent Programming , Gadi Taubenfeld © 2006
21
Implementation 1: deadlock
2 3 4 5 n remainder 1 2 2 doorway entry waiting 1 2 2 1 deadlock CS time 1 exit Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili Synchronization Algorithms and Concurrent Programming , Gadi Taubenfeld © 2006
22
Implementation 2 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],j) < number[i],i) // lexicographical order } critical section number[i] := 0 1 2 3 4 n number integer Does this implementation work? Answer: It does not satisfy mutual exclusion! Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili Synchronization Algorithms and Concurrent Programming , Gadi Taubenfeld © 2006
23
Implementation 2: no mutual exclusion
1 2 3 4 5 n remainder 1 2 2 doorway entry waiting 1 2 2 1 2 2 CS time 1 exit Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili Synchronization Algorithms and Concurrent Programming , Gadi Taubenfeld © 2006
24
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] := 0 Doorway Waiting Bakery 1 2 3 4 n choosing false false false false false false bits number integer Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
25
Lamport’s bakery algorithm satisfies mutual-exclusion, starvation-freedom, and FIFO
Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
26
The test-and-set instruction
initially: v:=0 Test-and-set(w) do atomically prev:=w w:=1 return prev Program for process i await test&set(v) = 0 Critical Section v:=0 Mutual exclusion? Yes Deadlock-freedom? Yes Starvation-freedom? No Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
27
Starvation-free mutex using test-and-set
boolean lock initially 0, interested[n] initially false program for process i interested[i]:=true await ( (test-and-set(lock) = 0) || (interested[i]=false) ) CS interested[i]:=false j:=(i+1) % n while (j != i && !interested[j]) j:=++j % n if (j=i) lock:=0 else interested[j]:=false Operating Systems, Spring 2018, I. Dinur, D. Hendler and R. Iakobashvili
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.