SlideShare ist ein Scribd-Unternehmen logo
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?

ARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- OverviewARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- Overview
National Cheng Kung University
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
National Cheng Kung University
 
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
Jian-Hong Pan
 
Address/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerAddress/Thread/Memory Sanitizer
Address/Thread/Memory Sanitizer
Platonov Sergey
 
Embedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile Devices
National Cheng Kung University
 
從線上售票看作業系統設計議題
從線上售票看作業系統設計議題從線上售票看作業系統設計議題
從線上售票看作業系統設計議題
National Cheng Kung University
 
How shit works: the CPU
How shit works: the CPUHow shit works: the CPU
How shit works: the CPU
Tomer Gabel
 
QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation
Jiann-Fuh Liaw
 
Microkernel Evolution
Microkernel EvolutionMicrokernel Evolution
Microkernel Evolution
National Cheng Kung University
 
Learn C Programming Language by Using GDB
Learn C Programming Language by Using GDBLearn C Programming Language by Using GDB
Learn C Programming Language by Using GDB
National Cheng Kung University
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
National Cheng Kung University
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
National Cheng Kung University
 
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by 丹田 賢
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by  丹田 賢インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by  丹田 賢
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by 丹田 賢
CODE BLUE
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
National Cheng Kung University
 
Slab Allocator in Linux Kernel
Slab Allocator in Linux KernelSlab Allocator in Linux Kernel
Slab Allocator in Linux Kernel
Adrian Huang
 
Linux Porting
Linux PortingLinux Porting
Linux Porting
Anil Kumar Pugalia
 
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
Cysinfo Cyber Security Community
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介
Wen Liao
 
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
Kuniyasu Suzaki
 
Unix v6 Internals
Unix v6 InternalsUnix v6 Internals

Was ist angesagt? (20)

ARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- OverviewARM and SoC Traning Part I -- Overview
ARM and SoC Traning Part I -- Overview
 
The Internals of "Hello World" Program
The Internals of "Hello World" ProgramThe Internals of "Hello World" Program
The Internals of "Hello World" Program
 
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
 
Address/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerAddress/Thread/Memory Sanitizer
Address/Thread/Memory Sanitizer
 
Embedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile DevicesEmbedded Virtualization applied in Mobile Devices
Embedded Virtualization applied in Mobile Devices
 
從線上售票看作業系統設計議題
從線上售票看作業系統設計議題從線上售票看作業系統設計議題
從線上售票看作業系統設計議題
 
How shit works: the CPU
How shit works: the CPUHow shit works: the CPU
How shit works: the CPU
 
QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation
 
Microkernel Evolution
Microkernel EvolutionMicrokernel Evolution
Microkernel Evolution
 
Learn C Programming Language by Using GDB
Learn C Programming Language by Using GDBLearn C Programming Language by Using GDB
Learn C Programming Language by Using GDB
 
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
給自己更好未來的 3 個練習:嵌入式作業系統設計、實做,與移植 (2015 年春季 ) 課程說明
 
淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道 淺談探索 Linux 系統設計之道
淺談探索 Linux 系統設計之道
 
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by 丹田 賢
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by  丹田 賢インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by  丹田 賢
インサイドShell:.NETハッキング技術を応用したPowerShell可視性の向上 by 丹田 賢
 
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
中輟生談教育: 完全用開放原始碼軟體進行 嵌入式系統教學
 
Slab Allocator in Linux Kernel
Slab Allocator in Linux KernelSlab Allocator in Linux Kernel
Slab Allocator in Linux Kernel
 
Linux Porting
Linux PortingLinux Porting
Linux Porting
 
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
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介
 
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
 
Unix v6 Internals
Unix v6 InternalsUnix v6 Internals
Unix v6 Internals
 

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