Vmlinux: anatomy of bzimage and how x86 64 processor is booted
The Microkernel Mach Under NeXTSTEP
1. The Microkernel Mach
in NeXTSTEP
Gregor Schmidt
2006-06-29
Gregor Schmidt
1
Origins of Operating Systems - The Microkernel Mach
2. Overview
Introduction
The road to NeXTSTEP
The NeXT computers
The NeXTSTEP operating system
The Mach Microkernel
Interprocess Communication by example
The next steps
Gregor Schmidt
2
Origins of Operating Systems - The Microkernel Mach
3. Overview
Introduction
The NeXTSTEP operating system
The Mach Microkernel
The next steps
Gregor Schmidt
3
Origins of Operating Systems - The Microkernel Mach
4. 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
Gregor Schmidt
4
Origins of Operating Systems - The Microkernel Mach
5. The NeXT computers
Gregor Schmidt
5
Origins of Operating Systems - The Microkernel Mach
6. The NeXT computers
based on Motorola 680x0
2 basic models
NeXTcube (1989)
NeXTstation (1990)
Gregor Schmidt
5
Origins of Operating Systems - The Microkernel Mach
7. 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
Gregor Schmidt
5
Origins of Operating Systems - The Microkernel Mach
8. 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
$ 4.995,-
- Monochrome Display
Gregor Schmidt
5
Origins of Operating Systems - The Microkernel Mach
9. 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
$ 4.995,-
- Monochrome Display
All later versions of NeXTSTEP operating
systems run on these machines
Gregor Schmidt
5
Origins of Operating Systems - The Microkernel Mach
10. Overview
Introduction
The NeXTSTEP operating system
The Mach Microkernel
The next steps
Gregor Schmidt
6
Origins of Operating Systems - The Microkernel Mach
11. The NeXTStep Operating System
Main Features
Gregor Schmidt
7
Origins of Operating Systems - The Microkernel Mach
12. The NeXTStep Operating System
Main Features
Mach Kernel
BSD4.3 user space server
NeXTSTEP user interface
Gregor Schmidt
7
Origins of Operating Systems - The Microkernel Mach
13. The NeXTStep Operating System
Main 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
Gregor Schmidt
7
Origins of Operating Systems - The Microkernel Mach
14. The NeXTSTEP Operating System
Demo - By Steve Jobs
Product Demonstration of NeXTSTEP Release 3.0
Gregor Schmidt
8
Origins of Operating Systems - The Microkernel Mach
15. Overview
Introduction
The NeXTSTEP operating system
The Mach Microkernel
The next steps
Gregor Schmidt
9
Origins of Operating Systems - The Microkernel Mach
16. The Mach Microkernel
History
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
Gregor Schmidt
10
Origins of Operating Systems - The Microkernel Mach
17. The Mach Microkernel
Microkernel
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
Gregor Schmidt
11
Origins of Operating Systems - The Microkernel Mach
18. The Mach Microkernel
Microkernel
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
small interface
little trusted computing base
Gregor Schmidt
11
Origins of Operating Systems - The Microkernel Mach
19. The Mach Microkernel
Microkernel
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
lots of communication
small interface overhead
little trusted computing base lots of synchronization
Gregor Schmidt
11
Origins of Operating Systems - The Microkernel Mach
20. The Mach Microkernel
Main Features
Preemptive Multitasking
Multithreading, Multiprocessing
Memory protection, virtual memory
Interprocess communication via mach messages
Gregor Schmidt
12
Origins of Operating Systems - The Microkernel Mach
21. The Mach Microkernel
Interprocess 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
Gregor Schmidt
13
Origins of Operating Systems - The Microkernel Mach
22. The Mach Microkernel
How to find Ports in NeXTStep
Environment Manager
for local use only
Network Message Server
enables network-wide communication
Service Server
Gregor Schmidt
14
Origins of Operating Systems - The Microkernel Mach
23. Anhand eines Klient/Server-Beispiels wollen wir die Möglichkeiten und Werkzeuge
die Mach bietet, erläutern. Die beiden Komponenten unserer verteilten Anwendung
heißen packets_client und packets_server. Der Klient kann Nachrichten mit
The Mach Microkernelan den Server schicken. Er ruft dazu eine Routine send_pa-
einem Integer-Wert
cket() auf. Der Server druckt für jeden empfangenen Wert eine Notiz aus. Sendet
How to man sehr vielein NeXTStep
find Ports Nachrichten hintereinander oder senden viele Klienten auf einmal an
einen Server, so kann eine Überflutung von Puffern oder des Netzwerkes autreten. Zum
Aufspüren derartiger Fälle ist unsere Anwendung geeignet — wenn man Klient und
Environment Server noch ein wenig erweitert.
Manager
for local use only Klient und Server kommunizieren können, stellt sich nun die Frage, wie beide
Bevor
voneinander erfahren. Sie kommunizieren dazu mit einem Namensdienst. Bild 1 zeigt
Network Message Server
die Initialisierungsschritte, die vor der ersten Klient/Server-Interaktion nötig sind.
enables network-wide communication
Service Server netname_look_up()
2 netmsgserver
packets_client 3
4 netname_check_in()
1
send_packet()
packets_server
Bild 1: Der Mach-Namensdienst
Gregor Schmidt
14
Origins of Operating Systems - The Microkernel Mach
24. Anhand eines Klient/Server-Beispiels wollen wir die Möglichkeiten und Werkzeuge
die Mach bietet, erläutern. Die beiden Komponenten unserer verteilten Anwendung
heißen packets_client und packets_server. Der Klient kann Nachrichten mit
The Mach Microkernelan den Server schicken. Er ruft dazu eine Routine send_pa-
einem Integer-Wert
cket() auf. Der Server druckt für jeden empfangenen Wert eine Notiz aus. Sendet
How to man sehr vielein NeXTStep
find Ports Nachrichten hintereinander oder senden viele Klienten auf einmal an
einen Server, so kann eine Überflutung von Puffern oder des Netzwerkes autreten. Zum
Aufspüren derartiger Fälle ist unsere Anwendung geeignet — wenn man Klient und
Environment Server noch ein wenig erweitert.
Manager
for local use only Klient und Server kommunizieren können, stellt sich nun die Frage, wie beide
Bevor
voneinander erfahren. Sie kommunizieren dazu mit einem Namensdienst. Bild 1 zeigt
Network Message Server
die Initialisierungsschritte, die vor der ersten Klient/Server-Interaktion nötig sind.
enables network-wide communication
Service Server netname_look_up()
2 netmsgserver
packets_client 3
4 netname_check_in()
1
send_packet()
packets_server
in Mac OS X: Bootstrap Server Bild 1: Der Mach-Namensdienst
Gregor Schmidt
14
Origins of Operating Systems - The Microkernel Mach
25. The Mach Microkernel
Message Sending the Easy Way
Mach Interface Generator
Corba-like Stub-and-Skeleton-Generator
Gregor Schmidt
15
Origins of Operating Systems - The Microkernel Mach
26. generiert, während auf der Server-Seite ein message passing interface zu d
Funktionen entsteht, die die Server-Funktionalität implementieren. Der Program
hat mit dem Erzeugen von Mach-Nachrichten-Strukturen, dem Eintragen von Ty
Längeninformation und der Zuordnung verschiedener Typen von Nachrichten z
The Mach Microkernel
schiedenen Funktionen auf der Server-Seite nichts zu tun. In Bild 4 zeigen wir d
MIG generierten Dateien in ihrer Beziehung zu ‘‘von Hand’’ codierten
Message Sending grammstücken. Way
the Easy
Mach Interface Generator packets.defs
Corba-like Stub-and-Skeleton-Generator
mig
generate generate
packets.h
include include
packets_client.c packetsUser.c
packetsServer.c packets_server_main.c
link link
packets_server
packets_client
Gregor Schmidt
Bild 4: Generieren von Klient und Systems -aus einer MIGMach 15
Server The Microkernel Spezifikation
Origins of Operating
In Bild 4 bezeichnen Ellipsen jeweils ausführbare Programme. Zentral is
/usr/bin/mig, der Mach Interface Generator (MIG). Namen in Kästchen beze
Dateien mit C-Quelltext oder MIG-Spezifikationen. Die in Bild 4 fett gedr
Dateinamen deuten auf Programmstücke, die der Programmierer zu erstellen hat, de
27. generiert, während auf der Server-Seite ein message passing interface zu d
Funktionen entsteht, die die Server-Funktionalität implementieren. Der Program
hat mit dem Erzeugen von Mach-Nachrichten-Strukturen, dem Eintragen von Ty
Längeninformation und der Zuordnung verschiedener Typen von Nachrichten z
The Mach Microkernel
schiedenen Funktionen auf der Server-Seite nichts zu tun. In Bild 4 zeigen wir d
MIG generierten Dateien in ihrer Beziehung zu ‘‘von Hand’’ codierten
Message Sending grammstücken. Way
the Easy
Mach Interface Generator packets.defs
Corba-like Stub-and-Skeleton-Generator
mig
generate generate
Message encoding and
decoding for free packets.h
include include
Little RPC-specific code
packets_client.c packetsUser.c
packetsServer.c packets_server_main.c
link link
packets_server
packets_client
Gregor Schmidt
Bild 4: Generieren von Klient und Systems -aus einer MIGMach 15
Server The Microkernel Spezifikation
Origins of Operating
In Bild 4 bezeichnen Ellipsen jeweils ausführbare Programme. Zentral is
/usr/bin/mig, der Mach Interface Generator (MIG). Namen in Kästchen beze
Dateien mit C-Quelltext oder MIG-Spezifikationen. Die in Bild 4 fett gedr
Dateinamen deuten auf Programmstücke, die der Programmierer zu erstellen hat, de
28. The Mach Microkernel
Interprocess Communication by Example
Calculator example
Server providing calculation facilities
Client using command line interface to receive tasks and queries server for
the answer
Gregor Schmidt
16
Origins of Operating Systems - The Microkernel Mach
29. Overview
Introduction
The NeXTSTEP operating system
The Mach Microkernel
The next steps
Gregor Schmidt
17
Origins of Operating Systems - The Microkernel Mach
30. 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
Gregor Schmidt
18
Origins of Operating Systems - The Microkernel Mach
31. The next steps
OpenStep 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
Gregor Schmidt
19
Origins of Operating Systems - The Microkernel Mach
32. 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
Gregor Schmidt
20
Origins of Operating Systems - The Microkernel Mach
33. 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
Gregor Schmidt
21
Origins of Operating Systems - The Microkernel Mach