Was ist ein Betriebssystem

Unter einem Betriebssystem (engl. operating system) versteht man Software, die zusammen mit dem Hardwareeigenschaften des Computers die Basis zum Betrieb bildet und insbesondere die Abarbeitung von Programmen steuert und überwacht.

Vereinfacht gesagt, macht das Betriebssystem die Benutzung des Computers erst möglich. Im folgenden werden Einordnungs- und Bewertungskriterien besprochen.

Einige Definitionen des Betriebssystembegriffes aus der Literatur:

DIN 44300:
"Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften dieser Rechenanlage die Basis der möglichen Betriebsarten des digitalen Rechensystems bilden und die insbesondere die Abwicklung von Programmen steuern und überwachen."
DUDEN Informatik:
"Zusammenfassende Bezeichnung für alle Programme, die die Ausführung der Benutzerprogramme, die Verteilung der Betriebsmittel auf die einzelnen Benutzerprogramme und die Aufrechterhaltung der Betriebsart steuern und überwachen."
Wettstein, Architektur von Betriebssystemen:
"...eine Sammlung von Programmen zu geregelter Verwaltung und Benutzung von Betriebsmitteln verschiedener Art."
Rembold, Einführung in die Informatik:
"Der Zweck eines Betriebssystems liegt darin, Fähigkeiten zur Verfügung zu stellen, um eine Rechenanlage möglichst durch mehrere Anwender nutzen zu können. Diese Nutzung soll einfach, zuverlässig und wirtschaftlich sein."
Coy, Aufbau und Arbeitsweise von Rechenanlagen:
"Betriebssysteme ermöglichen einen geordneten Ablauf der gestarteten Programme und nutzen dabei die vorhandenen Systemsoftware- und Gerätebetriebsmittel so, daß ein möglichst sparsamer und effizienter Programmdurchsatz erreicht wird."
Bic / Shaw, Betriebssysteme. Eine moderne Einführung:
"Betriebssysteme haben zwei Hauptaufgaben: Sie stellen Dienste bereit, die die Aufgaben der Benutzer vereinfachen, und sie verwalten Betriebsmittel um wirkungsvollen Rechnerbetrieb sicherzustellen."
"Aus Benutzersicht erscheint das Betriebssystem als eine virtuelle Maschine mit der Menge ihrer Kommandos als 'Maschinen'-sprache."

1.1 Grundlagen, Systemschnittstelle

Bleiben wir bei DIN 44300. Danach umfaßt ein Betriebssystem:
Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften dieser Rechenanlage die Basis der möglichen Betriebsarten des Rechensystems bilden und die insbesondere die Abwicklung von Programmen steuern und überwachen.

Ein Betriebssystem hat folgende grundlegende Aufgaben:

  • Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion),
  • Bereitstellen einer Benutzerschnittstelle ("Kommandointerpreter", "Shell")
  • Bereitstellen einer normierten Programmierschnittstelle (API), ggf. auch Compiler, Linker, Editor
  • Verwaltung der Ressourcen der Maschine
    • Prozessor(en)
    • Hauptspeicher
    • Hintergrundspeicher (Platte, Band, etc.)
    • Geräte (Terminal, Drucker, Plotter, etc.)
    • Rechenzeit
  • Verfolgung von Schutzstrategien bei dieser Ressourcenbereitstellung
  • Koordination von Prozessen
  • Abstraktion des Maschinebegriffes nach Coy:
    • Reale Maschine = Zentraleinheit + Geräte (Hardware)
    • Abstrakte Maschine = Reale Maschine + Betriebssystem
    • Benutzermaschine = Abstrakte Maschine + Anwendungsprogramm

Oft vermischen sich die Ebenen. So ist ein Teil des Betriebssystems moderner PCs, das Basissystem f?ie Ansteuerung der Hardware (BIOS = Basic Input/Output System) in einem Festwertspeicher (ROM, EPROM, etc.) fest auf dem Mainboard des PCs eingebaut.

1.2 Klassifizierung von Betriebssystemen

Die erste Computergeneration (ca. 1945-1955) besaß kein Betriebssystem.
  • Programmierung direkt (Steckbrett, Lochstreifen, Lochkarte)
  • Keine Programmiersprachen

