Download presentation
Presentation is loading. Please wait.
Published byPearl Hunt Modified over 9 years ago
1
Synchronization III: Summary CPE 261403 - Operating Systems http://www.e-cpe.org/moodle
2
Synchronization Topics Critical Section Limiting Concurrent Resource Access Sequencing Events
3
What’s wrong the code on the left? int Mutex = 1; while (Mutex == 0); Mutex--; // Critical Section Mutex++; Semaphore Mutex = 1; Wait (Mutex); // Critical Section Signal(Mutex);
4
Non-Atomic instruction Register1 = Mutex Decrease register1 Mutex = register1 Register2 = Mutex Decrease register2 Mutex = register2 Register1 = Mutex Register2 = Mutex Decrease register2 Mutex = register2 Decrease register1 Mutex = register1
5
Semaphore Wait(s)Signal(s)
6
Busy Waiting while (Mutex == 0);Wait (Mutex); Very high CPU load!
7
Semaphore vs Monitor
8
Critical Section Semaphore mutex=1; int count=0; void add() { wait(mutex); count++; signal(mutex); } int count=0; Monitor doStuff { Void add() { count++; }
9
Limiting Concurrent Resource Access Semaphore db=3; void connectDb() { wait(db); connect(); signal(db); } int MaxDb=3; Monitor doStuff { Void connectDb() { if (MaxDb > 0){ MaxDb--; connect(); MaxDb++; }
10
Sequencing Events Semaphore buffer=0; void consume() { wait(buffer); removeItem(); } Void Produce() { addItem(); signal(buffer); } Monitor doStuff { Condition buffer; Void consume() { if (bufferLen==0) buffer.wait(); removeItem(); } Void Produce() { addItem(); buffer.signal() }
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.