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)
                Required Code Checks
                Using the Code Analysis Tool
                Characteristics of Noncompliant Code
                Coding Requirements
                Compiler Versions
                Interlocked Memory Sequence Checking for the MACRO--32 Compiler
                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
                Example of Event Flag Services
         6.6.6         Using Common Event Flags
                Using the name Argument with SYS$ASCEFC
                Temporary Common Event Flag Clusters
                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     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
                Enqueue Limit Quota (ENQLM)
                Sub-Resources and Sub-Locks
                Resource Hash Table
                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.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
                Deferring Buffer Writes
                Buffer Caching
         7.6.3         Choosing a Buffer-Caching Technique
     7.7     Example of Using Lock Management Services

Previous Next Contents Index