Die zweite Generation (ca. 1955-1965) arbeitete mit Stapelverarbeitung. Ein Auftrag wird in geschlossener Form, bestehend aus Programm, Daten und Steueranweisungen, zusammengestellt. Die Resultate erhält der Benutzer erst nach Abschluß der Bearbeitung zurück (meist als Ausdruck). Der Ausdruck "Stapelverarbeitung" kommt einfach vom Lochkartenstapel her, den man eingelesen hat. Typische Eigenschaften sind:

  • Batch-Betrieb (Lochkarten)
  • Einfache Job-Control-Sprachen
  • Programmiersprachen (Assembler, Fortran, etc.)
  • Magnetbänder als Zwischenspeicher

Die dritte Generation (ca. 1965-1980) beherrscht Dialogverarbeitung. Der Benutzer kommuniziert mit dem Computer über Tastatur und Bildschirm, mit deren Hilfe er Programme starten, verfolgen und beeinflussen kann.

  • Multiprogramming = Mehrprogrammbetrieb = Mehrere Programme gleichzeitig im Speicher quasisimultane, zeitlich verschachtelte Bearbeitung auf der Auftragsebene.
  • Hauptspeicheraufteilung für mehrere Programme
  • Zeitliche Verschachtelung der Programme (z.B.: Prog. A wartet auf Ausgabe, Prog. B rechnet) --> Timesharingbetrieb mit Terminals
  • SPOOLING (simultaneous peripheral operation on line) direktes Speichern von Rechenaufträgen auf der Platte, "Selbstbedienung" des BS
  • MULTICS als UNIX-Vorgänger
  • 1969 das erste UNIX

Die vierte Generation (ab ca. 1975) ist ein Dialogsystem, wie wir es heute kennen. Zunächst erfolgte der Dialog im Textmodus über Tastatur und Textbildschirm. Später wurden grafische Benutzeroberflächen entwickelt (GEM von Digital Research, Apple OS auf "Lisa" und "Macintosh", Windows von Microsoft und "X" unter UNIX).

  • UNIX und C
  • Multitasking als quasisimultane Ausführung weitgehend unabhängiger Programmabschnitte innerhalb eines Auftrags.
  • Personal Computer (CP/M, MS-DOS, etc.)
  • Netzwerkbetriebssysteme (Kommunikation mehrerer Computer)
  • verteilte Betriebssysteme (mehrere Prozessoren = Multiprocessing) Mehrere Prozessoren bilden ein Computersystem --> Mehrere Programme werden von verschiedenen Prozessoren bearbeitet oder ein Programm von mehreren Prozessoren.

Bei bestimmten Betriebssystemen spielt auch die Verarbeitungszeit eine Rolle. Bei Realzeit-(Echtzeit-)Betriebssystemen für Steuerungs- und Regelungsaufgaben (sog. Prozeßrechner) spielt die Antwortzeit eine Rolle. Informationen werden hier zum Teil von elektronischen Meßwandlern (Sensoren) gewonnen. Das Programm reagiert auf äußere Ereignisse in angemessen kurzer Zeit (Maschinenregelung: 1 - 10 ms, Prozeßregelung: 10 - 100 ms, Prozeßsteuerung: 0,1 - 1 s). Es wird spezielle Hard- und Software benötigt.

Betriebssysteme lassen sich nach unterschiedlichen Kriterien klassifizieren:

