Nemesis publications

Main Nemesis page
Download the Nemesis distribution pre-release.
Nemesis Kernel Overview
[online][gzipped postscript 135.50 KB]
A technical overview of the core of Nemesis.
Pegasus II Project Overview
[online][gzipped postscript 28.48 KB]
An overview of the main research project that supports the developemnt of Nemesis
The Design and Implementation of an Operating System to Support Distributed Multimedia Applications
Ian Leslie, Derek McAuley, Richard Black, Timothy Roscoe, Paul Barham, David Evers, Robin Fairbairns, and Eoin Hyden
[online][gzipped postscript 119.64 KB]
Support for multimedia applications by general purpose computing platforms has been the subject of considerable research. Much of this work is based on an evolutionary strategy in which small changes to existing systems are made. The approach adopted here is to start ab initio with no backward compatibility constraints. This leads to a novel structure for an operating system. The structure aims to decouple applications from one another and to provide multiplexing of all resources, not just the CPU, at a low level. The motivation for this structure, a design based on the structure, and its implementation on a number of hardware platforms is described.
Operating System Support for Distributed Multimedia
Sape Mullender, Ian Leslie and Derek McAuley
[online][gzipped postscript 70.63 KB]
Multimedia applications place new demands upon processors, networks and operating systems. While some network designers, through ATM for example, have considered revolutionary approaches to supporting multimedia, the same cannot be said for operating systems designers. Most work is evolutionary in nature attempting to identify additional features that can be added to existing systems to support multimedia. Here we describe the Pegasus project's attempt to build an operating system from the ground up with multimedia support as a prime objective.
Linkage in the Nemesis Single Address Space Operating System
Timothy Roscoe
[online][gzipped postscript 61.17 KB]
The recent interest in single address space operating systems has resulted in a number of papers, most of which gloss over the issues of linking programs to run in multiple protection domains. Some of the confusion about 64-bit address spaces is due to the almost pervasive use of UNIX and UNIX-like operating systems (such as Mach, Chorus and Amoeba) and languages with poor enforcement of abstraction like C and C++. This paper describes some of the linkage structure of Nemesis, a multi-service operating system being developed as part of the Pegasus project. Nemesis provides a simple and efficient mechanism for program linkage which provides rich sharing of text at a level of individual object classes.
CLANGER: An Interpreted Systems Programming Language
Timothy Roscoe
[online][gzipped postscript 54.21 KB]
CLANGER is a powerful, yet simple, command language for the Nemesis operating system. It uses runtime type information to interface directly with operating system components. CLANGER is a combination of command-line interpreter, scripting language, debugger and prototyping tool. This paper describes why such a language is possible, how it is being implemented, and outlines the language as it currently stands.
A Fresh Approach to File System Quality of Service
Paul Barham
[online][gzipped postscript 115.99 KB]
This paper describes a file system structure for supporting Quality of Service (QoS) guarantees. The device driver model clearly separates control and data path operations and presents a low level of abstraction. The data path module provides translation and protection of I/O requests enabling the file system layers to be executed as unprivileged code within shared libraries. Scheduling of low level operations within the device driver is used to provide isolation between clients and Quality of Service guarantees.
Protocol Implementation in a Vertically Structured Operating System
Richard Black, Paul Barham, Austin Donnelly, and Neil Stratford
[online][gzipped postscript 51.24 KB]
A vertically structured Operating System is one in which neither the ``kernel'' nor ``servers'' perform work on behalf of applications - the former because it exists only to multiplex the CPU, and the latter in order to avoid Quality of Service interference between the applications. Instead, wherever possible, the applications perform all of their own processing. Such a vertical structure provides many advantages for applications but leads to some interesting problems and opportunities for protocol stack implementation. This paper describes the techniques we used in our protocol implementation and the benefits that the vertical structure provided.
Self-Paging in the Nemesis Operating System
Steven Hand
[online][gzipped postscript 150.84 KB]
A new audio device driver abstraction
Dickon Reed
Proceedings of the Network and operating system support for distributed audio and video workshop, 1998
[online][gzipped postscript 55.68 KB]
Traditional audio device drivers are unable to provide low latency audio services and often do not provide audio mixing services. High quality audio has, compared to other media types, relatively low bandwidth, but is very sensitive to latency and errors. This paper presents a device driver abstraction that exploits the low bandwidth and constant bit rate of audio to provide multiple channels of low latency audio efficiently. It provides applications with a great deal of flexibility with regards to latency, blocking behaviour and mixing.
Controlling run-time compilation
Timothy Harris
[gzipped postscript 43.20 KB]
This paper describes a technique for integrating run-time compilation which is effectively pause free and for which the worst-case impact can be bounded. Three extensions to a JVM implementation are used. Firstly, a new scheduler allows the allocation of CPU time to threads to be controlled. Secondly, a code generator provides a mechanism for run-time compilation. Finally, a control interface allow application-specific compilation policies to be specified. By defining a compilation policy in which native code is generated in a designated compiler thread with a limited CPU allocation, it is possible to bound the worst-case impact of the compiler.
Operating System Support for Quality of Service
Eoin Hyden
[online][gzipped postscript 688.82 KB]
Technical Report 340.
Explicit Network Scheduling
Richard Black
[online][gzipped postscript 300.04 KB]
Technical Report 361
The Structure of a Multi-Service Operating System
Timothy Roscoe
[online][gzipped postscript 403.18 KB]
Technical Report 376
Devices in a Multi-Service Operating System
Paul Barham
[online][gzipped postscript 1.50 MB]
Technical Report 403
The Nemesis Release Notes
Dickon Reed
[online][gzipped postscript 314 bytes]
Contains the Nemesis Free Licensing Terms and instructions for downloading and building Nemesis.
Build System Guide
Dickon Reed
[online][gzipped postscript 76.10 KB]
dpatch manual
Dickon Reed
interface reference manual
Nemesis documentation collection
[gzipped postscript 319.17 KB]
Contains a collection of Nemesis documents including an overview, tutorial and several reference manuals
The Nemesis Quickstart Distribution
[gzipped tar 2.87 MB]
The Nemesis quickstart pack, containing all the special tools and source you need to build Nemesis.
Nemesis Presentation Slides
Dickon Reed
Protocol Implementation in a Vertically Structured Operating System
Richard Black and Paul Barham and Austin Donnelly and Neil Stratford
November 1997

Autogenerated by xmltophys on Sat Feb 5 18:19:10 2000 from file nemesis.xml dated Sat Feb 5 18:17:27 2000