The art of multiprocessor programming

This book is the first comprehensive presentation of the principles and tools available for programming multiprocessor machines. It is of immediate use to programmers working with the new architectures. For example, the next generation of computer game consoles will all be multiprocessor-based, and...

Descripción completa

Detalles Bibliográficos
Autor principal: Herlihy, Maurice (-)
Otros Autores: Shavit, Nir, 1959-
Formato: Libro electrónico
Idioma:Inglés
Publicado: Burlington, MA : Oxford : Morgan Kaufmann ; Elsevier Science [distributor] 2008.
Edición:1st edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009627518506719
Tabla de Contenidos:
  • Front Cover; The Art of Multiprocessor Programming; Copyright Page; Table of Contents; Acknowledgments; Preface; Chapter 1. Introduction; 1.1 Shared Objects and Synchronization; 1.2 A Fable; 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; Part I: Principles; Chapter 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 Locations2.9 Chapter Notes; 2.10 Exercises; Chapter 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; Chapter 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; Chapter 5. The Relative Power of Primitive Synchronization Operations
  • 5.1 Consensus Numbers5.2 Atomic Registers; 5.3 Consensus Protocols; 5.4 FIFO Queues; 5.5 Multiple Assignment Objects; 5.6 Read-Modify-Write Operations; 5.7 Common2 RMW Operations; 5.8 The compareAndSet() Operation; 5.9 Chapter Notes; 5.10 Exercises; Chapter 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; Part II: Practice; Chapter 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 Backoff7.5 Queue Locks; 7.6 A Queue Lock with Timeouts; 7.7 A Composite Lock; 7.8 Hierarchical Locks; 7.9 One Lock To Rule Them All; 7.10 Chapter Notes; 7.11 Exercises; Chapter 8. Monitors and Blocking Synchronization; 8.1 Introduction; 8.2 Monitor Locks and Conditions; 8.3 Readers-Writers Locks; 8.4 Our Own Reentrant Lock; 8.5 Semaphores; 8.6 Chapter Notes; 8.7 Exercises; Chapter 9. Linked Lists: The Role of Locking; 9.1 Introduction; 9.2 List-Based Sets; 9.3 Concurrent Reasoning; 9.4 Coarse-Grained Synchronization; 9.5 Fine-Grained Synchronization
  • 9.6 Optimistic Synchronization9.7 Lazy Synchronization; 9.8 Non-Blocking Synchronization; 9.9 Discussion; 9.10 Chapter Notes; 9.11 Exercises; Chapter 10. Concurrent Queues and the ABA Problem; 10.1 Introduction; 10.2 Queues; 10.3 A Bounded Partial Queue; 10.4 An Unbounded Total Queue; 10.5 An Unbounded Lock-Free Queue; 10.6 Memory Reclamation and the ABA Problem; 10.7 Dual Data Structures; 10.8 Chapter Notes; 10.9 Exercises; Chapter 11. Concurrent Stacks and Elimination; 11.1 Introduction; 11.2 An Unbounded Lock-Free Stack; 11.3 Elimination; 11.4 The Elimination Backoff Stack
  • 11.5 Chapter Notes