This document details the design and implementation of the PATHWORKS for ULTRIX File Server, a product that integrates personal computers (PCs) with the ULTRIX operating system over a local area network (LAN). Operating on a client-server model, it provides file, print, mail, and time services to client PCs, supporting both TCP/IP and DECnet transport protocols.
Key design aspects and considerations include:
- Process Model: It employs a multiple-process model (one server process per client) to handle ULTRIX's limitations on open files and take advantage of multiprocessing. A central administration process (
pcsaadmd) manages server initialization, data, and requests, communicating with file server processes primarily via shared memory (for time-critical data) and message queues.
- Network Interface: The server utilizes the socket interface for direct, high-performance communication with ULTRIX. It handles the differences between stream-based (TCP/IP) and message-based (DECnet) protocols by re-creating Server Message Block (SMB) message boundaries where necessary.
- File System Emulation (DOS on ULTRIX): A major challenge was mapping DOS file system behaviors to ULTRIX:
- File Name Mapping: It converts DOS's case-insensitive 8.3 format to ULTRIX's case-sensitive names (typically lowercase).
- DOS Attribute Mapping: DOS attributes (read-only, hidden, archive, system) are mapped to specific ULTRIX file attributes.
- Byte Range Locking: Due to differences between DOS's mandatory locking and ULTRIX's advisory locking, and issues with integer representation, a private lock manager was developed for DOS applications.
- Open File Mode Locking: DOS open modes were carefully mapped to ULTRIX's SHARED_ACCESS and EXCLUSIVE_ACCESS modes.
- Printing: The server allows PC clients transparent access to native ULTRIX print queues, supporting various printers via print filters and adding timed scheduling capabilities.
- Performance Optimization: Key optimizations include write-behinds (acknowledging writes before disk completion) to enable parallelism between client data generation and server disk writes. Heuristics were also implemented to manage persistent, failing lock requests, reducing network traffic and CPU usage.
- Security and Configuration: It leverages ULTRIX's security features for user authentication. Server configuration, including shared memory sizing, is controlled via parameters in the
lanman.ini file. Information is logged to both ULTRIX syslog and LAN Manager-compatible audit logs.
- Hardware Adaptations: Minor adjustments were made for memory allocation differences between VAX and RISC architectures.
The PATHWORKS for ULTRIX File Server's design aimed to create an efficient, manageable, and seamlessly integrated distributed computing environment for both PC and ULTRIX systems.