Presentation is loading. Please wait.

Presentation is loading. Please wait.

Synchronization III: Summary CPE 261403 - Operating Systems

Similar presentations


Presentation on theme: "Synchronization III: Summary CPE 261403 - Operating Systems"— Presentation transcript:

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() }


Download ppt "Synchronization III: Summary CPE 261403 - Operating Systems"

Similar presentations


Ads by Google