Kassifizierung nach der Betriebsart des Rechnersystems

  • Stapelverarbeitungs-Betriebssysteme (batch processing) Fr?Bestriebssysteme erlaubten nur den Stapelbetrieb (Lochkarten, etc.) und auch heutige Systeme besitzen vielfach die Möglichkeit, Progammabfolgen automatisch zu bearbeiten (z. B. Batch-Dateien bei DOS, Shell-Scripte bei UNIX, usw.)
  • Dialogbetrieb-Betriebssysteme (interctive processing, dialog processing) Der/die Benutzer bedienen den Rechner im Dialog mittels Bildschirm, Tastatur, Maus, usw.). Die Bedienoberfläche kann textorientiert oder grafisch sein.
  • Netzwerk-Betriebssysteme (network processing) Sie erlauben die Einbindung des Computers in ein Computernetz und so die Nutzung von Ressourcen anderer Computer. Dabei unterscheidet man zwischen Client-Server-Betrieb, bei dem Arbeitsplatzrechner auf einen Server zugreifen, und Peer-to-Peer-Netzen, bei denen jeder Rechner sowohl Serverdienste anbietet als auch als Client fungiert.
  • Realzeit-Betriebssysteme (realtime-processing) Hier spielt, neben anderen Faktoren, die Verarbeitungszeit eine Rolle (s. oben).
  • Universelle Betriebssysteme Diese Betriebssysteme erf?n mehrere der oben aufgeführten Kriterien.

    Klassifizierung nach der Anzahl der gleichzeitig laufenden Programme:

    In dieser Klassifikation kommt der Begriff "Task" vor. Alternativ kann der deutsche Begriff "Prozeß" Verwendung finden. Aus Anwendersicht kann an dieser Stelle auch der Begriff "Aufgabe"bzw. "Auftrag" verwendet werden.
    • Einzelprogrammbetrieb (singletasking)
      Ein einziges Programm läuft jeweils zu einem bestimmten Zeitpunkt. Mehrere Programme werden nacheinander ausgeführt.
    • Mehrprogrammbetrieb (multitasking)
      Mehrere Programme werden gleichzeitig (bei mehreren CPUs) oder zeitlich verschachtelt, also quasi-parallel, bearbeitet.

    Klassifizierung nach der Anzahl der gleichzeitig am Computer arbeitenden Benutzer:

    • Einzelbenutzerbetrieb (singleuser mode)
      Der Computer steht nur einem einzigen Benutzer zur Verfügung.
    • Mehrbenutzerbetrieb(multiuser mode)
      Mehrere Benutzer teilen sich die Computerleistung, sie sind über Terminals oder Netzwerkverbindungen mit dem Computer verbunden.

    Klassifizierung nach der Anzahl der verwalteten Prozessoren bzw. Rechner:

    Es geht jedoch nicht darum, wieviel Prozessoren allgemein in einem Rechner verwendet werden, sondern wieviele Universalprozessoren für die Verarbeitung der Daten zur Verfügung stehen. Was ist damit gemeint? In einem modernen Rechner gibt es zumindest einen Hauptprozessor (CPU, Central Processing Unit). Ihn bezeichnen wir allgemein als den Prozessor. Aber auch derr PC enthält unter Umständen weitere, etwas im Verborgenen wirkende Prozessoren, z. B. den Grafikprozessor, der spezielle Eigenschaften und auch einen speziellen Befehlssatz besitzt. Auch auf dem Controller für die SCSI-Schnittstelle sitzt oft ein eigener Prozessor und auch die Ein- und Ausgabe kann über eigene Prozessoren abgewickelt werden.
    Somit ergibt sich folgende Unterscheidung:
    • Ein-Prozessor-Betriebssystem
      Die meisten Rechner, die auf der von-Neumann-Architektur aufgebaut sind, verfügen über nur einen Universalprozessor. Aus diesem Grund unterstützen auch die meisten Betriebssysteme für diesen Anwendungsbereich nur einen Prozessor.
    • Mehr-Prozessor-Betriebssystem
      Für diese Klassifizierung der Betriebssysteme ist noch keine Aussage über die Kopplung der einzelnen Prozessoren getroffen worden. Auch gibt es keinen quantitativen Hinweis über die Anzahl der Prozessoren, nur, daß es mehr als ein Prozessor ist. Für die Realisierung der Betriebssysteme für die Mehrprozessorsysteme gibt es zwei Herangehensweisen:
      • Jedem Prozessor wird durch das Betriebssystem eine eigene Aufgabe zugeteilt. D.h., es können zu jedem Zeitpunkt nur soviel Aufgaben bearbeitet werden, wie Prozessoren zur Verfügung stehen. Es entstehen Koordinierungsprobleme, wenn die Anzahl der Aufgaben nicht gleich der Anzahl verfügbarer Prozessoren ist.
      • Jede Aufgabe kann prinzipiell jedem Prozessor zugeordnet werden, die Verteilung der Aufgaben zu den Prozessoren ist nicht an die Bedingung gebunden, daß die Anzahl der Aufgaben gleich der Anzahl Prozessoren ist. Sind mehr Aufgaben zu bearbeiten, als Prozessoren vorhanden sind, so bearbeitet ein Prozessor mehrere Ausgaben "quasi-parallel". Sind mehr Prozessoren als Aufgaben vorhanden, dann bearbeiten mehrere Prozessoren eine Aufgabe.
      Das Betriebssystem kann dabei seinerseits auch auf mehrere Prozessoren verteilt sein. Man spricht dann von "verteilten Betriebssystemen".

    1.3 Architektur des Betriebssystems

    Zur logischen Strukturierung wird das Betriebssystem normalerweise in mehrere Schichten oder Schalen eingeteilt. Die unterste Schale beinhaltet alle hardwareabhängigen Teile des Betriebssystems, insbesondere auch die Verarbeitung von Interrupts. Auf diese Weise ist es möglich, das BS leicht an unterschiedliche Rechnerausstattungen anzupassen. Die nächste Schicht enthält die grundlegenden Ein-/Ausgabe-Dienste für Plattenspeicher und Peripheriegeräte. Die darauffolgende Schicht behandelt Kommunikations- und Netzwerkdienste, Dateien und Dateisysteme. Weitere Schichten können je nach Anforderung folgen. Ein Betriebssystem besitzt also drei oder mehr logische Schichten.

    Jede Schicht bildet eine abstrakte (virtuelle) Maschine, die mit ihren benachbarten Schichten über wohldefinierte Schnittstellen kommuniziert. Sie kann Funktionen der nächstniedrigeren Schicht aufrufen und ihrerseits Funktionen für die nächsthöhere Schicht zur Verfügung stellen. Die Gesamtheit der von einer Schicht angebotenen Funktionen wird auch als "Dienste" dieser Schicht bezeichnet. Die Gesamtheit der Vorschriften, die bei der Nutzung der Dienste einzuhalten sind, wird als "Protokoll" bezeichnet.

    Die unterste Schicht setzt immer direkt auf der Rechner-Hardware auf. Sie verwaltet die realen Betriebsmittel des Rechners und stellt stattdessen virtuelle Betriebsmittel bereit. Oft wird diese Schicht als "BIOS" (Basic I/O-System) bezeichnet. Alle weiteren Schichten sind von der Hardware unabhängig.

    Durch jede Schicht wird eine zunehmende "Veredelung" der Hardware erreicht (z. B. wachsende Abstraktion, wachsende Benutzerfreundlichkeit).

    Die frühen Computer (Großrechner, "Mittlere Datentechnik") zeichneten sich dadurch aus, dass Hardware und Betriebssystem vom gleichen Hersteller kamen und optimal aufeinander abgestimmt waren. Bei den heutigen PCs ist dies nur noch beim Macintosh von Apple der Fall. Bei Personal Computern auf Basis von Intel-Prozessoren kommen Hardware und Betriebssystem von unterschiedlichen Herstellern, auch wenn das Betriebssystem vielfach zusammen mit der Hardware ausgeliefert wird. So hat man die Wahl zwischen Betriebssystemen von Microsoft (Windows 98/ME, Windows 2000, Windows XP, usw.) oder freien UNIX-Implementierungen (Free BSD, Linux). Da Zusatz-Steckkarten und Peripheriegeräte (Drucker, Scanner, usw.) von den verschiedensten Herstellern kommen, liefern diese auch meist die Betiebssystem-Anpassung in Form von Treibern, die beim Laden des Betriebssystems ("Bootstrap") mit eingebunden werden.

    Durch die Programmierschnittstelle (API, Applications Programmers Interface) der höheren Schichten wird auch vermieden, daß jeder Programmierer die grundlegenden Routinen für den Zugriff auf Ein-/Ausgabegeräte und Massenspeicher selbst programmieren muß. Das BS stellt also eine definierte Programmierschnittstelle zur Verfügung. Änderungen am BS oder der Hardware wirken sich so nicht auf die Anwenderprogramme aus, die nach wie vor über die gleichen Betriebssystem-Aufrufe die Dienste des BS in Anspruch nehmen.

    Bei Einzelbenutzer-Singletaskingsystemen können Anwenderprogramme die Schichtenstruktur durchbrechen und z. B. direkt auf einer bestimmten Hardwarekomponente aufsetzen. Bei Mehrbenutzer- oder Multitaskingsystemen ist dies nicht möglich, das hier der Schutz der einzelnen Ressourcen (CPU, Platte, Ein-/Ausgabe, usw.) für jedes Programm vor Beeinflussung durch andere Programme gewährleistet werden muß. Hier ist eine streng hierarchische Kommunikation nötig, die nur zwischen zwei benachbarten Schichten zulässig ist.

    Bedenkt man, daß heutige Rechnersysteme sich selbst innerhalb einer Rechnerfamilie vielfältig in Speicherausstattung, Art und Umfang der angeschlossenen Geräte unterscheiden, so wird klar, daß die Erstellung monolithischer Programme für jede mögliche Rechnerkonstellation ein praktisch undurchführbares Unternehmen ist. Die Lösung dieses Problems heißt hier: Modularisierung.

    Programme werden in Module zerlegt, die zueinander über definierte Schnittstellen in Beziehung stehen. Somit ist es möglich, innerhalb eines Programmes einen Modul durch einen anderen mit gleicher Schnittstelle zu ersetzen, um das Programm an eine andere Rechnerkonstellation anzupassen. Die Auswahl und Zusammenstellung der allgemeingültigen Module wird bestimmt durch die eingesetzte Hardware und die Art der Programme, die durch diese Module unterstützt werden sollen. Sie ist für viele Programme, die auf einem Rechner abgearbeitet werden sollen, gleich und unterscheiden sich wiederum etwas von Rechner zu Rechner.

    Oft taucht in Zusammenhang mit Betriebssystemen auch der Begriff "Middleware" auf. Er bezeichnet zwischen den eigentlichen Anwendungen und der Betriebssystemebene angesiedelte System- und Netzwerk-Dienste (z.B. Datenbank, Kommunikation, Protokollierung, Sicherheit). Sie ist als Applikationsschicht eine Dienstleistungsschicht, die anstelle der Betriebssystemschnittstelle verwendet wird. Middleware-Systeme ermöglichen die Verteilung von Applikationen auf mehrere Rechner im Netzwerk. Die Verteilung ist objektorientiert: Server exportieren ihre Dienste als Klassenschnittstellen, Clients benutzen entfernten Methodenaufruf zum Zugriff auf die Dienste. Die Bindung kann statisch oder dynamisch erfolgen.

    1.4 Warum Multitasking mehr Rechnerleistung bringt

    Man möchte annehmen, daß bei mehreren quasiparallel laufenden Programmen die reale Laufzeit für jedes einzelne Programm länger ist als wenn nur ein Programm auf dem Rechner laufen würde. Nehmen wir der Einfachheit halber an, daß jeder Prozeß dieselbe Laufzeit zugeteilt bekommt und auch jeder regelmäßig an die Reihe kommt.

    Wenn man dieses Bild betrachtet, dauert freilich jedes Programm länger, denn die Zeit wird ja zwischen den Programmen geteilt. In der Praxis ist es jedoch so, daß Programme oftmals auf äußere Ereignisse warten müssen, z. B. bis eine Tasteneingabe getätigt wurde oder bis Daten von der Platte in den Speicher später sehen werden, kann ein Programm, das auf ein externes Ereignis wartet, in einen Wartezustand versetzt werden und inzwischen können andere Programme weiterarbeiten. Bei einem Multitasking-Betriebssystem kann der Rechner Datenbanken indizieren, Dokumente drucken, E-Mail absenden, usw. während Sie über den nächsten Zug gegen das Schachprogramm nachdenken.

    Zum vorhergehenden Abschnitt Zum Inhaltsverzeichnis Zum nächsten Abschnitt


    Copyright © FH München, FB 04, Prof. Jürgen Plate