Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
sav07_lecture_26 [2007/07/02 01:37] feride.cetin |
sav07_lecture_26 [2007/07/03 00:06] feride.cetin |
||
---|---|---|---|
Line 154: | Line 154: | ||
* have significantly more overhead | * have significantly more overhead | ||
2. Locksets | 2. Locksets | ||
- | * imprecise | + | * imprecise -> may generate false race warnings |
+ | * efficient | ||
+ | * **Goldilocks:** | ||
+ | - precise | ||
+ | - efficient (purely lockset based) | ||
+ | * **Happens-before relation:** Data race occurs between two accesses to a shared variable if they are not ordered by the happens-before relation. | ||
+ | |||
+ | * A concurrent execution δ is represented by a finite sequence | ||
+ | |||
+ | {{sav1.jpg|Figure 4}} | ||
+ | - t<sub>i</sub> is a thread | ||
+ | - s<sub>i</sub> is a program state | ||
+ | - α<sub>i</sub> is one of the following actions: acq(), rel (), read(), write(), fork (), join(), and alloc() | ||
== References == | == References == |