Internals I
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.
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
-
Prerequisites
- OpenVMS Programming Features or equivalent experience
- The ability to read Macro
- The ability to program in C
Curriculum
Course Outline
Internals Concepts
- Data structures
- Data structure fields
- Linked lists
- Stacks
- Asynchronous events and context
- Synchronization
- OpenVMS symbolic naming conventions
General Alpha Architecture
- CISC vs. RISC architectures
- Computer architectures
- Alpha RISC architecture overview
- Privileged architecture library
- VAX vs. Alpha architecture
Data Formats and General Instructions
- Data representation
- Floating point data representation
- Instruction formats
- Data alignment issues
OpenVMS Calling Standard
- Alpha calling standard
- Descriptors
- Alpha calling standard mechanics
- Procedure descriptors
- Variable-size stack frame
OpenVMS PAL Code
- General non-privileged PALcode
- OpenVMS queues
- OpenVMS internal processor register
Synchronization and Architectural Considerations
- Atomicity
- Unintentionally shared data
- Read/write ordering
Introduction to SDA
- Debugging tools available
- SDA requirements and uses
- Command summary
- Commonly used SDA SHOW options
- Symbols and operators
- CLUE
The Process
- 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
- Process concepts
- The Process and kernel threads
- Process data structures overview
- Job Information Block (JIB)
- Kernel threads
- PCB vector table
- Virtual address space
Programming and System Content
- 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
Process Context Synchronization
- 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
The Big Picture Review
- Calling standard
- Process structures
- Locating structures
- Kernel threads
- System mechanisms
- AST delivery
- Synchronization
- Nonpaged pool summary