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
|
6.2.1
|
Alignment
|
6.2.2
|
Granularity
|
6.2.3
|
Ordering of Read and Write Operations
|
6.2.4
|
Memory Reads and Memory Writes
|
6.3
|
Memory Read-Modify-Write Operations
|
6.3.1
|
Uniprocessor Operations
|
6.3.2
|
Multiprocessor Operations
|
6.4
|
Hardware-Level Synchronization
|
6.4.1
|
Interrupt Priority Level
|
6.4.2
|
LDx_L and STx_C Instructions (Alpha Only)
|
6.4.3
|
Using Interlocked Memory Instructions (Alpha Only)
|
6.4.3.1
|
Required Code Checks
|
6.4.3.2
|
Using the Code Analysis Tool
|
6.4.3.3
|
Characteristics of Noncompliant Code
|
6.4.3.4
|
Coding Requirements
|
6.4.3.5
|
Compiler Versions
|
6.4.3.6
|
Interlocked Memory Sequence Checking for the MACRO--32 Compiler
|
6.4.3.7
|
Recompiling Code with ALONONPAGED_INLINE or LAL_REMOVE_FIRST Macros
|
6.4.4
|
Interlocked Instructions (VAX Only)
|
6.4.5
|
Memory Barriers (Alpha Only)
|
6.4.6
|
PALcode Routines (Alpha Only)
|
6.5
|
Software-Level Synchronization
|
6.5.1
|
Synchronization Within a Process
|
6.5.2
|
Synchronization in Inner Mode (Alpha Only)
|
6.5.3
|
Synchronization Using Process Priority
|
6.5.4
|
Synchronizing Multiprocess Applications
|
6.5.5
|
Writing Applications for an Operating System Running in a Multiprocessor Environment
|
6.5.6
|
Synchronization Using Spin Locks
|
6.5.7
|
Writable Global Sections
|
6.6
|
Using Event Flags
|
6.6.1
|
General Guidelines for Using Event Flags
|
6.6.2
|
Introducing Local and Common Event Flag Numbers and Event Flag Clusters
|
6.6.3
|
Using Event Flag Zero (0)
|
6.6.4
|
Using EFN$C_ENF Local Event Flag
|
6.6.5
|
Using Local Event Flags
|
6.6.5.1
|
Example of Event Flag Services
|
6.6.6
|
Using Common Event Flags
|
6.6.6.1
|
Using the name Argument with SYS$ASCEFC
|
6.6.6.2
|
Temporary Common Event Flag Clusters
|
6.6.6.3
|
Permanent Common Event Flag Clusters
|
6.6.7
|
Wait Form Services and SYS$SYNCH
|
6.6.8
|
Event Flag Waits
|
6.6.9
|
Setting and Clearing Event Flags
|
6.6.10
|
Example of Using a Common Event Flag Cluster
|
6.6.11
|
Example of Using Event Flag Routines and Services
|
6.7
|
Synchronizing Operations with System Services
|
Chapter 7 |
7
|
Synchronizing Access to Resources
|
7.1
|
Synchronizing Operations with the Lock Manager
|
7.2
|
Using the Dedicated CPU Lock Manager (Alpha Only)
|
7.2.1
|
Implementing the Dedicated CPU Lock Manager
|
7.2.2
|
Enabling the Dedicated CPU Lock Manager
|
7.2.3
|
Using the Dedicated CPU Lock Manager With Affinity
|
7.2.4
|
Using the Dedicated CPU Lock Manager with Fast Path Devices
|
7.2.5
|
Using the Dedicated CPU Lock Manager on the AlphaServer GS Series Systems
|
7.3
|
Concepts of Resources and Locks
|
7.3.1
|
Resource Granularity
|
7.3.2
|
Resource Domains
|
7.3.3
|
Resource Names
|
7.3.4
|
Choosing a Lock Mode
|
7.3.5
|
Levels of Locking and Compatibility
|
7.3.6
|
Lock Management Queues
|
7.3.7
|
Concepts of Lock Conversion
|
7.3.8
|
Deadlock Detection
|
7.3.9
|
Lock Quotas and Limits
|
7.3.9.1
|
Enqueue Limit Quota (ENQLM)
|
7.3.9.2
|
Sub-Resources and Sub-Locks
|
7.3.9.3
|
Resource Hash Table
|
7.3.9.4
|
LOCKIDTBL System Parameter
|
7.4
|
Queuing Lock Requests
|
7.4.1
|
Example of Requesting a Null Lock
|
7.5
|
Advanced Locking Techniques
|
7.5.1
|
Synchronizing Locks
|
7.5.2
|
Notification of Synchronous Completion
|
7.5.3
|
Expediting Lock Requests
|
7.5.4
|
Lock Status Block
|
7.5.5
|
Blocking ASTs
|
7.5.6
|
Lock Conversions
|
7.5.7
|
Forced Queuing of Conversions
|
7.5.8
|
Parent Locks
|
7.5.9
|
Lock Value Blocks
|
7.6
|
Dequeuing Locks
|
7.7
|
Local Buffer Caching with the Lock Management Services
|
7.7.1
|
Using the Lock Value Block
|
7.7.2
|
Using Blocking ASTs
|
7.7.2.1
|
Deferring Buffer Writes
|
7.7.2.2
|
Buffer Caching
|
7.7.3
|
Choosing a Buffer-Caching Technique
|
7.8
|
Example of Using Lock Management Services
|