Amoeba Distributed Operating System
Amoeba Distributed Operating System
What is Amoeba
Amoeba builds upon a traditional micro kernel. It supports true multithreading (kernel
controlled), segment based memory management. All Amoeba components communicate with
eachother over a standardized RPC (Remote Procedure Call) interface - simple but very
powerfull. No matter if a client or server thread is running in kernel or user mode - it uses the
same RPC interface. Always. Everywhere. This leads to a very clean and simple OS design,
very well suited for beginners.
Because Amoeba was designed from scratch with new concepts, never seen before, it
suffered from a lack of application programs. Therefore a POSIX-compliant UNIX emulation was
added. It makes porting UNIX programs much easier! Now, with additional changes, a huge
varity of application programs from the UNIX-world work under Amoeba:
X11 with applications, various compilers (gcc, ocaml, tcl/tk), bash shell, editors and many, many
more. Amoeba is ready to use! Of course not without (little) problems.
It's still in an sligthly experimental state, but ready to use. FSD-Amoeba is intended to
use for dedicated programmers only, and not for end users!
Highlights:
The history of modern computing can be divided into the following eras:
1970s: Timesharing (1 computer with many users)
1980s: Personal computing (1 computer per user)
1990s: Parallel computing (many computers per user)
80’s computers could be networked together and files could be shared between users
RPCs.
Parallel computing in the 90’s and today are used to share CPU resources among a
network of computer systems.
This concept is referred to as distributed computer systems or parallel computing
How can we exploit with the one-to-many computer system configuration?
The answer is Amoeba OS can solve this all problem.
Developed at the Vrije Universiteit Amsterdam, Netherland. Chief designer: Andrew S.
Tanenbaum; other developpers were Frans Kaashock, Sape J. Mullender, Robbert van
Renesse, Leendert van Doorn, Kees Verstoep and many, many more.
First proto release in 1983 (V1.0), last official release 1996 (V5.3)
Supports multiple architectures: 68k, i80386, SPARC
Virtual Amoeba Machine and Features in Amoeba
The next step: a virtual machine supplying the Amoeba concepts like RPC. Either running
natively under Amoeba, or under UNIX with the AMUNIX library together with the FLIP protocol
module. The VM is derived and build from OCaML. The great advantage: Amoeba programs
written in OCaML and compiled to bytecode can run independently from the underlying OS!
1. Design goals
One of the main goals of the Amoeba development was to design a transparent
distributed system that allows users to log into system as a whole:Transparency. That
means: Hiding the comlexities of a distributed system from the users. Amoeba users
should not be concerned about the number of processors in the system, nor must they
know the location of the other machines or servers (like the Filesystem server...).
Several machines connected over a network operate as a single system: Distribution.
Amoeba gives its users the illusion of interacting with a single, powerfull system.
Parallelism: On an Amoeba system, a single program or command can use multiple
processors to increase performance. The user simply requests an operation, and the
Amoeba OS decides the best way to execute the request. Amoeba will decide which
processor (or processors) are appropriate for the request, based on the current state of
the system. Additionaly, special development tools have been made for an Amoeba
environment that take advantage of the inherent parallelism. For example, Amoeba
supports a parallel 'make' program.
Peformance: Much effort was given to meet this goal!!!This is accomplished with a
newly developed High Performance network protocol called FLIP(Fast Local Internet
Protocol). When FLIP was developed, none of the current protocols provided adequate
support for distributed systems. FLIP performs clean, simple and efficient
communication between distributed nodes.
Development from the scratch; Amoeba doesen't based on any existing operating
system
Amoeba interact with the user as a UNIX-like Timesharing System
2. System architecture
1. Workstations
2. Pool Processors
3. Specialized Servers (File server...)
4. WAN Gateways
Objects
Abstract data types with data and behaviors.
Amoeba primarily supports software objects, but hardware objects also exist.
Each object is managed by a server process to which RPCs can be sent. Each
RPC specifies the object to be used, the operation to be performed, and any
parameters to be passed
Capabilities
128-bit value object description created and returned to the caller when the
object is created.
Subsequent operations on the object require the user to send its capability to the
server to both specify the object and prove the user has permission to
manipulate the object.
In more detail:
An example for a processor pool: About 60 -80 Sun motherboards were build into a rack
system at the Vrije Univerity. Of course cheap and normal IBM-PC 's can be used as CPU-
Servers, too!
A small piece of code, called the microkernel, is present on all Amoeba machines and they run
nearly the same microkernel which handles
Low level I/O management
Communication between processes or threads
Low level Memory management
Process and thread (kernel/user space) management
Server processes (see above) supply other operating system services and generally run in user
mode. This job specialization allows the microkernel to be small and efficient, increases
reliability, allows as much as possible of the operating system to run as user processes,
providing flexibility and no extra burdens are added to individual CPUs with faciliites that it
doesn't need.
Threads
Each process has its own address space and contains multiple threads.
These threads have their own stack and program counter, but share the global data and code of
the process.
Amoeba uses stubs to access remote services which hide the details of the remote services
from the user. A special language in Amoeba called the Amoeba Interface Language (AIL)
generates these stubs automatically. The stubs will then marshal parameters and hide the
communication details from the user.
Process concept:
Memory management:
I/O-Managment:
For each I/O-Device attached to a machine, there is a device driver in the kernel.
The driver manages all I/O for the device.
All drivers are static linked to the kernel; no dynamic Module support
Mostly the communication with Device-Drivers are performed through the
standard message protocoll (like the rest of the system in user space)
Communication:
Two forms of communication are provided:
o Point-to-Point communication
o Group communication
Group Communication
o Amoeba provides a mechanism that allows all receivers in a one-to-many
configuration to receive a transmitted message in the same order. This
simplifies parallel processing and distributed programming problems.
Amoeba
Programs can execute wherever OS decides.
No concept of host machine.
Objects and Capabilities are used to manage file systems.
Network OS
Programs run locally unless specified.
User aware he is using a local host machine.
Files are maintained and accessed from local machine unless using a remote file
system.
The central point of the software concept for a server implementation is the Objectconcept.
Each object consists of
Data and
Operations on this data
Amoeba is organized as a collection of objects (essentially abstarct data types), each with some
number of operations that processes can perform on it. Operations on an object are performed
by sending a message to the object's server.Objects are created by processes and managed by
the corresponding server. There are many different object classes:
Files
Directories
Memory segments
Processes
I/O-Devices (Hard drive...)
Terminals
...
The Port field identifies the server. The Object field tells which object is beeing referred to,
since a server normally will manage several objects. The Rights field specifies which operations
are allowed (e.g. capability for a file may be read only). Since capabilities are managed in user
space, the Check field is needed to protect them cryptographically, to prevent users from
tampering with them.
5. Process management
A process is an object in Amoeba. Information about the processes in Amoeba are contained in
capabilities and in a data structure called a process descriptor, which is used for process
creation and stunned processes (and process migration). The process descriptor consists of
four components:
The host descriptor provides the requierements for the system where the process
must run, by describing what machine it can be run
The capabilities include the capability of the process which every client needs,
and the capability of a handler, which deals signals and process exit
The segment component describes the layout of the addess space (see below)
The thread component describes the state of each of the threads (see below) in
the process and their state informations(IP, Stack,...)
Amoeba supports a simple thread model. When a process starts up, it has at least one thread.
The number of threads is dynamic. During execution, the process can create additional threads.
And existing threads can terminate. All threads are managed by the kernel. The advantage of
this design is that when a thread does a RPC, the kernel can block that thread and schedule
another one in the same process if one is ready!
A Mutex is like a binary semaphore. It can be in one of two states, locked or unlocked. Trying to
lock an unlocked mutex causes it to become locked. The calling thread continues. Trying to lock
a mutex that is already locked causes the calling thread to block until another thread unlocks the
mutex.The second way threads can synchronize is by counting Semaphores. These are slower
than mutexes, but there are times when they are needed. A semaphore can't be negative. Try
down a zero semaphore causes the calling thread to block until another thread do a up
operation on the semaphore.
Signals are asynchronous interrupts sent from one thread to another in the same process.
Signals can be raised, caught, or ignored. Asynchronous interrupts between processes use
the stun mechanism.
6. Memory management
Amoeba supplies a simple memory management based on segments. Each process owns at
least three segments:
1. Text/Code segment
2. Stack segement for the main thread/process
3. Data segment
Each further thread gets his own stack segment, and the process can allocated arbitrary
additional data segments.
All segments are page protected by the underlying MMU, the kernel segments, too.
7. Communication
The definitions of the Amoeba communication calls are given in the ANSI C language.
All three calls use a Msg data structure, which is a 32-byte header with several fields to
hold capabilities and other items. Note that each request or reply message can consist
of just a header or a header and an additional component.
All processes, the kernel too, communicate with a standardized RPC (Remote procedure
call) interface. There are only three functions to reach this goal:
The first function is used by client to send a message to a server, and get a reply from the
server on this request. The reply and request buffers are generic memory buffers (char). The
reply and request headers are simple data structures to describe the request and the capability
of the server. On the other side, teh server calls within an infinite loop the getreq function. Each
time a client sends this server (determined by a server port - see capabilities for details) a
message, the getreqfunction returns with the client data filled in the request buffer, if any. The
request header contains informations about the client request.
Because the client expects a reply, the server must send a reply (either with or without reply
data) using the reply function.
Applications
UNIX emulation
Parallel make
Traveling salesman
Alpha-beta search
Parallel make
Significance of points
Amoeba is a distributed operating system which successfully allows users to execute
jobs transparently over multiple CPUs.
It was primarily developed by Andrew Tannenbaum and others at the Vrije Universiteit
Amsterdam, Netherland.
It uses objects to encapsulate data and processes and capabilities to describe the
objects.
Summary
The Amoeba distributed operating system succeeds in overcoming many of the
hurdles faces in distributed computing.
It abstracts away the use of RPCs using stubs and is scalable based on available
CPUs.
Although system updates seem to have stopped, the current version appears to
have reached a stable point in its architectural development.
The programming languages included with the distribution are common to most
programmers and should make code creation easy for Amoeba applications.
Results of application speedup and the fact that the system is freely available
make it worth evaluating at the university level.
References
[1]-Based on the article: Amoeba: An Overview of a Distributed Operating
System by Eric W. Lund - March 29, 1998, Rochester Institute of Technolog and
informations about Amoeba taken from a web site from the University of Halle.
Additional parts are taken from the Amoeba tribute site from Stephen Wagner.
Furthermore the classics: The Amoeba kernel, Andrew S. Tanenbaum, M.F.
Kaashoek.
[2] Tanenbaum, A.S, Sharp, G.J. “The Amoeba Distributed Operating System”
Online: 2006 http://www.cs.vu.nl/pub/amoeba/Intro.pdf
[3] Ramsay, M., Keigel, T., Memmer, H. “Ameoba Distributed Operating
System” Online http://csserver.evansville.edu/~mr56/CS470/Final_Draft.pdf
[4] Coulouris, G. Dollimore, J., Kindberg, T. Distributed Systems – Concepts
and Design, 1994, Online: http://www.cdk3.net/oss/Ed2/Amoeba.pdf
[5] Sharp, G.J.: ‘‘The Design of a Window System for Amoeba,’’ Report IR-
142, Dept. of Math. & Computer Science, Vrije Universiteit, Dec. 1987.
[6] The Amoeba Reference Manual Users Guide Vrije University of
Amsterdam, 1996 Online 2006:
http://www.cs.vu.nl/pub/amoeba/manuals/usr.pdf
[7] Bal, H.E., Renesse R. van, and Tanenbaum, A.S.: ‘‘Implementing
Distributed Algorithms Using Remote Procedure Calls,’’ Proc. 1987 National
Computer Conference, pp. 499-506, June 1987.
[8] Baalbergen, E.H.: ‘‘Parallel and Distributed Compilations in Loosely
Coupled systems,’’ Proc. Workshop on Large Grain Parallelism , Providence,
RI, Oct 1986.
[9] Straven H. van, Renesse R. van, and Tanenbaum, A.S, “The Performance
Of The Amoeba Distributed Operating System” Online: 2006
https://dare.ubvu.vu.nl/bitstream/1871/2589/1/11008.pdf
[10] Tanenbaum, A.S, et al, “Experiences with the Amoeba Distributed
Operating System” Online 2006:
http://citeseer.ist.psu.edu/cache/papers/cs/6593/ftp:zSzzSzftp.sys.toronto.eduzS
zpubzSzamoebazSz03.pdf/tanenbaum90experiences.pdf
[11] Wikipedia – www.wikipedia.com
[12] Slide finder – www.slidefinder.com
[13] Slide share – www.slideshare.com
[14] document share – www.docshare.com