Vorwort zur 1. und 2. Auflage
Obwohl heute Middleware-Systeme zur VerfĂŒgung stehen, die in vielen FĂ€llen unabhĂ€ngig von einem darunter laufenden Betriebssystem sind, ist die Betriebssystemthematik aus der Informatik-Grundausbildung aus verschiedenen GrĂŒnden nicht wegzudenken. Ohne Kenntnisse der hauptsĂ€chlichen Strukturen, Mechanismen und der Programmierschnittstelle eines Betriebssystems ist es nicht möglich, spezielle Systemdienste zu benutzen oder die Effizienz eines Systems zu optimieren. Es ist ein altes Ideal des Software Engineering, dass die hinter einer Schnittstelle stehende Implementierung als solche unwichtig ist und daher ignoriert werden soll. Auf Betriebssysteme bezogen wĂŒrde dies heiĂen, nur die Programmierschnittstelle zu betrachten. Leider sind die dazugehörigen Beschreibungen praktisch immer minimal und befassen sich kaum mit den Konzepten der dahinter stehenden Implementierungen. Dies erschwert nicht nur ein tieferes VerstĂ€ndnis der Systemdienste, sondern kann auch zu einer inadĂ€quaten Nutzung in komplexen Applikationen fĂŒhren. Dieses Buch will Studierenden der Informatik und weiteren interessierten Personen die Grundlagen der Betriebssystemtheorie aus einer praktischen Perspektive nĂ€her bringen. Damit ist gemeint, dass nicht nur die Prinzipien von Betriebssystemen, sondern auch deren Nutzung bei der systemnahen Programmierung aufgezeigt werden. Dieser Ansatz entspricht der Idee des Bachelor-Studiums, das eine BerufsbefĂ€higung nach drei Studienjahren anstrebt und die forschungsorientierte Ausbildung in die Master- und Doktoratstufe verschiebt.
Methodisch wird ein Weg zwischen der Betrachtung anfallender Probleme und ihren Lösungen auf einer theoretischen und einer praktischen Basis beschritten. Der Praxisbezug orientiert sich an den zwei am meisten verbreiteten Systemwelten, nĂ€mlich Unix und Windows. Kenntnisse der Prozessortechnik werden keine vorausgesetzt. Wo nötig werden die wichtigsten Prozessorgrundlagen erklĂ€rt, soweit sie fĂŒr das VerstĂ€ndnis des Betriebssystems und der systemnahen Programmierung hilfreich sind. Die zahlreichen Beschreibungen von Systemfunktionen dienen dazu, die Programmbeispiele genau zu verstehen. Dies ist im Zeitalter der Java-Programmierung umso wichtiger, da eine grĂŒndliche Ausbildung in der Programmiersprache C nicht mehr vorausgesetzt werden kann, wenn auch C-Grundkenntnisse fĂŒr dieses Buch notwendig sind. Im Weiteren verschaffen diese Beschreibungen einen Einstieg in die Systemdokumentationen, wie sie in Form der Unix-Handbuchseiten oder der MSDN-Beschreibungen (Microsoft Developer Network) fĂŒr Windows vorliegen und erfahrungsgemÀà fĂŒr Neulinge nur schwer verstĂ€ndlich sind. Auf die Betrachtung von Computernetzen wird weitgehend verzichtet, da dieses Thema in einem Betriebssystembuch nur oberflĂ€chlich gestreift werden kann und ausgezeichnete Standardwerke zur VerfĂŒgung stehen. DafĂŒr werden als ErgĂ€nzung die aktuellen Themen Multiprozessorsysteme, Handheld-Betriebssysteme und Virtualisierungstechnologien vorgestellt.
Als Hilfe fĂŒr Dozierende stehen auf der Buch-Website http://unix.hsr.ch Ăbungsaufgaben mit Lösungen, alle Abbildungen des Buches und etliche Vorlesungsfolien in elektronischer Form zur VerfĂŒgung. AbschlieĂend bedanke ich mich bei allen Personen, die mir bei der Realisierung dieses Buchprojektes geholfen haben.
Eduard Glatz
Urdorf, im August 2005
Neuheiten in der zweiten Auflage
Eine neue Auflage erlaubt nicht nur das Aktualisieren schnell veralteter Informationen, sondern auch das Einbringen von Erfahrungen und zusĂ€tzlichen Themen. Aktualisiert haben wir die Informationen zu Windows 7, Windows CE und Symbian OS. Die ausfĂŒhrlichen tabellarischen Beschreibungen zu den Systemfunktionen sind nun nicht mehr im Buch, sondern in einer PDF-Datei zusammengefasst auf der Buch-Website (http://unix.hsr.ch) verfĂŒgbar. Auf vielfĂ€ltigen Wunsch wurde das Literaturverzeichnis ausgedehnt. Neue Themen betreffen u.a. die Linux-basierten Smartphone-Betriebssysteme Android, WebOS und Maemo, die Systemprogrammierung aus C++, Java und .NET-Sprachen, die Bauweise von SSD (Solid State Disks), spezielle Dateisystemtechnologien (Schattenkopie, Disk Scheduling) und die Vermeidung von SynchronisationsengpĂ€ssen.
Eduard Glatz
Urdorf, im Februar 2010
Inhaltsverzeichnis
1EinfĂŒhrung
1.1Zweck
1.2Definitionen
1.3Einordnung im Computersystem
1.4Betriebssystemarten
1.4.1Klassische Einteilungen
1.4.2Moderne Einteilungen
1.4.3Geschichte
1.5Betriebssystemarchitekturen
1.5.1Architekturformen
1.5.2Benutzer-/Kernmodus
1.5.3Monolithische Systeme
1.5.4Geschichtete Systeme
1.5.5Mikrokernsysteme (Client/Server-Modell)
1.5.6Multiprozessorsysteme
1.5.7Verteilte Betriebssysteme
1.5.8Beispiele von Systemarchitekturen
1.5.9ZukĂŒnftige Systemarchitekturen aus Sicht der Forschung
2ProgrammausfĂŒhrung und Hardware
2.1Rechner- und Prozessorgrundlagen
2.1.1Grundmodell eines Rechners
2.1.2Befehlsverarbeitung in der CPU
2.1.3Prozessoraufbau
2.1.4Allgemeine Prozessorregister (general purpose registers)
2.1.5Steuerregister (control registers)
2.2Grundlagen des Adressraums
2.2.1Adressraumtypen
2.2.2Bytereihenfolge (byte ordering)
2.2.3Adressraumbelegungsplan (memory map)
2.2.4Ausrichtungsregeln im Adressr...