Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
SeminarOrigins of Operating Systems
The Microkernel Machin NeXTSTEP
Gregor Schmidt2006-06-29
1
1
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
Overview
Introduction The road to NeXTSTEP The NeXT computers
The NeXTSTEP operating system The Mach Microkernel
Interprocess Communication by example
The next steps
2
2
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
Overview
Introduction The NeXTSTEP operating system The Mach Microkernel The next steps
3
3
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The Road to NeXTStep
1986 - NeXT computers, Inc. was founded by Steve Jobs and colleagues from Apple
- Rich Page- George Crow- Bud Tribble- Dan‘L Lewin- Susan Barnes
and - Randy Heffner- Gary H. Moore
1988 - The first computer was presented
4
4
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The NeXT computers
based on Motorola 680x0 2 basic models
NeXTcube (1989) NeXTstation (1990)
- 25 MHz resp. 33 MHz- 8 MB RAM (up to 32 MB)- 105 MB SCSI HDD- Floppy Disc Drive- 10Base-T and 10Base-2 Ethernet- Monochrome Display
All later versions of NeXTSTEP operating systems run on these machines
5
$ 4.995,-
5
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
Overview
Introduction The NeXTSTEP operating system The Mach Microkernel The next steps
6
6
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The NeXTStep Operating SystemMain Features
Mach Kernel BSD4.3 user space server NeXTSTEP user interface
Display Postscript Object-oriented application framework Objective C as standard programming language Extraordinary OO-development tools High integration of all native applications
7
7
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The NeXTSTEP Operating SystemDemo - By Steve Jobs
Product Demonstration of NeXTSTEP Release 3.0
8
8
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
Overview
Introduction The NeXTSTEP operating system The Mach Microkernel The next steps
9
9
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The Mach MicrokernelHistory
1985 - 1994 - developed at Carnegie-Mellon university Microkernel
Deployed in several systems NeXTSTEP / OPENSTEP - Rhapsody - Mac OS X GNU/Hurd MkLinux Tru64 (OSF/1)
NeXTSTEP uses Mach 2.5
10
10
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The Mach MicrokernelMicrokernel
Little features - great reliability Only the main features run in privileged mode
Process management- Scheduling
Synchronization and communication
Device drivers and all other services run as user services
11
small interface little trusted computing base
lots of communication overhead
lots of synchronization
11
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The Mach MicrokernelMain Features
Preemptive Multitasking Multithreading, Multiprocessing Memory protection, virtual memory Interprocess communication via mach messages
12
12
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The Mach MicrokernelInterprocess Communication
Transparent network support Typed messages
including type conversion between different languages
Integrated with virtual memory local messages are not copied but mapped into receiver‘s address space Remote messages are send lazily
Port Rights Management Ownership Receive Send
Port names - unique Integer
13
13
Environment Manager for local use only
Network Message Server enables network-wide communication
Service Server
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The Mach MicrokernelHow to find Ports in NeXTStep
14
3
Jeder Port wird durch einen eindeutigen Namen bezeichnet. Diese Namen sind durchganzzahlige Werte implementiert. Verschiedene Tasks können ihre eigenen, womöglichverschiedenen Namen für denselben Port besitzen. Werden Port-Namen in Nachrichtenversandt, so transformiert der Mach-Kern den für den Absender gültigen Namen in einenin der Empfänger-Task gültigen Namen. Dabei wird der zugehörige Port für dieEmpfänger-Task womöglich erst angelegt.
Interessant bleibt jedoch die Frage, wie eine Task jemals von einer anderen Taskerfahren kann. Erst dann kann sie ihr ja eine Nachricht senden und mitteilen, unterwelchem Port sie selbst erreichbar ist.
3. Verteiltes Rechnen
Modelle für verteiltes Rechnen sollen die physische Verteilung der Komponenten einerAnwendung verbergen und die Existenz des Netzwerks verdecken. KommunizierendeTasks können dann genauso leicht auf verschiedenen Maschinen ausgeführt werden, wieauf einer einzigen. Machs-IPC stellt ein solches Modell dar und unterstützt sogar trans-parente Kommunikation in heterogenen Umgebungen.
Anhand eines Klient/Server-Beispiels wollen wir die Möglichkeiten und Werkzeugedie Mach bietet, erläutern. Die beiden Komponenten unserer verteilten Anwendungheißen packets_client und packets_server. Der Klient kann Nachrichten miteinem Integer-Wert an den Server schicken. Er ruft dazu eine Routine send_pa-cket() auf. Der Server druckt für jeden empfangenen Wert eine Notiz aus. Sendetman sehr viele Nachrichten hintereinander oder senden viele Klienten auf einmal aneinen Server, so kann eine Überflutung von Puffern oder des Netzwerkes autreten. ZumAufspüren derartiger Fälle ist unsere Anwendung geeignet — wenn man Klient undServer noch ein wenig erweitert.
Bevor Klient und Server kommunizieren können, stellt sich nun die Frage, wie beidevoneinander erfahren. Sie kommunizieren dazu mit einem Namensdienst. Bild 1 zeigtdie Initialisierungsschritte, die vor der ersten Klient/Server-Interaktion nötig sind.
netmsgserver
packets_server
packets_client
netname_check_in()
netname_look_up()
send_packet() 1
2
3
4
Bild 1: Der Mach-Namensdienst in Mac OS X: Bootstrap Server
14
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The Mach MicrokernelMessage Sending the Easy Way
Mach Interface Generator Corba-like Stub-and-Skeleton-Generator
15
6
senden kann. Mit dem Mach Interface Generator (MIG) existiert jedoch ein leistungs-
fähiges Werkzeug, das uns viel von diesem Programmieraufwand abnimmt.
4. Der Mach Interface Generator
Ausgehend von einer Spezifikation, packets.defs in unserem Beispiel (der Suffix
.defs ist üblich), erzeugt der Mach Interface Generator C-Code für Klient und Server.
Auf der Klienten-Seite wird dabei ein procedure call interface zu Mach-Nachrichten
generiert, während auf der Server-Seite ein message passing interface zu den C-
Funktionen entsteht, die die Server-Funktionalität implementieren. Der Programmierer
hat mit dem Erzeugen von Mach-Nachrichten-Strukturen, dem Eintragen von Typ- und
Längeninformation und der Zuordnung verschiedener Typen von Nachrichten zu ver-
schiedenen Funktionen auf der Server-Seite nichts zu tun. In Bild 4 zeigen wir die von
MIG generierten Dateien in ihrer Beziehung zu ‘‘von Hand’’ codierten Pro-
grammstücken.
packets.defs
mig
packets.h
packetsUser.c
packetsServer.c
packets_client.c
packets_server_main.c
packets_client packets_server
includeinclude
generategenerate
link link
Bild 4: Generieren von Klient und Server aus einer MIG Spezifikation
In Bild 4 bezeichnen Ellipsen jeweils ausführbare Programme. Zentral ist hier
/usr/bin/mig, der Mach Interface Generator (MIG). Namen in Kästchen bezeichnen
Dateien mit C-Quelltext oder MIG-Spezifikationen. Die in Bild 4 fett gedruckten
Dateinamen deuten auf Programmstücke, die der Programmierer zu erstellen hat, der Rest
Message encoding anddecoding for free
Little RPC-specific code
15
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The Mach MicrokernelInterprocess Communication by Example
Calculator example Server providing calculation facilities Client using command line interface to receive tasks and queries server for
the answer
16
16
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
Overview
Introduction The NeXTSTEP operating system The Mach Microkernel The next steps
17
17
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The next steps
1995 - reorganization of NeXT towards software NeXT computers, Inc. - NeXT software, Inc. NeXTSTEP - OPENSTEP support for different platforms
all NeXT computers Intel based computers PA-RISC Workstations Sun SPARC (IBM PPC) in labs
WebObjects - first application server
18
18
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The next stepsOpenStep and OPENSTEP
OpenStep is an object oriented API Designed by NeXT and Sun OPENSTEP is an implementation Other for
Windows NT Solaris Linux - GNUStep
Main components Display PostScript Objective-C Runtime and Compilers Majority of NeXTSTEP's Objective-C libraries
19
19
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
The next steps
1996 - take over by Apple, Inc. - 400 Millions US$ OPENSTEP becomes Mac OS X
with a new User Interface - Aqua but the same underlying system components
Mach enhanced to XNU (hybrid kernel) within Darwin
20
20
Gregor SchmidtOrigins of Operating Systems - The Microkernel Mach
Betriebssysteme und Middleware / Prof. Andreas PolzeHasso-Plattner-Institut
References
BOYKIN, Joseph; KIRSCHEN, David; LANGERMAN, Alan; LoVERSO; Susan: Programming under Mach. Addison-Wesley UNIX and Open System Series, ISBN 0-201-52739-1, Addison-Wesley 1993
GARFINKEL, Simon L.; MAHONEY, Michael K.: NeXTSTEP PROGRAMMING STEP ONE: Object-Oriented Applications. TELOS. The Electronic Library of Science ISBN 0-387-97884-4, Springer-Verlag 1993
POLZE, Andreas: Vereiltes Rechnen unter Mach. unix/mail 2/1995, Carl Hanser Verlag München. Verfügbar im Internet: <http://www.informatik.hu-berlin.de/~apolze/papers/um2-95.ps>. - online im Internet
SLABIHOUD, Stephan: NeXT Computer, Inc., 1998-2005, Verfügbar im Internet: <http://www.8bit-museum.de/docs/next1.htm>. Stand: Juni 2006 - online im Internet
Special References:
en.wikipedia.org - for lots of information around NeXTStep and Mach
lists.apple.com - for good code example and special information
21
21