Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the...
Transcript of Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the...
![Page 1: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/1.jpg)
Synchronization
Sarah Diesburg Operating Systems
CS 3430
![Page 2: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/2.jpg)
Motivating Example: Too Much Milk
Two robots are programmed to maintain the milk inventory at a store…
They are not aware of each other’s presence…
Robot: Dumb Robot: Dumber
![Page 3: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/3.jpg)
Motivating Example: Too Much Milk
Dumb 10:00 Look into fridge: Out of milk
Dumber
![Page 4: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/4.jpg)
Motivating Example: Too Much Milk
Dumb 10:00 Look into fridge: Out of milk 10:05 Head for the
warehouse
Dumber
![Page 5: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/5.jpg)
Motivating Example: Too Much Milk
Dumb 10:05 Head for the
warehouse
Dumber 10:10 Look into fridge: Out of milk
![Page 6: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/6.jpg)
Motivating Example: Too Much Milk
Dumb Dumber 10:10 Look into fridge: Out of milk 10:15 Head for the
warehouse
![Page 7: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/7.jpg)
Motivating Example: Too Much Milk
Dumb 10:20 Arrive with milk
Dumber 10:15 Head for the
warehouse
![Page 8: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/8.jpg)
Motivating Example: Too Much Milk
Dumb 10:20 Arrive with milk
Dumber 10:15 Head for the
warehouse
![Page 9: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/9.jpg)
Motivating Example: Too Much Milk
Dumb 10:20 Arrive with milk 10:25 Go party
Dumber
![Page 10: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/10.jpg)
Motivating Example: Too Much Milk
Dumb 10:20 Arrive with milk 10:25 Go party
Dumber 10:30 Arrive with milk:
“Uh oh…”
![Page 11: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/11.jpg)
Definitions
Synchronization: uses atomic operations to ensure cooperation among threads
Mutual exclusion: ensures one thread can do something without the interference of other threads
Critical section: a piece of code that only one thread can execute at a time
![Page 12: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/12.jpg)
More on Critical Section
A lock prevents a thread from doing something A thread should lock before entering a critical
section A thread should unlock when leaving the
critical section A thread should wait if the critical section is
locked Synchronization often involves waiting
![Page 13: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/13.jpg)
Too Much Milk: Solution 1
Two properties: Only one robot will go get milk Someone should go get the milk if needed
Basic idea of solution 1 Leave a note (kind of like a lock) Remove the note (kind of like a unlock) Don’t go get milk if the note is around (wait)
![Page 14: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/14.jpg)
Too Much Milk: Solution 1
if (no milk) { if (no note) { // leave a note; // go get milk; // remove the note; } }
![Page 15: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/15.jpg)
Too Much Milk: Solution 1
Dumb 10:00 if (no milk) {
Dumber
![Page 16: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/16.jpg)
Too Much Milk: Solution 1
Dumb 10:00 if (no milk) {
Dumber 10:01 if (no milk) {
![Page 17: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/17.jpg)
Too Much Milk: Solution 1
Dumb 10:00 if (no milk) {
Dumber 10:01 if (no milk) { 10:02 if (no note) {
![Page 18: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/18.jpg)
Too Much Milk: Solution 1
Dumb 10:00 if (no milk) { 10:03 if (no note) {
Dumber 10:01 if (no milk) { 10:02 if (no note) {
![Page 19: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/19.jpg)
Too Much Milk: Solution 1
Dumb 10:00 if (no milk) { 10:03 if (no note) { 10:04 // leave a note
Dumber 10:01 if (no milk) { 10:02 if (no note) {
![Page 20: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/20.jpg)
Too Much Milk: Solution 1
Dumb 10:03 if (no note) { 10:04 // leave a note
Dumber 10:01 if (no milk) { 10:02 if (no note) { 10:05 // leave a note
![Page 21: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/21.jpg)
Too Much Milk: Solution 1
Dumb 10:03 if (no note) { 10:04 // leave a note 10:06 // go get milk
Dumber 10:02 if (no note) { 10:05 // leave a note
![Page 22: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/22.jpg)
Too Much Milk: Solution 1
Dumb 10:03 if (no note) { 10:04 // leave a note 10:06 // go get milk
Dumber 10:05 // leave a note 10:07 // go get milk
![Page 23: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/23.jpg)
Too Much Milk: Solution 2
Okay…solution 1 does not work The notes are posted too late… What if both robots begin by leaving their own
notes?
![Page 24: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/24.jpg)
Too Much Milk: Solution 2
// leave a note; if (no note from the other) { if (no milk) { // go get milk; } } // remove the note;
![Page 25: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/25.jpg)
Too Much Milk: Solution 2
Dumb 10:00 // leave a note
Dumber
![Page 26: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/26.jpg)
Too Much Milk: Solution 2
Dumb 10:00 // leave a note
Dumber 10:01 // leave a note
![Page 27: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/27.jpg)
Too Much Milk: Solution 2
Dumb 10:00 // leave a note 10:02 if (no note from
Dumber) {…}
Dumber 10:01 // leave a note
![Page 28: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/28.jpg)
Too Much Milk: Solution 2
Dumb 10:00 // leave a note 10:02 if (no note from
Dumber) {…}
Dumber 10:01 // leave a note 10:03 if (no note from
Dumb) {…}
![Page 29: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/29.jpg)
Too Much Milk: Solution 2
Dumb 10:00 // leave a note 10:02 if (no note from
Dumber) {…} 10:04 // remove the note
Dumber 10:01 // leave a note 10:03 if (no note from
Dumb) {…}
![Page 30: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/30.jpg)
Too Much Milk: Solution 2
Dumb 10:00 // leave a note 10:02 if (no note from
Dumber) {…} 10:04 // remove the note
Dumber 10:01 // leave a note 10:03 if (no note from
Dumb) {…}
![Page 31: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/31.jpg)
Too Much Milk: Solution 2
Dumb 10:02 if (no note from
Dumber) {…} 10:04 // remove the note
Dumber 10:01 // leave a note 10:03 if (no note from
Dumb) {…} 10:05 // remove the note
![Page 32: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/32.jpg)
Too Much Milk: Solution 2
Dumb 10:02 if (no note from
Dumber) {…} 10:04 // remove the note
Dumber 10:01 // leave a note 10:03 if (no note from
Dumb) {…} 10:05 // remove the note
![Page 33: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/33.jpg)
Too Much Milk: Solution 2
Dumb 10:02 if (no note from
Dumber) {…} 10:04 // remove the note
Dumber 10:01 // leave a note 10:03 if (no note from
Dumb) {…} 10:05 // remove the note
Still no milk!
![Page 34: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/34.jpg)
Too Much Milk: Solution 3
Dumb // leave Dumb’s note while (Dumber’s note) { }; if (no milk) { // go get milk } // remove Dumb’s note
Dumber // leave Dumber’s note if (no Dumb’s note) { if (no milk) { // go get milk } } // remove Dumber’s note
![Page 35: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/35.jpg)
Too Much Milk Solution 3
How do we verify the correctness of a solution?
Test arbitrary interleaving of locking and checking locks In this case, leaving notes and checking notes
![Page 36: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/36.jpg)
Dumber Challenges Dumb: Case 1
Dumb // leave Dumb’s note while (Dumber’s note) { }; if (no milk) { // go get milk } // remove Dumb’s note
Dumber // leave Dumber’s note if (no Dumb’s note) { } // remove Dumber’s note
Tim
e
![Page 37: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/37.jpg)
Dumber Challenges Dumb: Case 2
Dumb // leave Dumb’s note while (Dumber’s note) { }; if (no milk) { // go get milk } // remove Dumb’s note
Dumber // leave Dumber’s note if (no Dumb’s note) { } // remove Dumber’s note
Tim
e
![Page 38: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/38.jpg)
Dumber Challenges Dumb: Case 3
Dumb // leave Dumb’s note while (Dumber’s note) { }; if (no milk) { // go get milk } // remove Dumb’s note
Dumber // leave Dumber’s note if (no Dumb’s note) { } // remove Dumber’s note
Tim
e
![Page 39: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/39.jpg)
Dumb Challenges Dumber: Case 1
Dumb // leave Dumb’s note while (Dumber’s note) { }; if (no milk) { } // remove Dumb’s note
Dumber // leave Dumber’s note if (no Dumb’s note) { if (no milk) { // go get milk } } // remove Dumber’s note
Tim
e
![Page 40: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/40.jpg)
Dumb Challenges Dumber: Case 2
Dumb // leave Dumb’s note while (Dumber’s note) { }; if (no milk) { // go get milk } // remove Dumb’s note
Dumber // leave Dumber’s note if (no Dumb’s note) { } // remove Dumber’s note
Tim
e
![Page 41: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/41.jpg)
Dumb Challenges Dumber: Case 3
Dumb // leave Dumb’s note while (Dumber’s note) { }; if (no milk) { // go get milk } // remove Dumb’s note
Dumber // leave Dumber’s note if (no Dumb’s note) { } // remove Dumber’s note
Tim
e
![Page 42: Synchronizationdiesburg/courses/cs3430_sp15/sessions/s05/s05... · Dumb . 10:05 Head for the warehouse . Dumber . 10:10 Look into fridge: Out of milk](https://reader034.fdocuments.net/reader034/viewer/2022043009/5f9e6affa99d2d2a5f6290ab/html5/thumbnails/42.jpg)
Lessons Learned
Although it works, Solution 3 is ugly Difficult to verify correctness Two threads have different code
Difficult to generalize to N threads While Dumb is waiting, it consumes CPU time
(busy waiting) More elegant with higher-level primitives lockacquire(); if (no milk) { // go get milk } lockrelease();