OSF/1 Server

March 31, 1996
David Dion


Overview

The OSF/1 UNIX Server provides UNIX functionality for user-level programs running on SPIN. Moreover, as SPIN's most demanding client (at least so far), it provides an excellent stress test for kernel services. Finally, as the server port is being performed almost entirely via SPIN dynamically linked extensions, the OSF/1 server is a model of using kernel extensions for emulation.

The goal of the OSF/1 server is to run SPIN on desktop workstations, using it for day-to-day operations such as reading mail and developing code. In its current state, the server can be booted to single-user mode and used to run some basic programs.

Design and Implementation

The OSF/1 server in use was developed for the Mach microkernel. The first step in porting it to SPIN was the removal of reliance upon the Mach IPC message-passing interface. Mach messages were either removed or converted into system calls. Whenever possible, these changes were localized in the libmach library. This conversion represents the bulk of changes to the OSF/1 server code. Following are some early notes on retargeting the OSF/1 server for SPIN:

Simply transforming Mach messages into system calls did not complete the port of the OSF/1 server to SPIN. Although SPIN may provide some functionality similar to Mach, its interfaces differ substantially. Hence, SPIN dynamically linked extensions are used to emulate a Mach environment upon which the OSF/1 server executes.

The basic unit of emulation is the system call. When an application makes a system call, the Syscall event is raised in SPIN. A dynamically linked extension waiting for the Syscall event determines which system call has been made and takes appropriate action. This action could be either of the following:

Hence, the SPIN OSF/1 server implementation consists of two major parts. The first is the OSF/1 server itself. The bulk of the OSF/1 server is written in C and executes in the user-level. The second consists of SPIN dynamically linked extensions. These extensions are written in Modula-3 and execute in the kernel.

Using the OSF/1 Unix Server

Checking out and Building

The SPIN extensions can be checked out with other SPIN extensions. The OSF/1 server is not so easy. For checkout and build instructions, see Building the OSF/1 Server for SPIN. To simply use the OSF/1 server to run user-level programs, see User-Level Programs on SPIN. The remainder of this documentation will focus on the SPIN dynamically linked extensions which help emulate a Mach environment for the OSF/1 server.

Interfaces

The OSF/1 server extensions consist of the following interfaces (and associated modules):

Remaining Issues

The port of the OSF/1 Unix Server to SPIN is far from complete. Some near future work includes:


ddion@cs.washington.edu