000 07153nam a2200805 i 4500
001 6813491
003 IEEE
005 20200413152910.0
006 m eo d
007 cr cn |||m|||a
008 130615s2013 caua foab 000 0 eng d
020 _a9781608459575 (electronic bk.)
020 _z9781608459568 (pbk.)
024 7 _a10.2200/S00499ED1V01Y201304CAC023
_2doi
035 _a(CaBNVSL)swl00402479
035 _a(OCoLC)848842074
040 _aCaBNVSL
_cCaBNVSL
_dCaBNVSL
050 4 _aQA76.9.M45
_bS367 2013
082 0 4 _a005.43
_223
090 _a
_bMoCl
_e201304CAC023
100 1 _aScott, Michael Lee,
_d1959-
245 1 0 _aShared-memory synchronization
_h[electronic resource] /
_cMichael L. Scott.
260 _aSan Rafael, Calif. (1537 Fourth Street, San Rafael, CA 94901 USA) :
_bMorgan & Claypool,
_cc2013.
300 _a1 electronic text (xvii, 203 p.) :
_bill., digital file.
490 1 _aSynthesis lectures on computer architecture,
_x1935-3243 ;
_v# 23
538 _aMode of access: World Wide Web.
538 _aSystem requirements: Adobe Acrobat Reader.
500 _aPart of: Synthesis digital library of engineering and computer science.
500 _aSeries from website.
504 _aIncludes bibliographical references (p. 173-202).
505 0 _a1. Introduction -- 1.1 Atomicity -- 1.2 Condition synchronization -- 1.3 Spinning vs. blocking -- 1.4 Safety and liveness --
505 8 _a2. Architectural background -- 2.1 Cores and caches: basic shared-memory architecture -- 2.1.1 Temporal and spatial locality -- 2.1.2 Cache coherence -- 2.1.3 Processor (core) locality -- 2.2 Memory consistency -- 2.2.1 Sources of inconsistency -- 2.2.2 Special instructions to order memory access -- 2.2.3 Example architectures -- 2.3 Atomic primitives -- 2.3.1 The ABA problem -- 2.3.2 Other synchronization hardware --
505 8 _a3. Essential theory -- 3.1 Safety -- 3.1.1 Deadlock freedom -- 3.1.2 Atomicity -- 3.2 Liveness -- 3.2.1 Nonblocking progress -- 3.2.2 Fairness -- 3.3 The consensus hierarchy -- 3.4 Memory models -- 3.4.1 Formal framework -- 3.4.2 Data races -- 3.4.3 Real-world models --
505 8 _a4. Practical spin locks -- 4.1 Classical load-store only algorithms -- 4.2 Centralized algorithms -- 4.2.1 Test and set locks -- 4.2.2 The ticket lock -- 4.3 Queued spin locks -- 4.3.1 The MCS lock -- 4.3.2 The CLH lock -- 4.3.3 Which spin lock should I use? -- 4.4 Interface extensions -- 4.5 Special-case optimizations -- 4.5.1 Locality-conscious locking -- 4.5.2 Double-checked locking -- 4.5.3 Asymmetric locking --
505 8 _a5. Busy-wait synchronization with conditions -- 5.1 Flags -- 5.2 Barrier algorithms -- 5.2.1 The sense-reversing centralized barrier -- 5.2.2 Software combining -- 5.2.3 The dissemination barrier -- 5.2.4 Non-combining tree barriers -- 5.2.5 Which barrier should I use? -- 5.3 Barrier extensions -- 5.3.1 Fuzzy barriers -- 5.3.2 Adaptive barriers -- 5.3.3 Barrier-like constructs -- 5.4 Combining as a general technique --
505 8 _a6. Read-mostly atomicity -- 6.1 Reader-writer locks -- 6.1.1 Centralized algorithms -- 6.1.2 Queued reader-writer locks -- 6.2 Sequence locks -- 6.3 Read-copy update --
505 8 _a7. Synchronization and scheduling -- 7.1 Scheduling -- 7.2 Semaphores -- 7.3 Monitors -- 7.3.1 Hoare monitors -- 7.3.2 Signal semantics -- 7.3.3 Nested monitor calls -- 7.3.4 Java monitors -- 7.4 Other language mechanisms -- 7.4.1 Conditional critical regions -- 7.4.2 Futures -- 7.4.3 Series-parallel execution -- 7.5 Kernel/user interactions -- 7.5.1 Context switching overhead -- 7.5.2 Preemption and convoys -- 7.5.3 Resource minimization --
505 8 _a8. Nonblocking algorithms -- 8.1 Single-location structures -- 8.2 The Michael and Scott (M&S) queue -- 8.3 Harris and Michael (H&M) lists -- 8.4 Hash tables -- 8.5 Skip lists -- 8.6 Double-ended queues -- 8.6.1 Unbounded lock-free deques -- 8.6.2 Obstruction-free bounded deques -- 8.6.3 Work-stealing queues -- 8.7 Dual data structures -- 8.8 Nonblocking elimination -- 8.9 Universal constructions --
505 8 _a9. Transactional memory -- 9.1 Software TM -- 9.1.1 Dimensions of the STM design space -- 9.1.2 Buffering of speculative state -- 9.1.3 Access tracking and conflict resolution -- 9.1.4 Validation -- 9.1.5 Contention management -- 9.2 Hardware TM -- 9.2.1 Dimensions of the HTM design space -- 9.2.2 Speculative lock elision -- 9.2.3 Hybrid TM -- 9.3 Challenges -- 9.3.1 Semantics -- 9.3.2 Extensions -- 9.3.3 Implementation -- 9.3.4 Debugging and performance tuning --
505 8 _aBibliography -- Author's biography.
506 1 _aAbstract freely available; full-text restricted to subscribers or individual document purchasers.
510 0 _aCompendex
510 0 _aINSPEC
510 0 _aGoogle scholar
510 0 _aGoogle book search
520 3 _aSince the advent of time sharing in the 1960s, designers of concurrent and parallel systems have needed to synchronize the activities of threads of control that share data structures in memory. In recent years, the study of synchronization has gained new urgency with the proliferation of multicore processors, on which even relatively simple user-level programs must frequently run in parallel. This lecture offers a comprehensive survey of shared-memory synchronization, with an emphasis on "systems-level" issues. It includes sufficient coverage of architectural details to understand correctness and performance on modern multicore machines, and sufficient coverage of higher-level issues to understand how synchronization is embedded in modern programming languages. The primary intended audience is "systems programmers" - the authors of operating systems, library packages, language run-time systems, concurrent data structures, and server and utility programs. Much of the discussion should also be of interest to application programmers who want to make good use of the synchronization mechanisms available to them, and to computer architects who want to understand the ramifications of their design decisions on systems-level code.
530 _aAlso available in print.
588 _aTitle from PDF t.p. (viewed on June 15, 2013).
650 0 _aMemory management (Computer science)
650 0 _aDistributed shared memory.
653 _aatomicity
653 _abarriers
653 _abusy-waiting
653 _aconditions
653 _alocality
653 _alocking
653 _amemory models
653 _amonitors
653 _amultiprocessor architecture
653 _anonblocking algorithms
653 _ascheduling
653 _asemaphores
653 _asynchronization
653 _atransactional memory
776 0 8 _iPrint version:
_z9781608459568
830 0 _aSynthesis digital library of engineering and computer science.
830 0 _aSynthesis lectures in computer architecture ;
_v# 23.
_x1935-3243
856 4 2 _3Abstract with links to resource
_uhttp://ieeexplore.ieee.org/servlet/opac?bknumber=6813491
856 4 0 _3Abstract with links to full text
_uhttp://dx.doi.org/10.2200/S00499ED1V01Y201304CAC023
999 _c561998
_d561998