Betriebssystemkerne/Kleinkernsysteme
MACH
Quellen
- Mach bei CMU
- Das ist wohl die offizielle Mach-Homapage
- Mach4 University Utah
-
- [SilverSchatz91]
- Erste MACH-Erwähnung in der Literatur
- Richard Rashid, Avadis Tevanian, Jr., Michael Young, David Golub, Rober
t Baron, David
Black, William J. Bolosky, and Jonathan Chew. Machine-independent virtual memory
management for paged uniprocessor and multiprocessor architectures. IEEE Transa
ctions on Computers, C-37:896-908, 1988.
Grundbegriffe
- threads
- grundlegende Ausführungseinheit, Aktivitätsträger, läuft im Task-Kontext
- task
- Ausführungsumgebung, einfache einheit für Betriebsmittelallokierung, virtueller Addressraum, Schutzumgebung
Betriebsmittel sind:
- Prozessoren
- Ports
- Speicherseiten
- port
-
Objekt-Referenzmechanismus, mit einer Warteschlange für Nachrichten
Kommunikationskanal zwischen Threads, uniform wo sie lokalisert sind.
Damit kann gute Skalierbarkeit gewährleistet werden.
port set: Gruppe von Ports, die eine gemeinsame Nachrichtenwarteschlange haben. Ein Thread kann Nachrichten für ein Port-Set empfangen uns so an maheren Ports lauschen.
- messages
- grundlegender Kommunikationsmechanismus zwischen Threads,
getypte Sammlung von Datenobjekten (Daten selber, zeiger, Port capabilities)
- Memory Object
- Sekundärspeicher, der in einen Task-Adressraum abgebildet werden kann
(Memory Mapping)
Eigenschaften
- Mach unterstützt verscheindene Rechnerarchitekturen: UMA, NUMA, NORMA
Dies beruht auf der Flexibilität der Speicherverwaltung.
- Netzwerkintegration
- hererogene HW ist denkbar
- mehrere Emulatoren/APIs (Personalities)
- verteilter Betrieb, Netzwerktransparenz, OO-Organistation intern und extern
- einfaches API
- einfach portierbar auf verschiedene Prozessorarchitekturen
- Mit den Ports können Objekte ortsunabhänig sein. Es ist auch eine Task-Migration machbar (Lastverteilung!)
- Speicherverwaltung bietet tolle Sachen wie copy on reference
- API von ca.140 Systemcalls, >300 KB Code
Das Prozessmanagement beiter möglichst wenig atomare sachen wie
tread_suspend, thread_resume
Die Treads-API: c-threads (POSIX phreads ...)
Zur Koordinierung gibt es spinlocks : mutex, condition (Damit kann man Monitore bauen)
Der Scheduler ist multiprozessorfähig. Jeder Prozessor hat eine lokale Warteschlange für Threads. Das Gesamtsystem hat eine globale Warteschlange, weobei die lokale Warteschlange eine höhere Priorität hat. Zeitquantum = 1/#threads*C
Speicher: vmread, vm_write, vm_copy: Trannsfer von Speicherseite über Trask-Grenzen hinweg über Ports.
Userlevel Pagers/Memory-Managers: Wenn Objekt persistent wird, muß der Speichermanager die Objekte auf den hintergrundspeicher speichern. Mach hat einen Default-Memory-manager.
Mit Hilfe der Memory-manager konn man auch verteilte virtuelle Speicher implementiern.
MIG: Mach Interface generator (vgl RPCgen/IDL-Compiler)
NetMsg-Server: kümmert sich um die Ortstransparenz. (Damit können die Objekte zwecks Lastverteilung oder Erhöhung der Verfügbarkeit migriert/repliziert werden).
Die Tasks können beim NetMsgServer netzwerkports registrieren (Capability-basiert). Der NetMsg -Server verteilt die Nachrichten an die Tasks weiter.
Kritik
- Die asynchronone inter-prozesskomunikation (mesessages ?) ist ein Grund für schlechte Leistungsfähigkeit [Wikipedia über L4]
- Trampolinsprung war zu teuer- Reintegration in den Kern
- zuviel Softwarekosten → L4
Geschichte
Projekt von Carnegie-Mellon-University, Defence Advanced Reseach Projekt Agency DARPA
Das Vorgänger Projekt war Accent (nicht BSD-kompatibel, kein VM, ...)
- Release 1:
- 1986 DEC/VAX
1987 Encore Multimax, Sequent
UMA-Architektur
- Release 2: NUMA
- Release 2.5: Enzelprozessor: SUN.Intel,IBM,DEC
- 1989 OSF
- Release 3:
- 1/10 Kerngröße wie BSD-Unix, BSD-Emulation
- Mach4 University Utah
-
- soll leichtgewichtiger werden
- Anpassbare Spezialisierung
- Attributierte Schnittstellen "Präsentation"
- Integrierte Modulverwaltung
- Einfaches Teilen gemeinsamer Adressräume
- Transparente Verteilung durch effizienten Verteilten gemeinsamen Speicher
Es wird evolutionär weiterentwickelt und dabei die fundamentalen Abtraktionen überarbeitet.
- Präsentation/interface IPC-System nach CORBA IDL
Implementierungen
- GNU-Sammlungen
Auf Mach basierende Systeme
Informatik- und Netzwerkverein Ravensburg e.V
Rudolf Weber