Sprite & V kernel evaluations

Yod (h13nguye@ieng9.ucsd.edu)
Thu, 4 May 2000 03:08:09 -0700 (PDT)

Henry H. Nguyen
Title: The Distributed V Kernel and its Performance for Diskless Workstations

V kernel, developed at Stanford, is a message-oriented kernel that provides a
uniform abstraction between local and network interprocess communication.

The physical structure of the system is a collection of SUN workstations
interconnected by Ethernet over a local network. These workstations are
described as diskless workstations, all secondary storage for the system is
provided by backend file servers.

The advantages of diskless workstations model are: (1) lower hardware cost
per workstation, (2) simpler maintenance and economies of scale with shared
file servers, (3) little or no memory or processing overhead on the workstation
for file system and disk handling, (4) fewer problems with replication,
consistency and distribution of files.

Interprocess communication is very important for this system, as it should be
for systems with networked interconnection. Processes are identified by their
32 bits unique process identifier (pid), and the communication between processes
are by messages which are all fixed at 32 bytes in length. Send, receive,
reply are some of the functions that the ipc of this system has to offer. And
the uniform abstraction between local and network interprocess communication
is provided by having Send calls Nonlocalsend when Send fails in the local
workstation, the same can almost be said for receive.

Another interesting aspect of this paper about the V kernel system is all the
statistical analysis of the system. Using the notion of network penalty,
assessments were made on (1) the cost of remote operations versus the cost of
the corresponding local operations, (2) the cost of file access using V kernel
remote operations versus the cost for other means of network file access. The
kernel IPC performance is presented in terms of the times for message exchanges
and the data transfer operations.

Title: The Sprite Network Operating System

In one sentence, Sprite is an operating system that implements a set of
kernel calls that provide sharing, flexibility, and high performance to
networked workstations (this is straight from the paper).

Sprite was developed at Berkeley and modeled closely to Berkeley's better
known operating system, Unix. The three motivations behind the development
of the Sprite operating system are: networks, large memories, and multi-

According to the paper, Sprite provides complete network transparency.
Which is to say that applications running on different systems and applications
running on the same system behave in the same manner, from programmers point
of view. Files or I/O devices are accessed in the same manner whether they
are local or remote. And the notion of Name Transparency allows files in
Sprite to be moved from one machine to another without changing their names.
Proc_Migrate, a Sprite system call that will move processes from one machine
to another machine, is also transparent to programmers.

Sprite's kernels can be thought of as Unix kernels with two modifications:
Multithreading and Remote procedure calls (RPC). With multithreading, Sprite's
kernels may execute several processes in a single kernel at the same time.
RPC in Sprite allows kernels from different workstations to invoke each others,
and the communication between kernels from different workstations is through
network packages and fragmentations.

Sprite manages the file system with a single hierarchy, a tree structure, which
is copied for all the domains. Each kernel has a private prefix table that
maintain and manage the tree structure of the file system.

Cache and virtual memory are two more important aspects of Sprite. Sprite uses
cache to improve file system performance by eliminating disk accesses and
network transactions, and cache consistency are guarantee by the system through
two practices: version numbers and disabling of client caching on file. Backing
storage, sticky segments, double caching are all part of Sprite's virtual
memory implementation.