Internals II
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 course discusses some of the interrelationships between code, data structures, and synchronization techniques used in the operating system. System managers and application programmers will find useful technical background to assist them in their roles. Topics will include the effects of altering certain SYSGEN parameters, resource allocation, and implications of granting privileges.
Course Objectives
Upon completion of the course, students should be able to:
- Know the data structures that constitute a process and examine them using SDA
- Understand the OpenVMS scheduling mechanism and change system parameters that affect scheduling
- Find out the reasons for processes entering and leaving wait states
- Explain and examine the contents of OpenVMS virtual address space
- Analyze process and system stalls caused by process resource wait states
- Describe the activities occurring in the various OpenVMS access modes
-
Prerequisites
- OpenVMS Programming Features or equivalent experience
- OpenVMS Internals I
- The ability to read Macro
- The ability to program in C
Curriculum
Course Outline
Internals Review Big Picture
- Calling standard
- Process structures
- Locating structures
- Kernel threads
- System mechanisms
- AST delivery
- Synchronization
- Nonpaged pool summary
Execlets
- Modular executive
- Granularity hint regions
- Building an execlet
Debugging Tools
- Bugchecks
- SDA and Clue with crashes
- Debugging tools available
- System code debugger
- SDA extensions
- I/O tracing
- PC sampling
- Mutex tracing
- tr_print debugging
- SDA extension routines
OpenVMS Scheduling
- Thread states
- Computable queries
- Boost classes
- Report System Event (RSE)
- Quantum end activities
- Class scheduler
Resource Wait States
- Resource wait states
- RWAST table
- RWMBX waits
- RWSCS waits
- Mutex waits
Process/Kernel Thread Creation and Deletion
- Techniques for creating a process
- PQL parameters
- Process types
- Process exit handler support
- Kernel thread creation
- Kernel thread deletion
I/O: Channel Assignment and FDT Routines
- General terms
- Paths from I/O initiation to completion
- Channel assignment
- Data structures involved in channel assignment
- I/O database lookup routines
- $QIO routine processing
I/O: Start I/O to I/O Completion
- Start I/O routine
- I/O post-processing
- Kernel processes
- Kernel process blocks
- Using KP service routines
- Extended file cache
Multiprocessing Issues
- CPU sanity timeout crashes
- Inter-processor interrupts (IPIs)
Scheduling and I/O Big Picture
- Scheduling queries
- Rescheduling interrupt
- Reporting an event
- Channel assignment
- FDT routines
- Start I/O
- I/O post-processing
- Cluster I/O