Emulation des UNIX-Prozeßkonzepts auf dem Mikrokern L3
Jean Wolter
TU Dresden, Dept. of Computer Science, OS Group
Inhalt
1 Vorwort
2 Einleitung
3 Stand der Technik
3.1 Betriebssysteme und Applikationen
3.1.1 Neuimplementation von Anwendungen
3.1.2 Portierung von Anwendungen
3.1.3 Binärkompatibilität zu einer anderen Plattform
3.1.4 Emulation eines anderen Systems
3.2 Verschiedene UNIX-Implementationen auf Mikrokernen
3.2.1 Der Mach-Singleserver
3.2.2 Die Spring-UNIX-Implementation
3.2.3 Der Mach-Multiserver
3.2.4 Zusammenfassung
4 Das Betriebssystem L3
4.1 Überblick über die Struktur von L3
4.1.1 Der Kern
4.1.2 Der Supervisor und die Server
4.2 Interprozeßkommunikation
4.3 Datenräume
4.4 Clans and Chiefs
5 Entwurf
5.1 Ausgangspunkte für den Entwurf und Herangehensweise
5.2 UNIX-Objekte - Namensverwaltung und Zugriff
5.2.1 Einführende Betrachtungen
5.2.2 Schlußfolgerungen
5.2.3 Probleme der Konsistenz
5.3 Prozeßhierarchie
5.4 Authentifizierung der Prozesse
5.4.1 Kernkonzepte als Grundlage der Authentifizierung
5.4.2 Implementierung eines verteilten Zustandes durch einen externen Pager
5.4.3 Identifikation durch Nachrichteninhalt - Capabilities (Amöba)
5.4.4 Identifikation auf Grundlage des Absenders
5.4.5 Bewertung der Lösungen und Auswahl einer Lösung
5.4.6 Probleme dieser Lösung
5.4.7 Verallgemeinerung des Problems
5.5 Signalbehandlung
5.5.1 Signale
5.5.2 Signalthread
5.6 Die Struktur des Systems und der UNIX-Prozesse
5.6.1 Der Prozeßserver
5.6.2 Der UNIX-Prozeß
5.6.3 Die Struktur des Systems
5.7 Die Daten der UNIX-Emulation
5.7.1 Übersicht über die verwendeten Daten
5.7.2 Betrachtung der Sicherheitsaspekte der Daten
5.7.3 Zuordnung der Daten zu Prozeßserver und Emulationsbibliothek
5.7.4 Die Daten der UNIX-Emulation bei fork() und exec()
5.8 Spezielle Probleme bei ausgewählten Systemrufen
5.8.1 fork()
5.8.2 exec()
5.9 Signale - SIGKILL und SIGBLOCK
6 Implementation
6.1 Die Emulationstask
6.1.1 Threads in L3 - Widerspiegelung der Hardware
6.1.2 Zustellung von Ausnahmen und Fehlern
6.1.3 Aufbau der Emulationstask
6.1.4 Anbindung der Emulationsbibliothek
6.1.5 Signalzustellung
6.2 Der Prozeßserver
6.2.1 Die Verwaltungsstrukturen des Prozeßservers
6.2.2 Die Dienste des Prozeßservers
6.3 Das Zusammenspiel von Emulationstask und Prozeßserver
6.3.1 fork()
6.3.2 execve()
6.3.3 wait(), waitpid()
6.3.4 getxxx()
6.3.5 kill()
6.3.6 sigxxx()
7 Zusammenfassung und Ausblick
7.1 Stand der Arbeit
7.2 Erfahrungen der Entwicklung
7.3 Aspekte der weiteren Entwicklung
7.3.1 Entwicklung in nächster Zeit
7.3.2 Entwicklung auf lange Sicht
A Systemrufe für die Prozeßsteuerung (elementar, POSIX)
A.1 Prozeßspezifische Systemcalls
A.2 Prozeßumgebung
B Glossar
C Literatur
Jean Wolter
14.11.1995