This document, "OSF/1 Internals Volume II," provides an in-depth exploration of core components within the OSF/1 operating system, emphasizing its UNIX-like functionalities and parallelization strategies.
The document is organized into seven modules:
- File Systems (Module 5): Details the representation of open files using descriptors, system file tables, and vnodes, highlighting reference counting in a multithreaded environment. It covers Virtual File Systems (VFS) for integrating different file system types (S5, UFS, NFS), directory path searching with considerations for mount points and symbolic links, and the role of the buffer cache in concurrent I/O and data consistency. Specifics of S5, UFS (with its performance optimizations), and NFS (including stateless servers, client-side caching, RPC protocol, and concurrency issues) are also discussed.
- Device Drivers and Terminal I/O (Module 6): Explains special files for device access, addressing aliasing problems with shadow vnodes. It outlines dynamic configuration for loading and unloading drivers and modules at runtime, details major driver entry points for various I/O operations, and describes terminal I/O concepts such as internationalization, POSIX session management, and pseudo terminals.
- Streams (Module 7): Introduces Streams as a kernel-level mechanism for interprocess communication, analogous to shell pipelines. It covers stream components (heads, modules, drivers), their setup, linking, and multiplexing capabilities. The module elaborates on message flow, message types, and the implementation of Streams, with a significant focus on parallelization using various synchronization options and queues.
- Sockets (Module 8): Presents sockets as an extension of the I/O interface for interprocess communication, defining different socket types. It explains data management using
mbufs and mbclusters, handling memory shortages, the flow of control in IPC/Networking (including protocol stacks and kernel threads), and the data structures involved. It also describes how OSF/1 integrates both Streams and Sockets interfaces through the XTISO driver.
- Logical Volume Manager (Module 9): Describes the LVM's role as an abstraction layer for physical storage, enabling features like physical volume spanning, mirroring for performance and data redundancy, logical volume resizing, and bad-sector remapping. It covers the organizational structure of volume groups, logical extents, and physical extents, along with consistency management and request scheduling.
- Loader (Module 10): Focuses on the OSF/1 loader's capabilities, including support for multiple load formats, shared libraries, and dynamic loading into both user and kernel space. It explains symbol resolution using Known Package Tables (KPTs) and outlines the phases of the run-time load procedure.
- Security (Module 11): Discusses OSF/1's security architecture in the context of the "Orange Book" model, covering compliance and certification. It details the security components: auditing, Discretionary Access Control (DAC) with Access Control Lists (ACLs), Mandatory Access Control (MAC) with sensitivity labels, and the use of authorizations and privileges to control access and operations, noting the performance impact of security features.