Betriebssysteme Einführung PDF
Document Details

Uploaded by CourageousTopology
Otto-Friedrich-Universität Bamberg
Martin Eisenhardt
Tags
Summary
Dieses Dokument ist eine Einführung in Betriebssysteme und umfasst Themen wie Prozesstverwaltung, Speicherverwaltung und Geräteverwaltung, sowie die Aufgaben und Funktionen von Betriebssystemen. Es ist ein Lehrtext der Otto-Friedrich-Universität Bamberg und erläutert grundlegende Prinzipien. Autoren sind Martin Eisenhardt, u.a.
Full Transcript
3 Betriebssysteme 3 Betriebssysteme Im Kapitel Weitere Komponenten der Computerarchitektur ergab sich bereits mehr- fach die Forderung: Wir brauchen ein Betriebssystem! Und dessen Aufgaben sind: Wichtig die Verwal...
3 Betriebssysteme 3 Betriebssysteme Im Kapitel Weitere Komponenten der Computerarchitektur ergab sich bereits mehr- fach die Forderung: Wir brauchen ein Betriebssystem! Und dessen Aufgaben sind: Wichtig die Verwaltung mehrerer Prozesse, das Aus- und Einlagern von Prozessen, die Verwaltung des Hauptspeichers, die Versorgung aller Prozesse mit benötigten Teilen des Hauptspeichers, die Auswahl des jeweils nächsten Prozesses für die CPU, die Datei- und Verzeichnisverwaltung auf Datenträgern, die Verwaltung der Ein- und Ausgabegeräte. Die identifizierten Aufgabengebiete eines Betriebssystems werden in den folgenden Unterkapiteln näher beleuchtet. So geht es weiter: 3 Betriebssysteme 3.1 Einführung Betriebssysteme Gliederung 3.2 Prozessverwaltung 3.3 Speicherverwaltung 3.4 Geräteverwaltung 3.5 Dateiverwaltung Weiterführende Literatur Die hier verlinkte Online-Ausgabe eines Lehrtextes der Otto-Friedrich-Universität Hinweis Bamberg liefert in Teil III "Betriebssysteme" (Kapitel 8 bis 11) detaillierte Informa- tionen zu Betriebssystemen. Die Lektüre dieser Quelle sei unter Beachtung der gelten- den Lizenz ausdrücklich empfohlen. Autoren: Martin Eisenhardt, Andreas Henrich, Stefanie Sieber '''Rechner- und Betriebssysteme, Kommunikationssysteme, Verteilte Systeme''' Dieses Werk steht unter der Creative Commons BY-NC-ND-Lizenz http://creativecommons.org/licenses/by-nc-nd/2.0/de/ 120 / 362 3 Betriebssysteme 3.1 Einführung Betriebssysteme Weiterführende Literatur Mandl 2013 erläutert im kompletten Buch ausführlich das Thema Betriebssysteme. Es Hinweis sei als Begleitlektüre ausdrücklich empfohlen. Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten über ihre Hochschulen von Springerlink zu beziehen. Alternative Webquelle zum Thema Operating Systems: Introduction http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/1_Introduction.html Quelle im Web Dr. John T. Bell Department of Computer Science University of Illinois, Chicago Operating Systems: Operating-System Structures http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/2_Structures.html Quelle im Web Dr. John T. Bell Department of Computer Science University of Illinois, Chicago Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1 Einführung Betriebssysteme Eisenhardt et.al. 2007 unterscheiden in Kapitel 8 zwischen Systemprogrammen und Anwendungsprogrammen, um anschließend den Begriff "Betriebssystem" zu definie- ren: Definition: Anwendungsprogramm Unter einem Anwendungsprogramm versteht man ein Computerprogramm, welches ein oder mehrere Probleme löst, die von Benutzern eines Computers gestellt werden. Definition Klassische Anwendungsprogramme sind beispielsweise: Textverarbeitung 121 / 362 3 Betriebssysteme 3.1 Einführung Betriebssysteme E-Mail-Client Browser etc. Definition: Systemprogramm Unter einem Systemprogramm versteht man ein Computerprogramm, welches der Verwaltung des Betriebs eines Computers dient. Definition Da im Kapitel Weitere Komponenten der Computerarchitektur eine Reihe von nötigen Verwaltungsaufgaben identifiziert wurden, ist bereits an dieser Stelle klar, dass ein Be- triebssystem ein spezielles Systemprogramm darstellt. Definition: Betriebssystem Ein Betriebssystem ist ein Programm, das dem Benutzer und Anwendungsprogram- men elementare Dienste bereitstellt. Das Betriebssystem steuert und überwacht die Definition Abwicklung von Programmen und regelt den Betrieb des Rechnersystems. (Nach Eisen- hardt et.al. 2007 ) Viele verschiedene Betriebssysteme Im Laufe der Jahrzehnte wurden bemerkenswert viele verschiedene Betriebssysteme entwickelt. Einen umfassenden Überblick gibt ein Wikipedia-Artikel: http://de.wikipedia.org/wiki/Liste_von_Betriebssystemen So geht es weiter: 3.1 Einführung Betriebssysteme 3.1.1 Geschichtlicher Überblick zu Betriebssystemen Gliederung 3.1.2 Nur ein Prozessor mit einem Kern 3.1.3 Zwischen Benutzer und Hardware 3.1.4 Betriebsmittel 3.1.5 Betriebsmittel sind Prozessen zugeordnet 3.1.6 Zentrale Aufgabe eines Betriebssystems 3.1.7 Betriebssystemarchitekturen 3.1.8 Betriebssystemarten 3.1.9 Vom Batch-Job zum Multitasking 3.1.10 Kernel-Mode, User-Mode und Systemaufrufe 122 / 362 3.1 Einführung Betriebssysteme 3.1.1 Geschichtlicher Überblick zu Betriebssystemen Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.1 Geschichtlicher Überblick zu Betriebssystemen Auf die Angabe eines geschichtlichen Überblicks zum Thema Betriebssysteme wird an dieser Stelle bewusst verzichtet. Die weiterführende Literatur liefert vielfältige Zusam- menfassungen. Weiterführende Literatur Mandl 2013 gibt in den Kapiteln 1.2.3 (Historische Entwicklung), 1.2.4 (Geschichte von Hinweis Microsoft Windows), 1.2.5 (Geschichte von Unix) und 1.2.6 (Geschichte von Linux) eine Zusammenfassung zum Thema. Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten über ihre Hochschulen von Springerlink zu beziehen. Es findet sich ebenfalls ein geschichtlicher Überblick bei Wikipedia. Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.2 Nur ein Prozessor mit einem Kern Alle Ausführungen und weiteren Betrachtungen in den Unterkapiteln zum Abschnitt Betriebssysteme gehen jeweils davon aus, dass der/die zu Grunde gelegten Rechner nur eine einzige CPU besitzen, die wiederum nur über einen einzelnen Prozessorkern verfügt. Unter dieser Voraussetzung ist klar definiert, dass immer nur genau ein Befehl zur Zeit auf der betreffenden CPU ausgeführt werden kann. Eine gleichzeitige (parallele) Aus- führung mehrerer Befehle ist also technisch bedingt nicht möglich. Kein Multicore, kein Hyper-Threading! Auch wenn Multicore- und Hyper-Threading-Prozessoren heute üblich sind, und in Hinweis den meisten handelsüblichen Personal Computern und Laptops verbaut sind, so be- trachten wir hier ausdrücklich nur die einfacher aufgebauten CPUs, bei denen tatsä- chlich nur ein einziger Befehl zur Zeit ausgeführt werden kann! 123 / 362 3.1 Einführung Betriebssysteme 3.1.3 Zwischen Benutzer und Hardware Weblinks Erläuterungen zu Multicore-Prozessoren bei Wikipedia. Erläuterungen zu Hyper-Threading bei Wikipedia. Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.3 Zwischen Benutzer und Hardware Die folgende Abbildung verdeutlicht, wie Anwendungsprogramm(e) und Betriebssys- tem zwischen dem Benutzer und der Hardware vermitteln: Abb. 52: Betriebssystem und Anwendungprogramm(e) vermitteln zwischen Benutzer und Hardware CC-BY Der Benutzer (Anwender) bedient ein (oder mehrere) Anwendungsprogramm(e). Die Anwendungsprogramme geben Rückmeldungen an den Anwender, oder nutzen vom Betriebssystem bereitgestellte Funktionen, um darüber mit der Hardware zu kommunizieren. 124 / 362 3.1 Einführung Betriebssysteme 3.1.3 Zwischen Benutzer und Hardware Das Betriebssystem empfängt über seine bereitgestellten Funktionen Aufträge von den Anwendungsprogrammen. Es kann die Rechtmäßigkeit dieser Aufträge prüfen und sie im positiven Fall an die Hardware weiterreichen. Die Anwendungsprogramme erhalten Rückmeldungen vom Betriebssystem über die abgelehnten, sowie die ganz oder teilweise ausgeführten Aufträge. Die Hardware führt Befehle aus, die ihr vom Betriebssystem in Auftrag gegeben wur- den. Das Betriebssystem erhält Rückmeldungen der Hardware zu den ganz oder teil- weise ausgeführten Befehlen. Auch bei auftretenden Hardware-Fehlern wird das Be- triebssystem (wenn möglich) informiert. Aufgabe 1 Aufg. 66: Was wäre wenn... (I) Aufgabe Was wäre, wenn es keine Betriebssysteme gäbe? Die Abbildung oben bestünde dann nur aus den Ebenen Benutzer, Anwendung- sprogramm und Hardware. Was bedeutet dies für die "normalen Nutzer" der Anwendungssoftware? (z.B. für den Studierenden, der seine/ihre Abschlussarbeit mit einer Textverarbeitung erstellt? Oder für den Manager, der seine E-Mails abruft?) Was bedeutet dies für die Programmierer der Anwendungssoftware? Und welche Auswirkungen hätte dies auf die Sicherheit des Systems, insbeson- dere wenn mehrere Programme quasi-parallel ausgeführt werden? Diskutiere diese Fragen in deiner Lerngruppe! Aufgabe 2 Aufg. 67: Was wäre wenn... (II) Aufgabe Was wäre, wenn es keine Betriebssysteme und keine Anwendungsprogramme gäbe? Die Abbildung oben bestünde dann nur aus den Ebenen Benutzer und Hardware. Was würden Studierende dann in Fächern wie "Grundlagen der Programmier- ung" lernen müssen? 125 / 362 3.1 Einführung Betriebssysteme 3.1.4 Betriebsmittel Eine seriöse Auseinandersetzung mit den hier gestellten Fragen sollte unweigerlich zu folgender Erkenntnis führen: Wenn es keine Betriebssysteme gäbe, dann müsste man sie so schnell wie möglich erfinden! Wichtig Aufgabe 3 Aufg. 68: Treiber Aufgabe Aus deiner Erfahrung im täglichen Umgang mit dem Computer kennst du vermut- lich Treiber für Hardware. Erläutere: Was versteht man unter einem Hardware-Treiber? Wo in der obigen Abbildung integrierst du die Treiber? Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.4 Betriebsmittel Es folgen einige wichtige Definitionen rund um Betriebsmittel: Definition: Betriebsmittel Unter einem Betriebsmittel (oder allgemein einer Ressource) eines Rechners ver- steht man eine beliebige Hardware- oder Software-Ressource. Definition Definition: Hardware-Ressource Unter einer Hardware-Ressource eines Rechners versteht man eine einzelne Hard- ware-Komponente dieses Rechners. Definition Beispiele für Hardware-Ressourcen sind: CPU (sofern Sie nur über einen einzelnen Kern verfügt; bei Mehrkern-CPUs kann jeder einzelne Kern auch als einzelne Hardware-Ressource verstanden werden; beachte dazu die Hinweise im Kapitel Nur ein Prozessor mit einem Kern) 126 / 362 3.1 Einführung Betriebssysteme 3.1.5 Betriebsmittel sind Prozessen zugeordnet Arbeitsspeicher (RAM) beliebige Geräte-Controller (und über die Controller werden die dazugehörigen Geräte auch gerne als Hardware-Ressourcen verstanden; z.B. Festplatte, Drucker, Monitor, Tastatur, Maus,...) Definition: Software-Ressource Unter einer Software-Ressource versteht man einen Prozess oder eine Datei auf ei- nem beliebigen Datenträger. Definition Man beachte an dieser Stelle den bereits bekannten Unterschied zwischen einem Pro- gramm und einem Prozess. Als versierter Anwender weißt du, dass es prinzipiell möglich ist, ein Programm auf einem PC oder Laptop mehrfach zu starten. Aus einem einzelnen Programm können Hinweis so mehrere Prozesse resultieren! Das Betriebsmittel Prozess umfasst neben dem Programmtext auch alle zugehörigen Daten im Hauptspeicher (z.B. Stack, Heap, etc.), sowie auf der CPU (z.B. die Registerin- halte). Bei dem Betriebsmittel Datei kann es sich sowohl um eine ausführbare Programmdatei handeln, als auch um eine beliebige Art von Datendatei. Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.5 Betriebsmittel sind Prozessen zugeordnet Prozesse benötigen während ihrer Abarbeitung verschiedene Betriebsmittel, um alle anfallenden Aufgaben erledigen zu können. Damit sind jedem gestarteten Prozess eine Menge von Betriebsmitteln zugewiesen. Ein Prozess benötigt (mindestens) die Betriebsmittel Festplatte, ausführbare Da- Aus der Praxis tei X sowie RAM, um aus der Datei X auf der Festplatte in den Arbeitsspeicher ge- laden zu werden. Ein Prozess benötigt das Betriebsmittel CPU um befehlsweise abgearbeitet zu werden. Ein Prozess benötigt das Betriebsmittel Grafikkarte um eine Ausgabe auf dem Bildschirm zu erzeugen. 127 / 362 3.1 Einführung Betriebssysteme 3.1.5 Betriebsmittel sind Prozessen zugeordnet etc. Es sind jedoch nicht alle Betriebsmittel während der gesamten Laufzeit mit dem Proz- ess verbunden. Es ist effizienter (gerade wenn viele Prozesse existieren), wenn Be- triebsmittel nur dann angefordert werden, wenn sie tatsächlich benötigt werden, und wieder freigegeben werden, wenn sie nicht mehr benötigt werden. Wenn du mit dem Auto von Hamburg nach München fährst, dann ist es für die Gesamt- menge an Autofahrern nicht vorteilhaft, wenn das Betriebsmittel Autobahn während Aus der Praxis der gesamten Fahrt nur exklusiv für dich reserviert wäre. (Auch wenn du selbst das sicher- lich sehr angenehm finden würdest.) Klassifizierungen Man betrachte die im Folgenden definierten Klassifizierungen: Definition: Entziehbares Betriebsmittel Unter einem entziehbaren Betriebsmittel versteht man ein Betriebsmittel, das ei- nem Prozess bei dessen Abarbeitung zu einem beliebigen Zeitpunkt und ohne neg- Definition ative Folgen entzogen werden kann. Ein Prozessor (CPU) ist ein entziehbares Betriebsmittel. Im Abschnitt Interrupt-Con- troller wurde bereits erläutert, dass keine negativen Folgen auftreten dürfen, wenn die CPU einem Prozess entzogen wird. Definition: Nicht entziehbares Betriebsmittel Unter einem nicht entziehbaren Betriebsmittel versteht man ein Betriebsmittel, das einem Prozess so lange zur Verfügung stehen muss, wie dieser es benötigt. Definition Ein vorzeitiger Entzug eines nicht entziehbaren Betriebsmittels hätte negative Folgen, die i.d.R. vom Anwender nicht gewünscht (und deshalb auch nicht erwartet) werden. Ein Drucker ist zum Beispiel ein nicht entziehbares Betriebsmittel. Druckt beispielsweise der Prozess einer Textverarbeitung gerade ein umfangreiches Dokument aus, so führt der Entzug dieses Betriebsmittels mit hoher Wahrscheinlich- keit zu negativen Folgen. 128 / 362 3.1 Einführung Betriebssysteme 3.1.5 Betriebsmittel sind Prozessen zugeordnet Man stelle sich nur einmal vor, dass während des Ausdrucks eines Briefes der Drucker dem Prozess (Textverarbeitung) entzogen wird, und einem anderen Prozess (E-Mail- Client) zugewiesen wird. Dann könnte auf der oberen Hälfte der Druckseite ein Teil des Briefes gedruckt werden, und auf der unteren Hälfte ein Teil einer zu druckenden E- Mail. Definition: Exklusiv nutzbares Betriebsmittel Unter einem exklusiv nutzbaren Betriebsmittel versteht man ein Betriebsmittel, das zu einem beliebigen Zeitpunkt nur maximal einem Prozess zugeordnet sein darf. Definition Entweder ist ein exklusiv nutzbares Betriebsmittel also gar keinem Prozess zugeord- net, oder es ist genau einem Prozess zugeordnet. Exklusiv nutzbare Betriebsmittel können prinzipiell entziehbar oder nicht entziehbar sein. Ein Prozessor (CPU) mit nur einem Kern ist nur exklusiv nutzbar (und entzieh- bar). Ein Drucker ist nur exklusiv nutzbar (und nicht entziehbar). Definition: Gemeinsam nutzbares Betriebsmittel Unter einem gemeinsam nutzbaren Betriebsmittel versteht man ein Betriebsmittel, das quasi-gleichzeitig von mehreren Prozessen genutzt werden kann. Definition Eine Festplatte ist ein Beispiel für ein gemeinsam nutzbares Betriebsmittel. Mehrere Prozesse können zur gleichen Zeit verschiedene Dateien auf der Festplatte geöffnet halten. Lediglich ein gleichzeitiger Zugriff der beteiligten Prozesse auf meh- rere Dateien ist technisch bedingt nicht möglich. Aufgabe 1 Aufg. 69: Datei nur exklusiv oder gemeinsam nutzbar? Aufgabe Ob eine einzelne Datei ein exklusiv oder ein gemeinsam nutzbares Betriebsmittel ist, kommt darauf an. Erläutere: Worauf kommt es an? Finde ein Beispiel, bei dem eine Datei nur exklusiv nutzbar ist. 129 / 362 3.1 Einführung Betriebssysteme 3.1.6 Zentrale Aufgabe eines Betriebssystems Finde ein weiteres Beispiel, bei dem eine Datei von mehreren Prozessen ge- meinsam nutzbar ist. Aufgabe 2 Aufg. 70: Welche weiteren Betriebsmittel? Aufgabe Oben auf dieser Seite heißt es: "Ein Prozess benötigt (mindestens) die Betriebsmittel Festplatte, ausführbare Datei X sowie RAM, um aus der Datei X auf der Festplatte in den Arbeitsspeicher geladen zu werden." Die Ergänzung mindestens weist darauf hin, dass noch weitere Betriebsmittel nötig sein könnten, um aus der Datei in den Arbeitsspeicher geladen zu werden. Welche weiteren Betriebsmittel könnten das sein? Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.6 Zentrale Aufgabe eines Betriebssystems Es ist an der Zeit, die zentrale Aufgabe eines Betriebssystems zu benennen: Definition: Zentrale Aufgabe eines Betriebssystems Die zentrale Aufgabe eines Betriebssystems ist die Betriebsmittelverwaltung. Definition (Und da die Begriffe Betriebsmittel und Ressource synonym verwendet werden können, spricht man auch von der Ressourcenverwaltung als zentraler Aufgabe.) Diese Definition liefert mit der Betriebsmittelverwaltung einen zentralen Oberbegriff zu den bislang bereits identifizierten Aufgaben eines Betriebssystems: Verwaltung mehrerer Prozesse Aus- und Einlagern von Prozessen Verwaltung des Hauptspeichers Versorgung aller Prozesse mit benötigten Teilen des Hauptspeichers Auswahl des jeweils nächsten Prozesses für die CPU 130 / 362 3.1 Einführung Betriebssysteme 3.1.7 Betriebssystemarchitekturen Datei- und Verzeichnisverwaltung auf Datenträgern Verwaltung der Ein- und Ausgabegeräte Selbstverständlich gibt es noch eine Reihe weiterer Aufgaben, die ein Betriebssystem übernehmen kann. Wir beschränken uns in dieser Lerneinheit allerdings auf die hier Hinweis genannten grundlegenden Tätigkeiten. Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.7 Betriebssystemarchitekturen Dieses Kapitel wird in der weiterführenden Literatur behandelt: Weiterführende Literatur Mandl 2013 erläutert in Kapitel 2.2 verschiedene Betriebssystemarchitekturen. Die Hinweis Lektüre dieser Quelle sei ausdrücklich empfohlen. Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten über ihre Hochschulen von Springerlink zu beziehen. Konkret beschreibt Mandl 2013 die Architektur des monolithischen Kernels und des- sen Weiterentwicklung, den schichtenorientierten Kernel. Anschließend stellt er beiden Varianten die Mikrokern-Architektur gegenüber. Als konkrete Beispiele beschreibt er in etwas vereinfachter Weise die Architekturen der Betriebssysteme Unix, Linux, Android und Windows. Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.8 Betriebssystemarten Hinsichtlich der Betriebssystemarten finden sich in der Literatur unterschiedliche Klassifizierungsansätze. Tanenbaum 2009 , Kapitel 1.4, und Strelen 2012 , Kapitel 1.3, beschreiben eine ähnliche Artenliste, die sich insbesondere an der Hardware orientiert, für welche die jeweilige Betriebssystemart konzipiert wurde. 131 / 362 3.1 Einführung Betriebssysteme 3.1.8 Betriebssystemarten Mandl 2013 klassifiziert in den Kapiteln 2.3 bis 2.7 eher nach dem Einsatzszenario, un- ter dem das jeweilige Betriebssystem nach seiner Installation betrieben werden soll. Für einen erweiterten Einblick in die Thematik seien die oben genannten Quellen als Lektüre empfohlen. Im Rahmen dieses Lernmoduls ist eine Beschränkung auf die folgenden Betriebssyste- marten ausreichend: Betriebssysteme für Großrechner Betriebssysteme für Server Betriebssysteme für Laptops und Personal Computer Betriebssysteme für Großrechner Großrechner (Mainframes) verarbeiten i.d.R. eine sehr hohe Zahl an Anfragen in sehr kurzer Zeit. Sie sind oftmals optimiert auf eine sehr hohe E/A-Rate und verfügen über eine sehr große Speicherkapazität auf den angeschlossenen Festplatten. Mainframe-Betriebssysteme arbeiten üblicherweise im Stapelbetrieb (Batch-Jobs) oder sind transaktionsorientiert. Letzteres bedeutet, dass eine sehr große Zahl an Transaktionen in sehr geringer Zeit ausgeführt werden kann. Ein Beispiel für ein Mainframe-Betriebssystem ist z/OS von IBM. Es ist u.a. auf Großre- chnern bei Banken und Versicherungen im Einsatz. Betriebssysteme für Server Server werden überwiegend über das Netzwerk von vielen verschiedenen Clients an- gesprochen. Die Anwender an den Clients erwarten eine möglichst schnelle Reaktions- zeit des Server-Betriebssystems, d.h. die angeforderten Daten oder Informationen sol- len mit nur minimaler Verzögerung bereitgestellt werden. Übliche Vertreter für Server-Betriebssysteme sind Windows Server 20xx, Unix oder Li- nux. Eine grafische Oberfläche am Server-Betriebssystem ist möglich, aber nicht erfor- derlich. Die Einsatzzwecke für Server-Betriebssysteme liegen beispielsweise bei: File-Server Print-Server E-Mail-Server Terminal-Server Betriebssysteme für Laptops und Personal Computer 132 / 362 3.1 Einführung Betriebssysteme 3.1.9 Vom Batch-Job zum Multitasking Mit dieser Art Rechnersystem dürften die meisten Leserinnen und Leser dieses Lern- moduls täglich in Berührung kommen. Üblicherweise werden hier durch einen einzi- gen Nutzer verschiedene Programme gestartet, die in der Folge quasi-parallel genutzt werden. Es handelt sich also um eine überwiegend dialogorientierte Nutzungsart: Der Anwend- er tätigt eine Eingabe (z.B. mit Maus und/oder Tastatur) und das Betriebssystem rea- giert (möglichst schnell) darauf. In der Praxis werden heute überwiegend Betriebssysteme mit grafischer Oberfläche eingesetzt, z.B. Windows 10/11, MacOS X oder Linux mit KDE oder Gnome. Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.9 Vom Batch-Job zum Multitasking Der Weg von den Batch-Jobs zum Multitasking gleicht einer Zeitreise. Batch-Jobs In den Anfangsjahren der Rechnerentwicklung wurden auszuführende Programme als sogenannte Batch-Jobs verarbeitet (Stapelbetrieb). Auf diese Verfahrensweise wurde in den Kapiteln Gesamtbild der Programmausführung und Mehrere Prozesse gleichzei- tig im Speicher eingegangen. Jeder Prozess (Batch-Job) wurde nach dem Start komplett bis zu seinem Ende bearbei- tet, erst im Anschluß startete der nächste Prozess (Batch-Job) und belegte die CPU ebenfalls bis zu seiner Terminierung. Entsprechend der Anzahl der Batch-Jobs wurde dieses Prinzip wiederholt, der letzte Prozess in der Reihe musste damit auch am längs- ten warten, bis er endlich gestartet wurde. Multitasking Im Kapitel Quasi-gleichzeitige Ausführung mehrerer Prozesse wurde erläutert, wie mehrere Prozesse sich bei ihrer Abarbeitung auf der CPU abwechseln können. Dieses Verfahren wird Multitasking genannt, oder auf deutsch Mehrprogrammbetrieb. Diese geänderte Vorgehensweise markiert einen gewaltigen Meilenstein in der Infor- matik, da sich hierdurch - neben einer besseren Auslastung des Rechners - ganz andere Möglichkeiten in der Interaktion zwischen dem Computersystem und dem Anwender auftun. 133 / 362 3.1 Einführung Betriebssysteme 3.1.10 Kernel-Mode, User-Mode und Systemaufrufe Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.1.10 Kernel-Mode, User-Mode und Systemaufrufe Solange auf einem Rechner nur ein einzelner Prozess im Hauptspeicher gehalten wurde und auf dessen CPU ablief, war alles noch ganz einfach: Ein Betriebssystem wurde nicht benötigt und über Sicherheit musste man sich keine Gedanken machen. Sobald aber mehrere Prozesse quasi-parallel auf einem System ablaufen, wird es kom- plexer: Jeder einzelne Prozess besitzt eigene Daten, und es muss dafür gesorgt werden, dass nur der berechtigte Prozess Zugriff auf diese Daten hat. Für alle anderen Pro- zesse muss sichergestellt sein, dass sie keinen unberechtigten Zugriff auf fremde Daten besitzen. Mehrere Prozesse müssen sich auch in fairer Weise auf der CPU abwechseln, dam- it alle ihre Aufgabe erfüllen können. Dabei muss es eine zentrale Stelle geben, die den fairen Wechsel durchsetzt. Dies sind nur zwei Beispiele, die letztlich zu der Entwicklung von Betriebssystemen geführt haben. Damit ein Betriebssystem aber diese (und weitere) Aufgaben erfüllen kann, benötigt es auf einem Rechnersystem mehr Privilegien als jeder normale Proz- ess (als also jedes Anwendungsprogramm). Aus diesem Grund werden bei der Abarbeitung von Befehlen auf der CPU zwei Modi unterschieden: 1. Kernel-Mode 2. User-Mode Kernel-Mode Arbeitet die CPU im Kernel-Mode, so ist jeder beliebige Befehl zur Ausführung zugelas- sen. Es kann auf sämtliche Speicherbereiche für Daten- und Programmtext, sowie auf alle Betriebsmittel zugegriffen werden. Hier ist alles erlaubt, es bestehen die höchsten Privilegien. (Mandl 2013 nennt diesen Modus deshalb auch den privilegierten Modus.) Durch ein Steuer- oder Kontrollregister auf der CPU wird der Kernel-Mode angezeigt. Das Betriebssystem arbeitet üblicherweise im Kernel-Mode und hat somit alle Mö- glichkeiten, seine definierten Aufgaben zu erfüllen. 134 / 362 3.1 Einführung Betriebssysteme 3.1.10 Kernel-Mode, User-Mode und Systemaufrufe User-Mode Arbeitet die CPU im User-Mode, so ist nur ein eingeschränkter Befehlssatz zur Ausfüh- rung zugelassen. Es sind also nicht alle Befehle erlaubt, ebenso kann nicht auf alle Speicherbereiche und auch nicht auf alle Betriebsmittel zugegriffen werden. Durch ein Steuer- oder Kontrollregister auf der CPU wird der User-Mode angezeigt. Anwendungsprogramme arbeiten üblicherweise im User-Mode. Diese haben damit nur sehr eingeschränkte Möglichkeiten, das soll auch so sein. Übergang vom User-Mode in den Kernel-Mode Durch die Unterteilung in User-Mode und Kernel-Mode muss klar definiert sein, wie ein Übergang von dem einen in den anderen Modus stattfinden kann. Ein Übergang vom höher privilegierten Kernel-Mode in den User-Mode ist unproble- matisch, da hierbei die Rechte eingeschränkt werden, und somit keine Sicherheitsbe- denken bestehen. Das Betriebssystem veranlasst diesen Übergang, wenn es dem Proz- ess eines Anwendungsprogramms die CPU zuteilt. Anders verhält es sich beim Übergang vom User-Mode in den Kernel-Mode. Der Proz- ess eines Anwendungsprogramms darf nicht über die umfassenden Rechte des Kernel- Modes verfügen. Er kann sie deshalb nur indirekt bekommen, indem er einen soge- nannten Systemaufruf ausführt. Definition: Systemaufruf Unter einem Systemaufruf (oder: Systemcall, Syscall) versteht man den von einem im User-Mode ablaufenden Prozess getätigten Aufruf einer vom Betriebssystem zur Definition Verfügung gestellten Funktion, welche nur im Kernel-Mode ausgeführt werden kann. Durch den Systemaufruf gibt der im User-Mode ablaufende Prozess die Kontrolle zur- ück an das Betriebssystem, welches die gewünschte Funktion (nach einem Umschalten in den Kernel-Mode) stellvertretend ausführt. Das Betriebssystem hat damit die Möglichkeit, durch vorherige Sicherheitsüberprü- fungen festzustellen, ob der aufrufende Prozess zur Ausführung der gewünschten Funktion überhaupt berechtigt ist, und ob auch sonst keine anderen Gegebenheiten gegen eine Ausführung sprechen. Ist die betreffende Funktion ausgeführt (oder wurde sie aufgrund der Überprüfungen verweigert), so wird zur Beendigung des Systemaufrufs wieder in den User-Mode zur- ückgeschaltet, und das Betriebssystem gibt die Kontrolle zurück an den aufrufenden 135 / 362 3.1 Einführung Betriebssysteme 3.1.10 Kernel-Mode, User-Mode und Systemaufrufe Prozess, der i.d.R. ein Ergebnis seines Systemaufrufs empfängt und in der Folge auf das Resultat reagieren kann. Beispiel Ein Anwendungsprogramm möchte auf eine Datei zugreifen. Beispiel Der im User-Mode ablaufende Prozess eines Anwendungsprogramms möchte auf eine Datei zugreifen. Diese E/A-Handlung ist jedoch nur im Kernel-Mode zugelassen. Das Betriebssystem stellt dem Anwendungsprogramm deshalb eine Reihe von Systemau- frufen zur Verfügung, welche Dateizugriffe ermöglichen, z.B.: open read write close Wird jetzt ein Systemaufruf getätigt, so entspricht dies der Auslösung eines (Soft- ware-) Interrupts. Der (im User-Mode) laufende Prozess wird angehalten und der wei- tere Ablauf ist: die zugehörige Interrupt-Service-Routine wird ausgeführt (dadurch wird Be- triebssystem-Code ausgeführt), es wird in den Kernel-Mode geschaltet, notwendige Überprüfungen werden durchgeführt (z.B. dürfen nicht quasi-gleich- zeitig mehrere Prozesse in eine Datei schreiben), der Dateizugriff wird entweder erlaubt und durchgeführt oder verweigert, es wird in den User-Mode zurückgeschaltet, der zuvor angehaltene Prozess wird wieder gestartet, dabei wird ihm ein Rückgabewert mit dem Ergebnis des Systemaufrufs zur Verfü- gung gestellt. Systemaufruf durch Anwendungsprogrammierer Der folgende JAVA-Quelltext verdeutlicht, wie Systemaufrufe durch einen Anwendung- sprogrammierer getätigt werden: import java.io.FileWriter; import java.io.IOException; Code public class Beispiel_Systemaufrufe { 136 / 362 3.1 Einführung Betriebssysteme 3.1.10 Kernel-Mode, User-Mode und Systemaufrufe public static void main(String[] args) { FileWriter fw; try { // Hier folgen drei Systemaufrufe: fw = new FileWriter("hallo.txt"); fw.write("Hallo Systemaufruf!"); fw.close(); } catch (IOException e) { System.out.println( "Es ist ein Fehler aufgetreten: \r\n" + e.toString() ); } } } Innerhalb des try-Blocks der try-catch-Anweisung wird eine Datei zum Schreiben geöffnet, wird der Text Hallo Systemaufruf! in die geöffnete Datei geschrieben, wird die Datei wieder geschlossen. In jeder dieser drei Zeilen findet ein Systemaufruf statt. Es wird dabei jeweils eine von der Java-Laufzeitumgebung bereitgestellte Methode aufgerufen, diese Methode ruft intern eine vom Betriebssystem bereitgestellte Funktion auf, diese Funktion tätigt den betreffenden Systemaufruf, und liefert ggf. einen Rückgabewert bzw. im Fehlerfall eine IOException zurück. Der Anwendungsprogrammierer muss über Systemaufrufe also gar nichts Näheres wissen. Er nutzt in seinem Quelltext lediglich bereitgestellte Methoden, alles weitere Wichtig geschieht im Hintergrund. Aufgabe 1 Aufg. 71: Liste von Systemaufrufen Aufgabe 137 / 362 3 Betriebssysteme 3.2 Prozessverwaltung Recherchiere im Internet und finde eine Liste mit Systemaufrufen für ein beliebiges Betriebssystem. Aufgabe 2 Aufg. 72: Wo ist der Systemaufruf? Aufgabe Die folgende Abbildung ist ja bereits aus dem Kapitel Zwischen Benutzer und Hard- ware bekannt. Welcher Pfeil in der Abbildung symbolisiert einen Systemaufruf? Und wofür steht der Pfeil in Gegenrichtung auf derselben Ebene? Abb. 53: CC-BY Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecom- mons.org/l/by/3.0/80x15.png 3.2 Prozessverwaltung 138 / 362