HP OpenVMS Systems Documentation

Content starts here

OpenVMS Programming Concepts Manual


Previous Contents Index

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


Previous Next Contents Index