Amoeba - Ein Verteiltes Betriebssystem

Download Report

Transcript Amoeba - Ein Verteiltes Betriebssystem

Kapitel 27: Amoeba - Ein Verteiltes Betriebssystem
Literatur: Tanenbaum, Moderne Betriebssysteme
Mikrokern
Server für die üblichen BS-Dienste
Kern auf den Rechnern des Pools,
den Terminals, den Servern
1. Prozessverwaltung
2. Speicherverwaltung
3. Kommunikation
4. Untere Ebene der E/A
Transparenz
Kein Heimrechner
Jede Aktivität verstreut im Netz
Lastausgleich
Auch Testumgebung für Verteilte
und parallele Programme
Hardware
Viele Prozessoren, Pool, viel
Speicher, lokal, auch gemeinsam
Amoeba
1
Amoeba
2
Amoeba
3
Prozess
- Adressraum
- (mehrere) Threads
Kommunikation
Punkt - zu - Punkt,
Anfrage - Antwort
Gruppen - K.
Thread
- Register
- Programmzähler
- Stack
Eine Quelle, viele Empfänger,
zuverlässig, FLIP-Protokoll,
Netzwerkschicht
Speicher in Segmenten
Einblenden
E/A, Gerätetreiber
Amoeba
4
Klient-Server-Modell
Objekte, durch Server
verwaltet
Zugriff mit Capabilities
- kryptographisch geschützt
Objekte z.B.
- Datei
- Verzeichnis
- Speichersegment
- Bildschirmfenster
- Prozessor
- Festplatte
Serverdienste:
- Fernaufruf (RPC)
Bullet- (Datei-) Server
- Read-only Semantik
Verzeichnis-Server
- Pfadname  Capability, mit
- der Dateien angesprochen werden.
Server für
- Objektreplikation
- Prozesserzeugung
- Überwachung von Serverausfall
- Kommunikation mit der Außenwelt
- Benutzerspezifisch
Amoeba
5
Objekte = Abstrakte Datentypen
Capabilities
- Verwaltung durch Server-Prozesse
- Aufruf via RPC, der blockiert
· Orte transparent
Das Stub-Unterprogramm im
Klient stellt bei Aufruf eine
Nachricht zusammen.
Server:
- Benutzerprozesse
- selten Kernprozess
- - Prozess-Server
- - Speicher-Server
- Benutzung einheitlich
Server-Port: Logischer Name
des (der) Server(s) - nicht Rechner
Objekt: Name
Rechte
Prüffeld: Schutz, Zufallszahl
Amoeba
6
Amoeba
7
Schutz von Objekten
Bei der Erzeugung des Objekts
generiert der Server die Capability,
die er versendet und speichert. Will
der Klient diese mit eingeschränkten
Rechten weiter geben, erhält er auf
Anforderung vom Server dazu eine
weitere, veränderte Capability mit
dem Prüffeld:
Wird später diese neue Capability
präsentiert, verifiziert der Server
das Prüffeld mit f (Eingeschränkte
Rechte
Amoeba
exor reduziertes Prüffeld), wobei
f eine Einwegfunktion ist.
Es gibt keine Zugriffskontrollisten.
Der Verbleib von Capabilities
kann nicht kontrolliert werden,
sie können nicht zurückgenommen werden.
8
Amoeba
9
Amoeba
10
Prozesse, Threads
Ein Prozess ist ein Objekt.
Der Erzeuger kann ihn mit der
Capability suspendieren, neu
starten oder auflösen.
Er wird vom Prozess-Server
auf einem bestimmten Rechner
mit gewünschtem Speicherbild
erzeugt.
Der Rechen-Server wählt den
geeigneten Prozessor aus.
Prozessschnittstelle, unterste Ebene
(es gibt drei Ebenen)
- exec, Parameter Capability und
Prozesskriptor. Startet den Prozess
auf dem angegebenen Rechner.
Zurück: Capability für den Prozess.
- getload, liefert Informationen über
Rechnergeschwindigkeit, Last und
verfügbarem Speicher; dient dem
Rechen-Server zur Rechnerauswahl
- stun, Anhalten eines Sohnprozesses
-- Normalfall, der Sohn beendet ggf.
die Kette von RPCs.
-- Notfall, sofort
Amoeba
11
Amoeba
12
Diese und weitere Operationen
werden von der Prozessschnittstelle höherer Ebene
benutzt. Hier:
- newproc, erzeugt neuen
Prozess, benötigt Parameter
für dessen Beschreibung,
z.B. Programm
Threads:
Ein Prozess besitzt anfangs
einen Thread. Dieser kann
weitere erzeugen. Terminieren
möglich.
Eigener stack, eigene Register.
Globale Variablen mit Bibliotheksroutinen.
Synchronisation:
- Signale; auslösen, abfangen,
ignorieren
- Mutex für wechselseitigen
Anschluss
- Zählender Semaphor
Threadverwaltung im Kern.
Scheduling mit Prioritäten.
Amoeba
13
Speicherverwaltung
Virtueller Adressraum mit Segmenten, kein virtueller Speicher!
Argumentation: Geschwindigkeit,
große, billige Speicher verfügbar.
Segmente können von
mehreren Prozessen gemeinsam benutzt werden.
Operationen für Segmente:
Erzeugen, Anfangswerte setzen,
Größe ändern, Lesen, Schreiben,
Einblenden, Ausblenden, Auflösen.
Nach Ausblenden mit Capability
wieder zu benutzen.
Amoeba
14
Amoeba
15
Kommunikation: Fernaufrufe
Aufrufer blockiert bis zur
Antwort. (Strukturierung)
Klient ruft eine Stub-Routine
auf, die den Auftrag mit Parametern verpackt. Ein KernPrimitiv versendet, während dem
die Stub-Routine blockiert ist.
Diese übergibt dann die Antwort
an den Klienten.
Logische Adresse eines ServerThreads ist ein Port, eine Zufallszahl (48 bit) ohne Hinweis auf den
Ort. Alle Nachrichten werden mit
Amoeba
Ports adressiert.
In jeder Capability steht ein
Port, die Adresse des Servers,
der das zugehörige Objekt
verwaltet.
RPC-Primitive
Systemaufrufe, benutzt in Bibliotheksroutinen.
1. get-request, Server ist
bereit, den Port abzuhören.
2. put-reply: Server sendet
Antwort.
3. trans: Klient sendet Auftrag
und wartet auf Antwort.
16
Amoeba
17
Alle Nachrichten haben einen
Kopf und -optional- einen
Puffer:
- Port : Ziel
- Signatur: zur Zeit unbenutzt
- dann: Parameter, vereinbart
zwischen Sender und Empfänger
Server: get-request (& kopf,
puffer, länge)
- kopf: Der referenzierte Kopf
enthält erst den Port des
Servers, bei der Antwort dann
i.d.R. die Capability eines
Objekts, das zu bearbeiten ist,
in Port (6) und privater Teil (10).
Manche Aufträge brauchen keinen
Puffer, z.B. READ (Datei)- der
Bereich der Datei ist in Offset (4),
Größe (2) gegeben.
get-request blockiert den Server.
Mit put-reply (&kopf, puffer,
länge) antwortet der Server.
get-request und put-reply müssen
paarweise auftreten.
Amoeba
18
Der Klient ruft die Stub-Routine
auf, welche den Systemdienst
trans (& kopf, puffer1, länge1, &
kopf 2, puffer 2, länge 2) benutzt.
- Nachricht 1: Auftrag
- Nachricht 2: Antwort
In dieser Form wäre der RPC
unsicher. Ein betrügerischer Server
könnte Aufträge via get-request
abfangen, da die Ports öffentlich
sind. Daher ist jeder Port ein Paar:
der get-port (privat) und der putport (öffentlich)
Amoeba
Mit einer Einwegfunktion F
gilt put-port = F (get-port).
Ein Server führt get-request
immer mit dem get-port aus.
Der Kern berechnet daraus
den put-port und fügt ihn in
die Tabelle der abgehörten
Ports ein.
Klienten benutzen den putport.
19
Amoeba
20
Gruppenkommunikation
Gruppe: Menge von Prozessen, gemeinsame Aufgabe oder gemeinsames Bereitstellen eines Dienstes.
Geschlossen: die Gruppenstruktur ist
von außen verborgen; soll die Gruppe
um einen Dienst gebeten werden, wird
von außen ein Mitglied angesprochen,
das intern weiterleitet.
Operationen:
- Create Group erzeugt neue Gruppe und
etabliert ihren Gruppenidentifikator.
Amoeba
Parameter z.B. Grad der
Fehlertoleranz
- Join Group, wobei keine
Nachricht an alle Gruppenmitglieder weitergegeben
wird.
- Leave Group,
Der letzte löst damit die
Gruppe auf.
- Send To Group, atomar,
zuverlässig, in der Reihenfolge abgeliefert.
21
Amoeba
22
Das zuverlässige “Broadcast”-Protokoll
für Gruppenkommunikation.
Zentrale Instanz: “Ordner”;
bei Ausfall: Election.
Gruppennachricht eines Benutzerprozesses:
1. Nachricht an den Kern
2. Dieser blockiert den Benutzer
3. und sendet eine Punkt-zu-Punkt-Nachricht an den Ordner.
4. Dieser erzeugt eine Reihenfolgenummer, trägt sie in den Nachrichtenkopf
ein und sendet die Nachricht an alle.
5. Sobald der Kern des Absenders die
Nachricht erhält, entblockiert er den
Amoeba
Benutzerprozess.
2./3. Der Auftrag an den
Ordner-Request for Broadcast
- erhält einen eindeutigen
Nachrichtenidentifikator
(Duplikate) und die Reihenfolgenummer des zuletzt
empfangenen Broadcast als
(späte) Quittung - “Piggy-back”.
Beim Senden dieses Auftrags
an den Ordner wird ein Wecker
gestellt. Kommt der Broadcast
vor Ablauf hier an, wird der
auftraggebende Benutzerprozess
entblockiert - der Normallfall.
23
Amoeba
24
Wecker läuft ab:
- Auftrag verloren oder
- Nachricht des Broadcast verloren
- oder langsam.
- Neuer Auftrag an den Ordner.
Hatte der nichts erhalten, verfährt er
wie üblich, sonst beruhigt er nur den
beautragenden Kern.
Ordner erhält Auftrag. Duplikat?
- ja: Nur Absender beruhigen.
- nein:
-- Neue Reihenfolgenummer
-- Diese und die Nachricht speichern,
mit Identifikator
--Nachricht an alle senden, mit
Amoeba
Nummer.
Kern erhält Broadcast-Nachricht:
Vergleich der Reihenfolgenummer der letzt empfangenen.
Ist die neue um 1 höher, wird die
Nachricht an eine wartende Anwendung weitergereicht.
Andernfalls wird sie gepuffert,
und mit einer Punkt-zu-PunktNachricht wird der Ordner aufgefordert, die vorige Nachricht
zu wiederholen. Trifft sie ein,
werden beide Nachrichten in
der richtigen Reihenfolge abgeliefert.
25
Amoeba
26
Leeren des Puffers im Ordner:
Das tritt selten auf, weshalb per BroadJedem Auftrag an den Ordner ist
cast etwas mehr als 2 Nachrichten
eine Bestätigung k beigefügt, die
über das Netz gehen, im Durchschnitt.
besagt, dass alle Broadcast-NachAlternatives, logisch äquivalentes
richten bis Nr. k korrekt empfanProtokoll: Der beauftragende Kern
gen wurden. (“piggybacked acksendet die Nachricht gleich an alle
nowledgement”).
Rechner der Gruppe. Sobald der OrdDamit ermittelt der Ordner, welche ner sie erhält, sendet er an allen eine
gepufferten Nachrichten sicher
kurze Nachricht mit der Reihenfolgenicht mehr benötigt werden.
nummer; Zuordnung mit eindeutigem
Ein Rechner, der lange keinen Auf- Identifikator. Bandbreitenersparnis:
trag sendet, sendet extra eine Bedie 2. Nachricht kann kürzer sein;
stätigung k, oder der Ordner foraber jeder Rechner muss 2 statt einer
dert mit einem Broadcast von allen Nachricht annehmen.
27
diesen besonderen Bestätigungen. Amoeba
Amoeba
28
Fehlertoleranz hinsichtlich Rechnerausfall: Bis zu k ausgefallene
Rechner werden verkraftet; der
Mehraufwand wächst mit dem
wählbaren k.Antwortet ein Rechner
nicht mehr, markieren die das bemerkenden Kerne ihn als tot und
die Gruppe als nicht benutzbar.
Danach schlägt Gruppenkommunikation fehl. Jeder, der das bemerkte, ruft resetGroup auf, und
schlägt sich so als Koordinator vor.
Damit ist eine Broadcast-Nachricht
an die Gruppe verbunden: melden!
An jeden daran senden alle lebendi-
gen Gruppenmitglieder die Reihenfolgenummer der letzten empfangenen Nachricht. Haben sich mehrere als Koordinator vorgeschlagen,
gewinnt der mit dem höchsten Paar
(Reihenfolgenummer, Rechneradresse). Der Gewinner sammelt die
vermissten Nachrichten ein, wird
neuer Ordner und teilt dies und die
höchste Reihenfolgenummer allen
mit. Diese fordern dann an, was
ihnen fehlt, erhalten und bestätigen
das. Sind alle Bestätigungen beim
neuen Ordner, löscht dieser den
Puffer.
Amoeba
29
Amoeba
30
Bei k > 0 führen außer dem Ordner die k Gruppen-Kerne mit den
niedrigsten Adressen den Puffer.
Bei Ausfall von bis zu k Rechnern
bleibt also mindestens ein Puffer
erhalten.
Erst dann verbreitert er die
Reihenfolgenummer. Erst damit ist der Broadcast abgeschlossen.
Bei k > 0 wird das alternative
Protokoll, leicht verändert, verwendet.
Erhält der Ordner eine Nachricht,
wartet er auf eine Bestätigung von
allen Puffer-führenden Kernen.
Amoeba
31
Das Fast-Local-Internet-Protokoll
(FLIP) der Netzwerkschicht
(ISO-Referenzmodell) für
- Fernaufrufe und
- Gruppenkommunikation
Warum ein neues Protokoll?
IP ginge auch.
Wünschenswerte Eigenschaften, die
andere Protokolle nicht alle besitzen.
Typische FLIP-Konfiguration:
Lokale Rechnernetze mit
Möglichkeiten des Broad- und
Multicast.
Amoeba
Jeder Prozess erhält für die Dauer
seiner Existenz eine FLIP-Adresse,
unverändert bei Migration und bei
Änderung der Netzwerktopologie
oder -adressierung:
64 Bit Zufallszahl Z, genauer
Öffentliche Adresse =
DES Z (0...0),
wobei Z der Schlüssel für DES und
die private Adresse ist. Server hören private Adressen ab, Klienten
senden an öffentliche Adressen.
32
Amoeba
33
Amoeba
34
FLIP-Schnittstelle nach oben:
Mit Init lässt sich die RPCSchicht registrieren; dabei übergibt sie zwei Zeiger auf Prozeduren, die beim Eintreffen eines
normalen bzw. nicht übertragbaren Paketes aufgerufen werden.
End: Eintrag löschen
Ein Prozess berechnet seine
private FLIP-Adresse und
übergibt sie mit Register an
die FLIP-Schicht. Dort wird mit
DES die öffentliche Adresse
berechnet und gespeichert.
Adressberechnung
FLIP erhält von oben Pakete mit FLIPAdressen des Ziels. Um die Netzwerkadresse dazu zu finden, wird eine Routing-Tabelle geführt. Einem eintreffenden Paket wird die FLIP- und die Netzwerkadresse des Senders entnommen
und, wenn nicht vorhanden, gespeichert.
Ferner der Hop-Zähler, der beim Passieren eines Verbindungsrechners erhört
wird - ein grobes Entfernungsmaß. Das
Sicherheitsbit zeigt an, ob der Weg abhörgefährdet oder ganz vertrauenswürdig
war. Der Alter-Eintrag erhöht sich für
eine LRV-Verdrängungsstrategie
der Einträge.
Amoeba
35
Amoeba
36
Amoeba
37
Beispiel: Verbindung Klient A
Kommt nach Time-out keine Antund Server B
wort, neuer Versuch mit Hop = 2 Erzeugung von B: Kern erzeugt
geht bis in die Nachbarnetze; usw.
FLIP-Adresse und registriert sie
Wenn B dieses Broadcast-Paket erin der FLIP-Schicht.
hält, antwortet die FLIP-Schicht
B startet und ruft get_request mit
mit der FLIP-Adresse. Empfängt A
seinem Get-Port auf.
das, erzeugt die FLIP-Schicht einen
Die RPC-Schicht sucht oder geneEintrag in die Routing-Tabelle und
riert den Put-Port und blockiert B.
übergibt die FLIP-Adresse an die
A führt trans mit dem Put-Port aus.
RPC-Schicht. Diese speichert PutBeim ersten mal findet die RPCPort und FLIP-Adresse zusammen.
Schicht dazu keine FLIP-Adresse.
Jetzt und in Zukunft kann die RPCSie sendet ein spezielles BroadcastSchicht Aufträge mit der FLIPPaket mit maximalem Hop = 1 - so
Adresse versehen und senden.
38
wird nur im lokalen Netz gesucht. Amoeba
Also zwei Abbildungen:
1. RPC-Schicht: Put-Port  FLIPAdresse
2. FLIP-Schicht: FLIP-Adresse 
Netzwerkadresse
Die FLIP-Schicht ist unabhängig
von dem Port-Konzept, also allgemeiner.
Mehrere Server können denselben
Dienst anbieten und denselben Port
abhören. Jeder hat aber eine andere
FLIP-Adresse. So kann die RPCSchicht eines Auftraggebers
auswählen.
Server können migrieren, für die
Klienten ändert sich dabei nichts.
Auch nicht bei Änderung der Netzkonfigurationen.
Ein ausgefallener Server erhält beim
Neustart eine andere FLIP-Adresse.
Damit kann man die at-most-onceSemantik durchsetzen.
Amoeba
39
FLIP in Weitbereichsnetzen
Amoeba kann auf Rechnern laufen, die
die auch über ein WAN verbunden sind.
Dabei wird der Datenverkehr z.B.
über TCP/IP abgewickelt, was aber
in Amoeba transparent ist.
Ein Broadcast wird mit einzelnen
Nachrichten simuliert.
Beispiel
Klient A sucht Server E:
1 Hop: A, B, C
2 Hops: D, G
3 Hops: E, F, H, I
Amoeba
40
Amoeba
41
Der Bullet-Server
(Geschoss - sehr schnell)
Das Amoeba-Dateisystem:
- Bullet-Server zur Speicherung
der Dateien
- Verzeichnis-Server für Dateinamen und Verzeichnisse
- Replikations-Server
Die Amoeba-Server
Die meisten BS-Dienste für Anwender werden von Servern angeboten.
Um einen Dienst zu benutzen,
wird eine Stub-Routine aufgerufen. In ihr ist festgelegt, welche
Dienste ein Server anbietet und
welche Parameter dabei zu spezifieren sind.
Stubs werden in der Amoeba Interface Language (AIL) definiert
und vom AIL-Compiler in StubRoutinen übersetzt.
Amoeba
Daneben können auch andere Dateisysteme implementiert werden.
Dateien konstant
- Größe fest
- zusammenhängend gespeichert,
im Cache und auf der Platte
- zusammenhängend transportiert
42
- Replikationen einfach
Konzeptionelles Modell:
Der Klient stellt Daten in seinem
Speicher zusammen, erzeugt mit
create (ein RPC, der die Daten an
den Bullet-Server sendet) eine Datei, erhält eine Capability dafür zurück.
Diese geht, zusammen mit dem
Dateinamen, in ein Verzeichnis.
Ändern:
Datei lesen, im Speicher ändern,
neue Datei anlegen. Evtl. wird die
alte Version aufbewahrt, oder gelöscht.
Amoeba
Konzession an die Realität
- es können Teile gelesen
werden
- Vorstufe zu festgelegten Dateien:
(permanent): unfestgelegte mit
kurzer Lebensdauer, welche
nicht zu lesen sind, aber geändert werden können.
Administrator-Dienste:
- Cache auf Platte
- Platte aufräumen
- Defektes Dateisystem reparieren
(spezielle Capability)
43
Amoeba
44
Amoeba
45
Datei lesen:
- Capability senden
- Objektnummer ist Index in die
Dateitabelle
- Prüffeld mit dem dort gespeicherten Wert vergleichen
- Datei von der Platte in den Cache
- Verdrängungsstrategie: LRU
Aufräumen:
Unfestgelegte Dateien werden nach
10 min. ohne Zugriff gelöscht.
Festgelegte Dateien:
Zähler in Dateitabelleneintrag,
mit MAX-LIFETIME initialisiert.Amoeba
Ein Dämon ruft periodisch einen
RPC des Bullet-Servers auf, der
alle Zähler dekrementiert (ageOperation); wo der 0 wird, wird
die Datei gelöscht.
Touch, angewendet auf einzelne
Dateien, setzt den Zähler auf
MAX-LIFETIME. Für Dateien
in Verzeichnissen wird stündlich
touch aufgerufen.
Ohne das wird sie nach 24 Stunden gelöscht.
46
Verzeichnis-Server
in Domänen für verschiedene Bebilden menschengerechte Objektnutzergruppen, die Antwort-Capanamen auf Capabilities ab.
bility wird bei eingeschränkten
In einem Verzeichnis stehen, grob
Rechten mit der Einwegfunktion
gesprochen, mehrere Paare Namenberechnet.
Capability.
Einträge können hinzugefügt, verHierarchisch angeordnete Verzeichändert, gelöscht werden.
nisse bilden schrittweise Pfadnamen Jede Art von Objekt kann verwalauf Capabilities ab.
tet werden: es kann irgendwo geEin Verzeichnis ist selbst ein Obspeichert sein.
Bei einer Anfrage werden ggf. alle
jekt. Jeder Eintrag dient einem Obgespeicherten Capabilities geliefert.
jekt. Er kann mehrere Capabilities
Ein Verzeichnis wird mit mehreren
für identische Kopien des Objektes
enthalten. Dazu sind Benutzerrechte Capabilities angesprochen, für jede
Domäne eins.
Amoeba
47
spezifiziert, differenziert
Amoeba
48
Indem Verzeichnisse Paare von
Verzeichnisnahmen und ihren
Capabilities enthalten, entstehen
Verzeichnisgraphen. In ihnen
können Rechte sehr differenziert
vergeben werden.
Jeder Benutzer hat ein eigenes
Wurzelverzeichnis.
Beispiel: Benutzer 1 möchte eine
Datei anlegen und sucht den Bullet-Server A. Zu
/Benutzer1/public/cap/
Bullet-Server1
erhält er dann dessen Capability.
Implementierung des VerzeichnisServers
Verzeichnis-Server speichern die
Verzeichnisse zweimal, auf zwei verschiedenen Bullet-Servern, wegen
der Sicherheit. Jedes Verzeichnis hat
deswegen zwei Capabilities.
Ein Auftrag an den VerzeichnisServer enthält in dessen Capability
im Objektfeld eine Nummer, die das
Verzeichnis, mit dem etwas geschehen soll, bezeichnet. Mit dieser
Nummer als Index werden dann aus
einer besonderen Datenstruktur auf
der Platte, einem Vektor von Capability-Paaren, zwei Capabilities gelesen, die die beiden VerzeichnisKopien auf den Bullet Servern identifizieren.
Amoeba
49
Amoeba
50
Amoeba
51
Amoeba
52
Der Replikations-Server
praktiziert träge Replikation:
Objekte, die mehrfach vorhanden
sein sollen, werden erst einmal
erzeugt; der Replikations-Server
überprüft regelmäßig aus dem
Hintergrund, ob Kopien anzulegen sind.
Ferner steuert er die Alterungskontrolle mit age-Nachrichten,
und sendet die touch-Nachrichten
als Jungbrunnen.
Der Rechen-Server
Ein Prozessor-Pool wird durch
ein Verzeichnis -Pooldir repräsentiert.
Es enthält für jede Architektur ein
Unterverzeichnis, und diese für den
Prozess-Server eines jeden Rechners
die Capability.
Ein Rechen-Server verwaltet eine
Menge von Prozessor-Pools.
Soll ein Program ausgeführt werden,
das es z.B. für mehrere Architekturen in /bin gibt, wählt der RechenServer zunächst die möglichen Architekturen aus, dann den Prozessor
gemäß
- reicht der verfügbare Arbeitsspeicher?
- wo ist Rechenkapazität frei?
Der Auftraggeber erhält die Capability
des Prozess-Servers des ausgewählten
Prozessors.
Amoeba
53
Amoeba
54
Der Boot-Server
stellt Fehlertoleranz bereit, indem
er überprüft, ob Server ausgefallen
sind, und ggf. deren Dienste neu
startet.
Der TCP-IP-Server
erschließt dieses Protokoll, z.B. für
- die Benutzung des Internet,
- Verbindungen mit Nicht-AmoebaRechnern
Weitere Server
-Platte (Felder von CapabilityPaaren)
- E /A
- Tageszeit
- Wecker-gesteuerter Start von
Aktivitäten
- Zufallszahlen für Ports, Capabilities, FLIP-Adressen
Amoeba
55