Course type
Course location
Course dates
Full course price

This course is designed to examine the components, structures, and mechanisms of the OpenVMS operating system. It is intended for those students requiring an extensive understanding of these areas. This part of the course lays the foundations for understanding the mechanisms that will be used throughout the rest of the internals offerings at a programming level. The course will use the System Dump Analyzer to illustrate the concepts presented in the course materials. The majority of the code will be written in VSI C and will be current as OpenVMS Version 8.4-2.


  • OpenVMS Programming Features or equivalent experience
  • The ability to read Macro
  • The ability to program in C

Course Objectives

Upon completion of the course, students should be able to:

  • Describe and differentiate between system context and process context
  • Describe process creation and supporting process-related data structures
  • Describe the implementation of selected interrupt service routines, including AST delivery, scheduling, hardware clock, and software timer routines
  • Describe the processing and roles of interrupts and exceptions on OpenVMS
  • Describe the roles of the following synchronization techniques: IPL, spinlocks, mutexes, and locks
  • Describe the data structures that constitute a process and examine them using SDA

Course Audience

OpenVMS applications programmers
OpenVMS system programmers

Course Outline

  • Data structures
  • Data structure fields
  • Linked lists
  • Stacks
  • Asynchronous events and context
  • Synchronization
  • OpenVMS symbolic naming conventions
  • CISC vs. RISC architectures
  • Computer architectures
  • Alpha RISC architecture overview
  • Privileged architecture library
  • VAX vs. Alpha architecture
  • Data representation
  • Floating point data representation
  • Instruction formats
  • Data alignment issues
  • Alpha calling standard
  • Descriptors
  • Alpha calling standard mechanics
  • Procedure descriptors
  • Variable-size stack frame
  • General non-privileged PALcode
  • OpenVMS queues
  • OpenVMS internal processor registers
  • Atomicity
  • Unintentionally shared data
  • Read/write ordering
  • Debugging tools available
  • SDA requirements and uses
  • Command summary
  • Commonly used SDA SHOW options
  • Symbols and operators
  • CLUE
  • Process concepts
  • The Process and kernel threads
  • Process data structures overview
  • Job Information Block (JIB)
  • Kernel threads
  • PCB vector table
  • Virtual address space
  • Interrupts and exceptions
  • Processor status register
  • SCB
  • OpenVMS access modes
  • Change mode instructions
  • System service dispatching
  • The Change Mode system services
  • Using IPL for synchronization
  • Symmetric multiprocessing systems
  • Spinlock acquire timeouts
  • Mutual exception semaphores (mutexes)
  • Mutex tracing
  • Dynamic memory mechanisms
  • Pool reclamation
  • AST concepts
  • Timer queue entries
  • Timer queue entry changes
  • Distributed locking mechanism
  • Dynamic resource remastering
  • Pre-v8.3 dynamic resource remastering
  • v8.3 lock manager changes
  • Deadlock detection in a cluster
  • Subsecond deadlock wait
  • Lock review
  • Monitoring lock activity
  • Resolving lock resource contention
  • Dedicated CPU lock manager
  • Dedicated CPU lock manager interaction
  • Calling standard
  • Process structures
  • Locating structures
  • Kernel threads
  • System mechanisms
  • AST delivery
  • Synchronization
  • Nonpaged pool summary

Instructors in this course

Dennis O'Brien

40+ years of OpenVMS support and teaching experience, founder of the Bruden Corporation, author of OpenVMS, HP-UX, Tru64 UNIX, and C Programming courses and books.
Languages: English