The art of multiprocessor programming
Revised and updated with improvements conceived in parallel programming courses, The Art of Multiprocessor Programming is an authoritative guide to multicore programming. It introduces a higher level set of software development skills than that needed for efficient single-core programming. This book...
Autor principal: | |
---|---|
Otros Autores: | |
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Amsterdam :
Elsevier/Morgan Kaufmann
2012.
|
Edición: | Rev. 1st ed |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009628836606719 |
Tabla de Contenidos:
- Dedication
- Table of Contents
- Acknowledgments
- Preface
- Suggested Ways to Teach the Art of Multiprocessor Programming
- Preface
- Practitioner Track
- Non-CS Major Track
- CS Major Track
- 1 Introduction
- 1.1 Shared Objects and Synchronization
- 1.3 The Producer-Consumer Problem
- 1.4 The Readers-Writers Problem
- 1.5 The Harsh Realities of Parallelization
- 1.6 Parallel Programming
- 1.7 Chapter Notes
- 1.8 Exercises
- I. Principles
- 2 Mutual Exclusion
- 2.1 Time
- 2.2 Critical Sections
- 2.3 2-Thread Solutions
- 2.4 The Filter Lock
- 2.5 Fairness
- 2.6 Lamport's Bakery Algorithm
- 2.7 Bounded Timestamps
- 2.8 Lower Bounds on the Number of Locations
- 2.9 Chapter Notes
- 2.10 Exercises
- 3 Concurrent Objects
- 3.1 Concurrency and Correctness
- 3.2 Sequential Objects
- 3.3 Quiescent Consistency
- 3.4 Sequential Consistency
- 3.5 Linearizability
- 3.6 Formal Definitions
- 3.7 Progress Conditions
- 3.8 The Java Memory Model
- 3.9 Remarks
- 3.10 Chapter Notes
- 3.11 Exercises
- 4 Foundations of Shared Memory
- 4.1 The Space of Registers
- 4.2 Register Constructions
- 4.3 Atomic Snapshots
- 4.4 Chapter Notes
- 4.5 Exercises
- 5 The Relative Power of Primitive Synchronization Operations
- 5.1 Consensus Numbers
- 5.2 Atomic Registers
- 5.3 Consensus Protocols
- 5.4 FIFO Queues
- 5.5 Multiple Assignment Objects
- 5.6 Read-Modify-Write Operations
- 5.7 Common 2 RMW Operations
- 5.8 The compareAndSet() Operation
- 5.9 Chapter Notes
- 5.10 Exercises
- 6 Universality of Consensus
- 6.1 Introduction
- 6.2 Universality
- 6.3 A Lock-Free Universal Construction
- 6.4 A Wait-Free Universal Construction
- 6.5 Chapter Notes
- 6.6 Exercises
- II. Practice
- 7 Spin Locks and Contention
- 7.1 Welcome to the Real World
- 7.2 Test-And-Set Locks
- 7.3 TAS-Based Spin Locks Revisited
- 7.4 Exponential Backoff
- 7.5 Queue Locks
- 7.6 A Queue Lock with Timeouts
- 7.7 A Composite Lock
- 7.7.1 A Fast-Path Composite Lock
- 7.8 Hierarchical Locks
- 7.9 One Lock To Rule Them All
- 7.10 Chapter Notes
- 7.11 Exercises
- 8 Monitors and Blocking Synchronization
- 9 Linked Lists: The Role of Locking
- 10 Concurrent Queues and the ABA Problem
- 11 Concurrent Stacks and Elimination
- 12 Counting, Sorting, and Distributed Coordination
- 13 Concurrent Hashing and Natural Parallelism
- 14 Skip lists and Balanced Search
- 15 Priority Queues
- 16 Futures, Scheduling, and Work Distribution
- 17 Barriers
- 18 Transactional Memory
- III. Appendix
- Bibliography
- Index.