Re: Paper Evaluations

Arvind Santhanam (arvind@cwc.ucsd.edu)
Thu, 4 May 2000 08:05:28 -0700 (PDT)

V KERNEL
--------
The distributed V kernel is a message oriented kernel that
provides uniform local and network interprocess communication. It uses
diskless workstations in tandem with file servers network wide, and use of
interprocess communication to achieve this goal. The V kernel supports a
rich set of primitives for supporting IPC efficiently. The advantages of V
kernel is its ability to run on cheaper machines without disk or
micro-code support, although microcoding the kernel would improve its
efficiency tremendously. The justification that one pays a minimum network
penalty during IPC between remote nodes is understandable, although . The
great benefit of using diskless workstations is that more workstaions can
be added by adding more fileservers to commensurate the effect -->scalable
LANs. The V kernel also provides a strong separation between processes by
limiting IPC to the kernel IPC primitives. An extensive simulation
conducted on this system is effective although it would be desirable to
see a tabular comparison of various OS's of that time before one could
hazard a judgement. The use of retransmission (timeouts) of messages and
piggybacking are slightly more sophisticated than in other systems that
support IPC.

The major disadvantage could be the overhead of performing all
file accesses across the network. This would in general not scale very
well. Although this approach avoids replication and bandwidth in LANs is
not the bottleneck, file accesses are very frequent and remote invocation
doesn't seem to be the most clever approach for file access. Use of
cahcing would help improve the turnaround time for file access but thats a
feature overlooked (plausibly because large and fast caches were not
available those days).

SPRITE
------

The goal of Sprite is to implement a distributed OS that provides
sharing, flexibility and high performance to networked workstations. The
driving forces for such an OS is due to the availability of large
memories, multiprocessor machines and the advent of local area networks
with high bandwidth connectivity. Sprite like LOCUS provides full network
transparency. A single file hierarchy is uniformly accessible to all
workstations. Interaction between processes is achieved using shared
memory and this allows for efficiency and a high degree of concurrency.

The FORK_PROC in Sprite is another optimization where data segment
of the parent process is either completely shared by the child or none of
it is shared at all. Multithreading is a concept that is supported by
Sprite, and has lived on ever since. This improves the efficiency of the
system as more processes may execute in the kernel although implementing
it might be a little complicated. RPC exploits the high bandwidth
availability in local area networks although fragmentation and reassembly
(though unavoidable for large data transfers) are definite overheads.
Sprite also expects all the kernels in the network to trust each other,
there's no encryption supported at all.

The use of prefix tables is an interesting notion introduced in
this paper and its greatest advantage is that it can be dynamically and
automatically updated with changes in system configuration. THe file
system is similar to the UNIX file system, in fact for the most part all
features are very similar to the ones supported in UNIX. This idea is used
in doing IP lookups (longest prefix matching) for forwarding packets to
their corresponding destinations.

Use of Caching of file accesses is another feature that augments
system performance. The availability of large caches and network bandwidth
can make RPC's quite efficient. Maintaining cache consistency is an
inherent problem and can potentially slow down system activity although
generally the OS gets large performance dividends.

Virtual Memory is simplified by using ordinary files for backing
store instead of a private partition for each workstation, this can
achieve greater efficiency. Double caching is a consequent problem and
must be avoided. The program code on exiting does not get evicted from the
main memory immediately, this cuts the program loading time for frequently
used programs. The virtual memory and the file system harmoniously
cooperate to provide a robust OS.

Process migration is supported by Sprite, and this can be done
manually or left totally upto the OS. Load balancing is a common feature
in most OS's of those times including Sprite. Scalability is one issue
that has not been addressed although for LAN's Sprite seems to scale well.
I presume the address protection schemes used are the same as seen in
UNIX.