· 

Aufgaben eines Betriebssystems

1. Einführung

Es gibt verschiedene Definitionen dafür, was man unter einem Betriebssystem eigentlich versteht. Das liegt vor allem daran, dass die Funktionalität und Architektur stark davon abhängt, was man mit dem gesamten Rechensystem anfangen möchte. Es macht z. B. einen Unterschied, ob du auf deinem System Software entwickeln willst, Lohnabrechnungen durchführen möchtest oder ein Flugbuchungssystem für tausende Reisebüros betreibst. 

Im Kern kann man ein Betriebssystem aber wie folgt definieren: 

Ein Betriebssystem für einen Rechner ist eine Menge von Programmen, die es ermöglichen, den Rechner zu betreiben und Applikationen auf ihm auszuführen.

Ganz grob kann man ein Betriebssystem in drei Schichten unterteilen, nämlich die Hardware-, die Applikationsebene und dazwischen das Betriebssystem als Vermittler zwischen diesen beiden Welten. 

In weiteren Artikeln werden wir dieses sehr einfache Ebenenmodell noch weiter ausbauen. Wir werden uns nun den klassischen Aufgaben eines Betriebssystems widmen.


2. Gerätesteuerung

Anwendungen sollen so weit wie möglich unabhängig von der Hardware sein, d. h. je mehr die Realisierung eines Dienstes von der Hardware abhängig ist, desto tiefer sollte dieser Dienst im Betriebssystem verortet werden. Die im System vorhandenen Geräte (Speicher- und Kommunkationsgeräte, I/O-Geräte wie Bildschirm, Tastatur und Maus) sollen vom Betriebssystem gesteuert werden, weshalb man Betriebssysteme auch unter der Bezeichnung "Steuerprogramme" kennt. Denn wie du bereits gelernt hast, handelt es sich bei Betriebssystemen ebenfalls um Programme bzw. eine Sammlung von Programmen.


3. Verwaltung von Betriebsmitteln und Ressourcen

Betriebssysteme und Anwendungen benötigen die folgenden Hardware-Ressourcen: 

  • CPU
  • I/O-Geräte
  • Kommunikationsverbindungen
  • Hauptspeicher

Das Betriebssystem hat die Aufgabe, diese Hardware-Ressourcen zu verwalten und bei konkurrierenden Anforderungen (bspw. die schnelle Reaktion auf eine Tastatureingabe vs. die Berechnung einer komplizierten mathematischen Operation) zu entscheiden, wie und in welcher Reihenfolge die Anforderungen abgearbeitet werden sollen. Die Entscheidung hängt auch von der entsprechenden Betriebsart ab. Die Ressourcenverteilung sollte

  • fair,
  • vollständig,
  • effizient (bezogen auf die Auslastung),
  • ohne viel Verwaltungsaufwand und
  • schnell

erfolgen.


4. Fehlerbehandlung

Im laufenden Betrieb kommt es zu verschiedenen Fehlern, wie bspw. der Ausfall eines Peripheriegerätes, defekte Leitungen, Zugriff auf illegale Adressen im Hauptspeicher, Papierstau im Drucker, die Division durch 0 usw.. Diese Hard- und Softwarefehler muss ein Betriebssystem erkennen und geeignet darauf reagieren können.


5. Schutz und Speicherverwaltung

Häufig arbeiten an einem Rechner mit einem Betriebssystem mehrere Personen. Es muss sichergestellt sein, dass jede Person private Daten auf dem Rechner speichern kann ohne dass jemand Unbefugtes darauf zugreift. Hierfür muss das Betriebssystem den vorhandenen Speicher verwalten und entsprechend schützen. Zudem sollte nicht jedes Programm auf den gesamten Speicher zugreifen dürfen, weshalb es hardwareseitige Schutzmechanismen wie das Grenzregister gibt. Näheres dazu erfährst du in meinem Artikel zum Hardwareschutz


6. Mehrprogrammbetrieb

Wenn ein Rechner von mehreren Benutzern gleichzeitig verwendet wird, die unterschiedliche Anwendungen gleichzeitig ausführen wollen, muss ein Betriebssystem diesen parallelen Betrieb ermöglichen, auch wenn aus Kostengründen z. B. nur eine CPU vorhanden ist. Damit würde das Betriebssystem dann eine Scheinparallelität schaffen, die jedoch oft ausreicht. Dies ist in etwa vergleichbar mit dem menschlichen Körper. Der Mensch kann auch keine Aufgaben echt parallel ausführen, denn wir haben nur ein Gehirn, das zwischen verschiedenen Aufgaben hin- und herswitchen kann. 


7. Kommunikation und Synchronisation von Prozessen

Wenn ein Betriebssystem die parallele Ausführung mehrerer Programme ermöglichen soll, dann hat es auch dafür Sorge zu tragen, dass dies nicht zu unterwünschten Nebeneffekten führt, wie bspw. der gleichzeitige Zugriff auf einen Datensatz, der eigentlich nur von einem Prozess bearbeitet werden darf. Um solche Race Conditions zu verhindern, gibt es verschiedene Techniken. Da Betriebssysteme inhärent parallele Systeme sind (schließlich muss es gleichzeitig mit vielen verschiedenen Geräten über unterschiedliche Schnittstellen kommunizieren können), ergibt es Sinn, dieses als System kommunizierender Prozesse zu strukturieren. Hierfür ist bspw. der Austausch von Nachrichten notwendig. 


8. Verschiedene Betriebsarten

Wie bereits angesprochen ist eine eindeutige Definition des Begriffs Betriebssystem schwierig, weil Architektur und Funktionalität stark vom Einsatzzweck abhängen. Für die verschiedenen Einsatzzwecke müssen unterschiedliche Betriebsarten wie z. B. der Dialogbetrieb oder die Stapelverarbeitung angeboten werden. Daneben gibt es noch weitere Betriebsarten wie die Hintergrundausführung, den Echtzeitbetrieb oder den Teilhaberbetrieb.


9. Administration

Im laufenden Betrieb fallen viele Aufgaben wie die Datensicherung, Leistungsüberwachung, Systemkonfiguration, Formatierung, einfache Textverarbeitung oder die Modulverwaltung. Das alles hat erstmal nicht viel mit der Ausführung von Anwendungen zu tun. Das Betriebssystem muss solche Aufgaben erledigen, sofern sie nicht von der Anwendung selbst erledigt werden können. Die Trennlinie für diese administrativen Aufgaben ist oft nicht hinreichend scharf. 


10. Kommandosprache

Das Betriebssystem muss eine Kommandosprache anbieten, die entweder graphisch (GUI) oder textuell (klassische Shell) ist. Warum? Weil ein bereits im Rechner vorhandenes ausführbares Programm auch gestartet, ausgeführt, überwacht und ggf. abgebrochen werden muss. Über eine Kommandosprache ist das "Reden" mit dem Betriebssystem möglich. Für den Anwender ist die Kommandosprache der präsenteste Teil im Betriebssystem, da diese einen unmittelbaren Einfluss auf die Usability eines Betriebssystems hat. Aus Sicht des Programmierers ist der Implementierungsaufwand hierfür jedoch relativ gering.