Experience with the Amoeba Distributed Operating System
Notes by Alin Dobra, april 1998. Based on previous notes by Kevin Walsh
Overview
-
Intended to be a modern operating system (use the best hardware)
-
Microkernel architecture
-
Most of the traditional "kernel services" implemented as servers
-
Extensive use of RPC to facilitate the distribution of services
-
Transparency for the user (good or bad thing?)
-
Creates the impression for user and processes that the collection of computers
is like a big computer
-
Trades resources for speed (see bullet file server, no virtual memory)
-
Relies on the fact that at the time of design the bottle neck was the CPU
and I/O not the network so an RPC was comparable with a system call
System architecture
-
Four components: workstations (one per user, disk-less), pool processors
(group of CPUs), specialized servers(file, directory, boot servers), gateways
(for WAN interface)
-
All the machines run the same kernel (multithreaded processes, communication,
I/O)
-
Support for multiple processor types (binary program files specify processor
type they can execute on)
-
User level (cooperative) multithreading
-
Anything is an object (files, memory segments, processes, etc.). Every
object has attached at least a capability (contains serverid, objectid,
rights bitmaps and checksum). Capabilities are manipulated in user level
so encryption is necessary (usage of one way functions)
-
Powerful and simple RPC implementation. Has only three primitives: get_request,
put_request and do_operation. Stubs can be generated with
AIL language
-
The system is much more transparent compared with the NFS mounting (IS
IT?)
-
Communication over WAN is transparent for user and processes. Clever use
of the gateways that intercept and transfer a message to the other side.
Servers
-
Memory and processor server: process creation, task distribution
-
Bullet server: the file server especially designed to be fast. Contiguous
file storage, caching at the level of file. Immutable files accessed through
capabilities (no naming service)
-
Directory server: offers naming for the file server (but not only).
Offers limited Access Control List like mechanisms (multiple capabilities
for an object).
Achievements
-
The performance is great. Very fast RPC (impressive results).
-
The idea to base anything on RPC seems good especially if RPC is fast
-
Very fast file system. Separating naming and storage and using immutability
for files give the boost in performance.
-
Reasonable good UNIX emulation
Drawbacks
-
No virtual memory (serious limitation for some classes of applications)
-
No preemptive tasks
-
No communication except RPC (not clear how to emulate streams, pipes, etc.
with RPC)
-
Possible problems for large system (some of the services do not scale well)
-
Garbage collection is a problem
-
Hard to interface with something else that's not Amoeba