SlideShare ist ein Scribd-Unternehmen logo
1 von 33
The Microkernel Mach
                      in NeXTSTEP



Gregor Schmidt
2006-06-29




                                                                       Gregor Schmidt
                                                                                          1
                                    Origins of Operating Systems - The Microkernel Mach
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
Overview


 Introduction
 The NeXTSTEP operating system
 The Mach Microkernel
 The next steps




                                                                     Gregor Schmidt
                                                                                        3
                                  Origins of Operating Systems - The Microkernel Mach
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
The NeXT computers




                                                        Gregor Schmidt
                                                                           5
                     Origins of Operating Systems - The Microkernel Mach
The NeXT computers


 based on Motorola 680x0
 2 basic models
     NeXTcube (1989)
     NeXTstation (1990)




                                                               Gregor Schmidt
                                                                                  5
                            Origins of Operating Systems - The Microkernel Mach
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
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
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
Overview


 Introduction
 The NeXTSTEP operating system
 The Mach Microkernel
 The next steps




                                                                     Gregor Schmidt
                                                                                        6
                                  Origins of Operating Systems - The Microkernel Mach
The NeXTStep Operating System
Main Features




                                                                   Gregor Schmidt
                                                                                      7
                                Origins of Operating Systems - The Microkernel Mach
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
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
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
Overview


 Introduction
 The NeXTSTEP operating system
 The Mach Microkernel
 The next steps




                                                                     Gregor Schmidt
                                                                                        9
                                  Origins of Operating Systems - The Microkernel Mach
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
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
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
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
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
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
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
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
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
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
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
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
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
Overview


 Introduction
 The NeXTSTEP operating system
 The Mach Microkernel
 The next steps




                                                                     Gregor Schmidt
                                                                                        17
                                  Origins of Operating Systems - The Microkernel Mach
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
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
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Address/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerAddress/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerPlatonov Sergey
 
Understand more about C
Understand more about CUnderstand more about C
Understand more about CYi-Hsiu Hsu
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!Mr. Vengineer
 
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKMarian Marinov
 
Project ACRN hypervisor introduction
Project ACRN hypervisor introduction Project ACRN hypervisor introduction
Project ACRN hypervisor introduction Project ACRN
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學National Cheng Kung University
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VRISC-V International
 
Launch the First Process in Linux System
Launch the First Process in Linux SystemLaunch the First Process in Linux System
Launch the First Process in Linux SystemJian-Hong Pan
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debuggingHao-Ran Liu
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCKernel TLV
 
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiA look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiCysinfo Cyber Security Community
 
用十分鐘 向jserv學習作業系統設計
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計鍾誠 陳鍾誠
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
 
Linux kernel tracing
Linux kernel tracingLinux kernel tracing
Linux kernel tracingViller Hsiao
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedVmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedAdrian Huang
 

Was ist angesagt? (20)

Address/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerAddress/Thread/Memory Sanitizer
Address/Thread/Memory Sanitizer
 
Understand more about C
Understand more about CUnderstand more about C
Understand more about C
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
 
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDK
 
from Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Worksfrom Source to Binary: How GNU Toolchain Works
from Source to Binary: How GNU Toolchain Works
 
Project ACRN hypervisor introduction
Project ACRN hypervisor introduction Project ACRN hypervisor introduction
Project ACRN hypervisor introduction
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
Static partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-VStatic partitioning virtualization on RISC-V
Static partitioning virtualization on RISC-V
 
Launch the First Process in Linux System
Launch the First Process in Linux SystemLaunch the First Process in Linux System
Launch the First Process in Linux System
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
 
Microkernel Evolution
Microkernel EvolutionMicrokernel Evolution
Microkernel Evolution
 
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul PillaiA look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
A look into the sanitizer family (ASAN & UBSAN) by Akul Pillai
 
用十分鐘 向jserv學習作業系統設計
用十分鐘  向jserv學習作業系統設計用十分鐘  向jserv學習作業系統設計
用十分鐘 向jserv學習作業系統設計
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
Linux kernel tracing
Linux kernel tracingLinux kernel tracing
Linux kernel tracing
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
Vmlinux: anatomy of bzimage and how x86 64 processor is booted
Vmlinux: anatomy of bzimage and how x86 64 processor is bootedVmlinux: anatomy of bzimage and how x86 64 processor is booted
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