[an error occurred while processing this directive]

HP OpenVMS Systems Documentation

Content starts here

HP 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 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


Previous Next Contents Index