Presentation is loading. Please wait.

Presentation is loading. Please wait.

Synchronization Andy Wang Operating Systems COP 4610 / CGS 5765.

Similar presentations


Presentation on theme: "Synchronization Andy Wang Operating Systems COP 4610 / CGS 5765."— Presentation transcript:

1 Synchronization Andy Wang Operating Systems COP 4610 / CGS 5765

2 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

3 Motivating Example: Too Much Milk Dumb 10:00Look into fridge: Out of milk Dumber

4 Motivating Example: Too Much Milk Dumb 10:00Look into fridge: Out of milk 10:05Head for the warehouse Dumber

5 Motivating Example: Too Much Milk Dumb 10:05Head for the warehouse Dumber 10:10Look into fridge: Out of milk

6 Motivating Example: Too Much Milk DumbDumber 10:10Look into fridge: Out of milk 10:15 Head for the warehouse

7 Motivating Example: Too Much Milk Dumb 10:20Arrive with milk Dumber 10:15 Head for the warehouse

8 Motivating Example: Too Much Milk Dumb 10:20Arrive with milk Dumber 10:15 Head for the warehouse

9 Motivating Example: Too Much Milk Dumb 10:20Arrive with milk 10:25Go party Dumber

10 Motivating Example: Too Much Milk Dumb 10:20Arrive with milk 10:25Go party Dumber 10:30Arrive with milk: “Uh oh…”

11 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

12 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

13 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)

14 Too Much Milk: Solution 1 if (no milk) { if (no note) { // leave a note; // go get milk; // remove the note; }

15 Too Much Milk: Solution 1 Dumb 10:00 if (no milk) { Dumber

16 Too Much Milk: Solution 1 Dumb 10:00 if (no milk) { Dumber 10:01 if (no milk) {

17 Too Much Milk: Solution 1 Dumb 10:00 if (no milk) { Dumber 10:01 if (no milk) { 10:02 if (no note) {

18 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) {

19 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) {

20 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

21 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

22 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

23 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?

24 Too Much Milk: Solution 2 // leave a note; if (no note from the other) { if (no milk) { // go get milk; } // remove the note;

25 Too Much Milk: Solution 2 Dumb 10:00 // leave a note Dumber

26 Too Much Milk: Solution 2 Dumb 10:00 // leave a note Dumber 10:01 // leave a note

27 Too Much Milk: Solution 2 Dumb 10:00 // leave a note 10:02 if (no note from Dumber) {…} Dumber 10:01 // leave a note

28 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) {…}

29 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) {…}

30 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) {…}

31 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

32 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

33 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

34 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

35 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 Time

36 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 Time

37 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 Time

38 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 Time

39 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 Time

40 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 Time

41 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 lock  acquire(); if (no milk) { // go get milk } lock  release();


Download ppt "Synchronization Andy Wang Operating Systems COP 4610 / CGS 5765."

Similar presentations


Ads by Google