Peter Mandl Grundkurs Betriebssysteme Architekturen, Betriebsmittelverwaltung, Synchronisation, Prozesskommunikation, Virtualisierung 5
Total Page:16
File Type:pdf, Size:1020Kb
Peter Mandl Grundkurs Betriebssysteme Architekturen, Betriebsmittelverwaltung, Synchronisation, Prozesskommunikation, Virtualisierung 5. Auflage Grundkurs Betriebssysteme Peter Mandl Grundkurs Betriebssysteme Architekturen, Betriebsmittelverwaltung, Synchronisation, Prozesskommunikation, Virtualisierung 5., aktualisierte Auflage Prof. Dr. Peter Mandl Fakultät für Informatik und Mathematik Hochschule München München, Deutschland ISBN 978-3-658-30546-8 ISBN 978-3-658-30547-5 (eBook) https://doi.org/10.1007/978-3-658-30547-5 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Springer Vieweg © Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2008, 2010, 2013, 2014, 2020 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht ausdrücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verar- beitung in elektronischen Systemen. Die Wiedergabe von allgemein beschreibenden Bezeichnungen, Marken, Unternehmensnamen etc. in diesem Werk bedeutet nicht, dass diese frei durch jedermann benutzt werden dürfen. Die Berechtigung zur Benutzung unterliegt, auch ohne gesonderten Hinweis hierzu, den Regeln des Markenrechts. Die Rechte des jeweiligen Zeicheninhabers sind zu beachten. Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag, noch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder Äußerungen. Der Verlag bleibt im Hinblick auf geografische Zuordnungen und Gebietsbezeichnungen in veröf- fentlichten Karten und Institutionsadressen neutral. Planer: Sybille Thelen Springer Vieweg ist ein Imprint der eingetragenen Gesellschaft Springer Fachmedien Wiesbaden GmbH und ist ein Teil von Springer Nature. Die Anschrift der Gesellschaft ist: Abraham-Lincoln-Str. 46, 65189 Wiesbaden, Germany Vorwort Betriebssysteme stellen Dienste für Anwendungssysteme bereit und werden auch nur für diese entwickelt. Ohne Anwendung bräuchte man nämlich auch kein Betriebssystem. Heutige Betriebssysteme wie Unix, Linux, Windows, macOS oder Großrechnerbetriebs- systeme sind sehr komplexe Programmsysteme, in denen viele Jahre Entwicklungsleis- tung stecken und die auch ständig weiterentwickelt werden müssen. Sie nutzen viele Techniken und Strategien zur Gewährleistung einer hohen Leistungsfähigkeit und zur Be- reitstellung von optimalen Services für die Anwendungen. Das vorliegende Lehrbuch befasst sich mit den Grundlagen von Betriebssystemen. In kompakter Form werden wichtige Grundkonzepte, Verfahren und Algorithmen dargestellt, die in modernen Betriebssystemen eingesetzt werden. Das Buch behandelt die folgenden Themenkomplexe: 1. Einführung 2. Betriebssystemarchitekturen und Betriebsarten 3. Interruptverarbeitung 4. Prozesse und Threads 5. CPU-Scheduling 6. Synchronisation und Kommunikation 7. Hauptspeicherverwaltung 8. Geräte- und Dateiverwaltung 9. Betriebssystemvirtualisierung Der Schwerpunkt liegt bei sog. Mehrzweckbetriebssystemen oder Universalbetriebs- systemen, die überwiegend für betriebliche Informationssysteme eingesetzt werden, weni- ger bei Realzeit- bzw. Embedded Systemen, die mehr in technischen Fragestellungen re- levant sind. Einige grundlegende Konzepte gelten aber für alle Typen von Betriebssystemen. Kap. 1 enthält eine Einführung in grundlegende Konzepte und Aufgaben von Betriebs- systemen sowie eine historische Betrachtung. Kap. 2 stellt wichtige Architekturvarianten und Betriebsarten von Betriebssystemen vor. In Kap. 3 werden die Konzepte zur Interrupt- bearbeitung und zur Behandlung von Systemaufrufen diskutiert. V VI Vorwort Im Kap. 4 wird erläutert, wie heutige Betriebssysteme die Ressourcen „Prozess“ und „Thread“ verwalten. Was Threads sind und wie sie in höheren Programmiersprachen wie Java und C# verwendet werden können, wird ebenfalls dargestellt. Kap. 5 beschreibt ver- schiedene Strategien zur Verwaltung von Prozessen und Threads (CPU-Scheduling = Ab- laufplanung) und erläutert, wie ein Betriebssystem einen Prozess-/Threadwechsel durch- führt (Dispatching =Arbeitsvorbereitung, Disposition). Verschiedene Scheduling-Strategien werden vorgestellt und mit Fallbeispielen unterlegt. Das Thema Synchronisation und Kommunikation wird in Kap. 6 behandelt, wobei die grundlegenden Prinzipien paralleler bzw. nebenläufiger Bearbeitung von Objekten durch Prozesse und Threads erläutert werden. Als Mechanismen zur Synchronisation nebenläu- figer Prozesse und Threads werden Locks, Semaphore, Mutexe und Monitore behandelt. Es wird gezeigt, wie man diese Mechanismen in höheren Sprachen wie Java und C# ein- setzen kann. Kommunikationsmöglichkeiten zwischen Prozessen oder Threads werden ebenfalls vorgestellt, wobei z. B. auf das Pipe-Konzept eingegangen wird. In Kap. 7 werden schließlich die Konzepte der Hauptspeicherverwaltung ausführlich erläutert, wobei die virtuelle Speichertechnik im Mittelpunkt steht. Seitenersetzungsstra- tegien werden vorgestellt und Ansätze für die Verwaltung großer Adressräume skizziert. Ein grundlegender Einblick in einige Konzepte der Geräte- und Dateiverwaltung in- nerhalb von Betriebssystemen folgt in Kap. 8. Es wird erläutert, wie die Geräteverwaltung ins Betriebssystem eingebettet ist und wie Dateisysteme prinzipiell funktionieren. Schließlich befasst sich das Kap. 9 mit den grundlegenden Konzepten und Lösungsan- sätzen für die Virtualisierung von Betriebssystemen. Im Anhang sind einige sinnvolle Ergänzungen zu finden. Hier werden häufig verwen- dete Bezeichnungen für große Zahlen, zu den metrischen Grundeinheiten, die Dezimal- und die Binärpräfix-Notation und einige gebräuchliche Datenstrukturen, die auch in Be- triebssystemen häufig verwendet werden, überblicksartig erläutert. In diesem Buch wird ein praxisnaher Ansatz gewählt. Der Stoff wird mit vielen Bei- spielen aus aktuell relevanten Betriebssystemen und Programmiersprachen angereichert. Als Beispiel-Betriebssysteme werden vorwiegend Windows, Unix und Linux herangezo- gen. Zu jedem Kapitel sind Übungsaufgaben beigefügt. Für das Verständnis einiger Pro- grammbeispiele sind grundlegende Kenntnisse von Programmiersprachen (C, C++, Java und C#) nützlich, jedoch können die wesentlichen Konzepte auch ohne tiefere Program- mierkenntnisse verstanden werden. Vom Leser werden ansonsten keine weiteren Grund- kenntnisse vorausgesetzt. In der zweiten Auflage wurden textliche Überarbeitungen sowie einige Aktualisierun- gen vorgenommen und es wurden zahlreiche Fehler behoben. Der Aufbau des Buches blieb bis auf die Aufteilung von Kap. 1 in drei Einzelkapitel unverändert. Die Einführung in wichtige Datenstrukturen wurde in den Anhang verlegt. In der dritten Auflage wurde die Kapitelaufteilung ebenfalls beibehalten und es wurde das Kap. 9 zum Thema Betriebssystemvirtualisierung ergänzt. Dieses Thema war uns auf- grund der immensen Entwicklung in den letzten Jahren ein eigenes Kapitel wert. Inner- halb der einzelnen Kapitel wurden teilweise umfangreiche Aktualisierungen vorgenommen. Vorwort VII Der didaktische Aufbau wurde verbessert und es wurden neue Fallbeispiele wie etwa das Betriebssystem macOS in die einzelnen Kapitel eingearbeitet. Die vierte Auflage dient der Aktualisierung und Fehlerbehebung, wobei die grundle- gende Struktur beibehalten wurde. Die fünfte Auflage dient vor allem der Aktualisierung der einzelnen Kapitel, der Feh- lerbehebung und der Komprimierung, wobei die grundlegende Struktur beibehalten wurde. Das Kap. 6 wurde etwas gekürzt, die C#-Beispiele zur Synchronisation sowie auch einige Aspekte der Kommunikation wurden entfernt. Der Anhang wurde ebenfalls etwas reduziert. Bedanken möchte ich mich sehr herzlich bei meinen Kolleginnen und Kollegen sowie bei all meinen Tutoren für die Diskussionen im Rahmen der Vorlesungen und Übungen. Ganz herzlich möchte ich mich an dieser Stelle für die Anregungen von Studierenden be- danken, die das Buch für die Nachbearbeitung von Vorlesungen und zur Prüfungsvorberei- tung nutzten. Ein herzliches Dankeschön geht auch an meine Kolleginnen und Kollegen aus anderen Hochschulen, die das Buch ebenfalls für ihre Veranstaltungen verwenden und mir wichtige Hinweise und Anregungen übermittelten. Für die zahlreichen textlichen Hin- weise und die inhaltlichen Verbesserungsvorschläge zur zweiten Auflage möchte ich mei- nem Kollegen Herrn Prof. Dr. Christian Vogt recht herzlich danken. Dem Verlag, insbe- sondere Frau Sybille Thelen, danke ich für die Unterstützung bei den ersten beiden Auflagen sowie der vierten Auflage und für die allzeit problemlose Zusammenarbeit. Bei Frau Maren Mithöfer möchte ich mich ebenfalls ganz herzlich für die konstruktive Zusam- menarbeit und für die wertvolle Unterstützung bei der dritten Auflage bedanken. Fragen und Korrekturvorschläge richten Sie bitte an [email protected]. Ich freue mich auf weitere Vorschläge, die sich aus der Nutzung des Buches ergeben. Begleitende Infor- mationen zur Vorlesung finden Sie http://www.prof-mandl.de oder unter https://github. com/GrundkursBetriebssysteme. München Peter Mandl April 2020 Inhaltsverzeichnis 1 Einführung. 1 1.1 Computersysteme ������������������������������������������������������������������������������������������