The x-kernel is an object-based framework for implementing network
protocols. It defines an interface that protocols use to invoke
operations on one another (i.e., to send a message to and receive a
message message from an adjacent protocol) and a collection of libraries
for manipulating messages, participant addresses, events, associative
memory tables (maps), threads, and so on.
Over the last several years, the x-kernel has served as a research
platform for investigating end-to-end issues related to computer
networks. Broadly speaking, our work has focused on the implementation
of network software running on the end systems connected to the network,
and on the design of the protocols running on those systems. Our work is
experimental in nature, meaning that we design, build, and measure
The x-kernel is also used in computer network courses to give students
hands-on experience with network protocols. Information about a new
textbook that uses the x-kernel to illustrate networking concepts---
Computer Networks: A Systems Approach.
Scout: A Communication-Oriented OS
As the National Information Infrastructure (NII) evolves, communication
will play an increasingly important role in computer systems. In fact, a
recent report on the NII rejects the term computer because of its
emphasis on computation, and instead choses to call these systems
information appliances that support communication, information storage,
and user interactions. In many cases, computation will simply be viewed
as something one does to I/O data as it passes through the system.
We are designing, implementing, and evaluating a new operating system,
called Scout, that is targeted for systems connected to the NII. Scout
provides a communication-oriented software architecture for building OS
code that is specialized for different information appliances. One of
its major goals is to provide performance that is both predictable and
scales with processor performance. We envision Scout being an
appropriate OS for the following types of information appliances:
Network devices, such as cameras, that are configured into
system-area (desk-area) networks.
Nodes that make up a scalable storage server connected to a
Hand-held and portable devices that must adapt to varying network
Multimedia workstations that receive, process/filter, and display
high-bandwidth video data.
Nodes of a distributed-memory multicomputer that is applied to
large scientific problems.
Application gateways that forward, and sometimes filter, data.
Scout is based upon the concept of a path, which is essentially the
extension of a network connection into the host operating system. Scout
makes the path its primary abstraction, with resource allocation,
scheduling, and fault-isolation done on a per-path basis. Thus, an
application using Scout can associate with a given path all the
resources---CPU, memory, bus, cache---necessary to provide the same
quality of service as provided by the network connection it is attached
Scout is designed to scale with increasing processor performance.
Current operating systems fail to scale because OS code differs from the
standard application code for which most processors and compilers are
optimized. Scout will address this problem by developing operating
system specific compiler technology. This technology will take
advantage of the code characteristics specific to operating systems that
are not currently exploited in modern compilers.