PROJECT SUMMARY


AO Number: B530

Title of Effort: Application-Specific Operating Systems for High Performance Computing


Principal Investigators:
Prof. Brian N. Bershad
Prof. Craig Chambers
Prof. Susan Eggers


Address:
University of Washington
Department of Computer Science & Engineering
Box 352350
Seattle, WA 98195-2350
Phone:
(206) 543-1695
Fax:
(206) 543-2969
Email:
bershad@cs.washington.edu
chambers@cs.washington.edu
eggers@cs.washington.edu

Objective:

The goal of the SPIN project is to construct an operating system that offers applications efficient use of and safe, fine-grained control over a machine's logical and physical resources. SPIN enables applications to define system services and system service interfaces in an application-specific fashion. Any application requiring an operating system service, such as filing, scheduling, or memory management, will be able to describe the implementation of that service using a program written in a high-level language. The operating system will provide the infrastructure that allows the service program to execute safely, and with low-overhead.


Approach:

In SPIN, an application-specific service is implemented with code sequences that are installed into the kernel at runtime. These code sequences define alternative interfaces and enable alternative implementations of existing interfaces to demanding applications. A trusted compiler and safe language runtime environment ensure that the installed sequences do not violate system integrity.

The SPIN operating system uses three new technologies to achieve its goals:

  1. (1) extensibility mechanisms appropriate for complex systems software,

  2. (2) safe programming language constructs for operating systems, and

  3. (3) dynamic compilation for operating systems and applications.

The first of these technologies allows applications to install their extensions into a running operating system. The second ensures that the extensions do not violate the integrity of the base operating system or other applications running at the same time. The third makes it feasible, from the standpoint of code quality, to defer the binding of system modules and extensions until runtime. While these technologies are being developed in the context of the SPIN operating system, they will be transferable to other domains, where an architecture for safely and efficiently extending a base set of services is required.

Extensibility in SPIN is achieved through the use of an event-based invocation mechanism. Low-level kernel primitives and user-installed extensions raise events to signal important system transitions; kernel routines and user extensions register interest in and are subsequently invoked in response to these events. In this manner, the kernel primitives and the user extensions are decoupled from one another, enabling extensions to be added and removed as the kernel runs. The SPIN operating system includes a set of core operating systems services, such as virtual memory, networking, scheduling, and storage management, that have interfaces amenable to to an event-based extension model.

System extensions (and the operating system itself) are written in Modula-3, a modular programming language with a well-defined, type-safe subset. Extensions written in Modula-3 are guaranteed to conform to the interfaces against which they have been compiled, and are thus isolated from one another and from the kernel. With this guarantee, it becomes possible to link and run safely application extensions in the kernel. Part of this project involves extending Modula-3 so that the compiler may support a broader set of safety mechanisms.

SPIN applies dynamic compilation techniques to provide efficient dispatching of the run-time installed extensions. By compiling at run-time, when the exact set of extensions registering interest in a particular event is known, fast versions of event dispatchers can be produced; when the set of extensions interested in an event changes, the event dispatcher is recompiled. In addition, the procedure boundaries between kernel and extension code can be broken down through run-time inline-expansion. By making event dispatching cheap, events and spindles can be used aggressively to support highly flexible systems.


Recent Accomplishments:

Plans for Upcoming Year:

Technology Transition:

Overview Slides in postscript

Date Prepared:
10 AUG 95
melody@cs.washington.edu