Chapter 5 |
5
|
Symmetric Multiprocessing (SMP) Systems
|
5.1
|
Introduction to Symmetric Multiprocessing
|
5.2
|
CPU Characteristics of an SMP System
|
5.2.1
|
Booting an SMP System
|
5.2.2
|
Interrupt Requests on SMP System
|
5.3
|
Symmetric Multiprocessing Goals
|
Chapter 6 |
6
|
Synchronizing Data Access and Program Operations
|
6.1
|
Overview of Synchronization
|
6.1.1
|
Threads of Execution
|
6.1.2
|
Atomicity
|
6.2
|
Memory Read and Memory Write Operations for VAX and Alpha
|
6.2.1
|
Accessing Memory
|
6.2.2
|
Ordering of Read and Write Operations
|
6.2.3
|
Memory Reads and Memory Writes
|
6.3
|
Memory Read and Memory Write Operations for I64 Systems
|
6.3.1
|
Atomic Semaphore Instructions on I64
|
6.3.2
|
Accessing Memory on I64
|
6.3.3
|
Ordering of Read and Write Operations for I64 Systems
|
6.4
|
Memory Read-Modify-Write Operations for VAX and Alpha
|
6.4.1
|
Uniprocessor Operations
|
6.4.2
|
Multiprocessor Operations
|
6.5
|
Memory Read-Modify-Write Operations for I64 Systems
|
6.5.1
|
Preserving Atomicity with MACRO-32
|
6.6
|
Synchronization Primitives
|
6.6.1
|
Interrupt Priority Level
|
6.6.2
|
LDx_L and STx_C Instructions (Alpha Only)
|
6.6.3
|
Interlocking Memory References (Alpha Only)
|
6.6.3.1
|
Required Code Checks
|
6.6.3.2
|
Using the Code Analysis Tool
|
6.6.3.3
|
Characteristics of Noncompliant Code
|
6.6.3.4
|
Coding Requirements
|
6.6.3.5
|
Compiler Versions
|
6.6.3.6
|
Interlocked Memory Sequence Checking for the MACRO--32 Compiler
|
6.6.3.7
|
Recompiling Code with ALONONPAGED_INLINE or LAL_REMOVE_FIRST Macros
|
6.6.4
|
Interlocked Instructions (VAX Only)
|
6.6.5
|
Memory Barriers (Alpha Only)
|
6.6.6
|
Memory Fences (I64 Only)
|
6.6.7
|
PALcode Routines (Alpha Only)
|
6.6.8
|
I64 Emulation of PALcode Built-ins
|
6.7
|
Software-Level Synchronization
|
6.7.1
|
Synchronization Within a Process
|
6.7.2
|
Synchronization in Inner Mode (Alpha and I64 Only)
|
6.7.3
|
Synchronization Using Process Priority
|
6.7.4
|
Synchronizing Multiprocess Applications
|
6.7.5
|
Synchronization Using Locks
|
6.7.6
|
Writable Global Sections
|
6.8
|
Using Event Flags
|
6.8.1
|
General Guidelines for Using Event Flags
|
6.8.2
|
Introducing Local and Common Event Flag Numbers and Event Flag Clusters
|
6.8.3
|
Using Event Flag Zero (0)
|
6.8.4
|
Using EFN$C_ENF Local Event Flag
|
6.8.5
|
Using Local Event Flags
|
6.8.5.1
|
Example of Event Flag Services
|
6.8.6
|
Using Common Event Flags
|
6.8.6.1
|
Using the name Argument with SYS$ASCEFC
|
6.8.6.2
|
Temporary Common Event Flag Clusters
|
6.8.6.3
|
Permanent Common Event Flag Clusters
|
6.8.7
|
Wait Form Services and SYS$SYNCH
|
6.8.8
|
Event Flag Waits
|
6.8.9
|
Setting and Clearing Event Flags
|
6.8.10
|
Example of Using a Common Event Flag Cluster
|
6.8.11
|
Example of Using Event Flag Routines and Services
|
6.9
|
Synchronizing System Services Operations
|
Chapter 7 |
7
|
Synchronizing Access to Resources
|
7.1
|
Synchronizing Operations with the Lock Manager
|
7.2
|
Concepts of Resources and Locks
|
7.2.1
|
Resource Granularity
|
7.2.2
|
Resource Domains
|
7.2.3
|
Resource Names
|
7.2.4
|
Choosing a Lock Mode
|
7.2.5
|
Levels of Locking and Compatibility
|
7.2.6
|
Lock Management Queues
|
7.2.7
|
Concepts of Lock Conversion
|
7.2.8
|
Deadlock Detection
|
7.2.9
|
Lock Quotas and Limits
|
7.2.9.1
|
Enqueue Limit Quota (ENQLM)
|
7.2.9.2
|
Subresources and Sublocks
|
7.2.9.3
|
Resource Hash Table
|
7.2.9.4
|
LOCKIDTBL System Parameter
|
7.3
|
Queuing Lock Requests
|
7.3.1
|
Example of Requesting a Null Lock
|
7.4
|
Advanced Locking Techniques
|
7.4.1
|
Synchronizing Locks
|
7.4.2
|
Notification of Synchronous Completion
|
7.4.3
|
Expediting Lock Requests
|
7.4.4
|
Lock Status Block
|
7.4.5
|
Blocking ASTs
|
7.4.6
|
Lock Conversions
|
7.4.7
|
Forced Queuing of Conversions
|
7.4.8
|
Parent Locks
|
7.4.9
|
Lock Value Blocks
|
7.4.10
|
Interoperation with 16-Byte and 64-Byte Value Blocks
|
7.5
|
Dequeuing Locks
|
7.6
|
Local Buffer Caching with the Lock Management Services
|
7.6.1
|
Using the Lock Value Block
|
7.6.2
|
Using Blocking ASTs
|
7.6.2.1
|
Deferring Buffer Writes
|
7.6.2.2
|
Buffer Caching
|
7.6.3
|
Choosing a Buffer-Caching Technique
|
7.7
|
Example of Using Lock Management Services
|