05-synchronization

05-synchronization - Synchronization Prof Sirer CS 4410...

Info iconThis preview shows pages 1–14. Sign up to view the full content.

View Full Document Right Arrow Icon
Synchronization Prof. Sirer CS 4410 Cornell University
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Threads share global memory When a process contains multiple threads, they have ! Private registers and stack memory (the context switching mechanism saves and restores registers when switching from thread to thread) ! Shared access to the remainder of the process “state”
Background image of page 2
Two threads, one variable Two threads updating a single shared variable ! One thread wants to decrement amount by $10K ! The other thread wants to decrement amount by 50% What happens when two threads execute concurrently? amount= amount - 10000; amount = 0.50 * amount amount= 100000;
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Two threads, one variable r1 = load from amount r1 = r1 - 10000; store r1 to amount r1 = load from amount r1 = 0.5 * r1 store r1 to amount amount= 100000; amount= ?
Background image of page 4
Two threads, one variable r1 = load from amount r1 = r1 - 10000; store r1 to amount r1 = load from amount r1 = 0.5 * r1 store r1 to amount amount= 100000; amount= ?
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Two threads, one variable r1 = load from amount r1 = r1 - 10000; store r1 to amount r1 = load from amount r1 = 0.5 * r1 store r1 to amount amount= 100000; amount= ?
Background image of page 6
Shared counters One possible result: everything works! Another possible result: lost update! Difficult to debug Called a “race condition”
Background image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Race conditions Def: a timing dependent error involving shared state ! Whether it happens depends on how threads scheduled ! In effect, once thread A starts doing something, it needs to “race” to finish it because if thread B looks at the shared memory region before A is done, A’s change will be lost. Hard to detect: ! All possible schedules have to be safe " Number of possible schedule permutations is huge " Some bad schedules? Some that will work sometimes? ! they are intermittent " Timing dependent = small changes can hide bug
Background image of page 8
If i is shared, and initialized to 0 ! Who wins? ! Is it guaranteed that someone wins? ! What if both threads run on identical speed CPU " executing in parallel Scheduler assumptions Process b: while(i > -10) i = i - 1; print “B won!”; Process a: while(i < 10) i = i +1; print “A won!”;
Background image of page 9

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Critical Section Goals Threads do some stuff but eventually might try to access shared data CSEnter(); Critical section CSExit(); T1 T2 time CSEnter(); CSExit(); T1 T2
Background image of page 10
Critical Section Goals Perhaps they loop (perhaps not!) T1 T2 CSEnter(); Critical section CSExit(); T1 T2 CSEnter(); CSExit();
Background image of page 11

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Critical Section Goals We would like ! Safety: No more than one thread can be in a critical section at any time. ! Liveness: A thread that is seeking to enter the critical section will eventually succeed ! Fairness: If two threads are both trying to enter a critical section, they have equal chances of success … in practice, fairness is rarely guaranteed
Background image of page 12
Too much milk problem Two roommates want to ensure that the fridge is always stocked with milk ! If the fridge is empty, they need to restock it ! But they don’t want to buy too much milk
Background image of page 13

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 14
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

Page1 / 75

05-synchronization - Synchronization Prof Sirer CS 4410...

This preview shows document pages 1 - 14. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online