Betriebssystem
Ein Betriebssystem ist Software, die große Teile der Hardware in einem einheitlichen Modell darstellt. Der Anwender oder Programmierer braucht/soll sich dann nicht mehr um alle Details der realen Maschine kümmern. Ein Betriebssystem ermöglicht es letztlich Programme für verschiedene Computer (Hardware) zu entwickeln, wenn sie unter demselben Betriebssystem laufen.
Das einheitliche Abbildungsmodell des Betriebssystem erleichter dem Benutzer den Umgang mit dem Rechner.
Ein Betriebssystem verwaltet letztlich die Betriebsmittel des Computers, so dass ein sinnvoller Rechenbetrieb gewährleistet werden kann.
Betriebssysteme bestehen in der Regel aus einem Kernel, der die Hardware des Computers verwaltet, sowie Programmen und Programmierbibliotheken zur Nutzung bzw. Programmierung des Computers.
Unterschieden werden Einbenutzer- und Mehrbenutzersysteme, Einzelprogramm- und Mehrprogrammsysteme, Stapelverarbeitungs- und Dialogsysteme. Betriebssysteme finden sich praktisch überall: als Echtzeitsysteme auf Prozessrechnern, auf normalen PCs und als Mehrprozessorsysteme auf Servern und Großrechnern.
Aufgaben von Betriebssystemen
- Speicher-Verwaltung
- Zuweisung und Überwachung des Betriebsmittels Speicher (Haupt- und Hintergrundspeicher).
- Führung von Tabellen der Speicherbelegung durch Benutzerjobs bzw. Prozesse (laufende Programme).
- Bedienung von Anforderungen und Freigabe von Speicher.
- Prozessor-Verwaltung
- Zuteilung des Betriebsmittels Prozessor an die zum Ablauf bereiten Prozesse. Die meisten größeren Systeme arbeiten dabei im Multiprogramming-Betrieb. Darunter verstehen wir die Bearbeitung von mehreren in kleinen Zeitabschnitten verzahnten Aufgaben. Von großer praktischer Bedeutung ist dabei der Zuteilungsalgorithmus (siehe Scheduler).
- Programm-(Prozess)-Verwaltung
- Betreuung sämtlicher Prozesse (im Ablauf befindlicher Programme) im Rechnersystem.
- Erzeugung von neuen Prozessen auf Anforderung des Betriebssystems bzw. anderer existierender Prozesse,
- Entfernung von Prozessen aus dem System.
- Kommunikation und Synchronisation von Prozessen untereinander (Interprozesskommunikation)
- Geräte- und Datei-Verwaltung
- Effiziente Zuweisung von I/O-Geräten und Vermittlungseinheiten (Datenkanäle, Steuereinheiten), Vermeidung von Konflikten;
- Initiierung, Überwachung der Ausführung, Terminierung von I/O-Vorgängen, Datenkonversion,
- Logische Kontrolle des File-Systems. Dabei werden vor allem Dienstleistungen der Prozess-Verwaltung in Anspruch genommen
Die meisten Betriebssysteme enthalten Dienstprogramme auch Utilities genannt. Sie ermöglichen dem Benutzer bzw. Systemverwalter die Bearbeitung allgemeiner sowie systemnaher Aufgaben. Dazu gehören Editoren, Kopierprogramme, Benutzer-Verwaltung, Datensicherung, ...
Siehe auch: Anwendungsprogramme
Betriebssystemarten
Im PC-Bereich sind derzeit die meistgenutzten Betriebsysteme die verschiedenen Varianten von Microsoft Windows (kommerziell), sowie Apple OSX und die Varianten von Linux (GNU-Lizenz, frei kopierbar). Lindows bzw. LindowsOS erlaubt die Verwendung von Linux und Windowsprogrammen.
Neben den in der Liste von Betriebssystemen erwähnten existieren noch eine ganze Reihe experimenteller Betriebssysteme, die vor allem im universitären Umfeld zu Forschungs- und Lehrzwecken eingesetzt werden.
Entwicklung der heutigen Betriebssysteme
Bis etwa 1955 hatten die seit etwa 1945 entwickelten Computer keine Betriebssysteme. Für immer komplexere Hardware wurden vorgefertigte Standardroutinen einwickelt, die Vorläufer der ersten Betriebssysteme.
Stapelbetrieb
Um 1955 wurde der Stapel (Batch-)Betrieb eingeführt. Die Jobs waren dabei auf Lochstreifen oder Lochkarten(-stapel) gespeichert und wurden nacheinander eingelesen und ausgeführt. Die Stapel bestanden z. B. aus einigen Initialisierungskarten zur Auswahl der Ausgabegeräte, die Befehle in den ersten Kontrollsprachen (Job Control Language JCL) enthielten, einer Compile-Anweisung, einem FORTRAN oder ALGOL-Programm und den Karten mit den Eingabedaten. Die Maschine initialisierte das System, kompilierte das Programm und führte es anschließend aus. Die Ausgabe oder eventuelle Programmierfehler wurden meist in Papierform dem Anwender wieder ausgehändigt.
Monitorsysteme
Um die großen teuren Maschinen besser auszulasten, wurden noch vor den 1960er Jahren höhere Programmiersprachen entwickelt. Es wurden teilweise kleinere Computer verwendet, um die Jobs in den Stapeln auf Band zu schreiben, die dann ohne Verzögerung nacheinander auf großen Maschinen im SPOOL-Betrieb ablaufen konnten (SPOOL hieß ’’Serial Peripheral Operations Online’’, d. h. serielle Online-Ein-/Ausgabe-Operationen). Ein kleines Monitorprogramm auf der großen Maschine las das Band, das viele Jobs enthielt, ein und steuerte die Ausführung. Die Ergebnisse konnten wieder auf Band geschrieben werden und später durch die kleineren Maschinen ausgedruckt werden. Ein Beispiel hierfür war der FMS (Fortran Monitor System), der auf dem Großrechner IBM 7094 lief. Kleinere und billigere IBM 1401 Maschinen dienten als Vorrechner und bereiteten die Bänder vor. FMS konnte daher als eines der ersten Betriebssysteme angesehen werden.
Timesharingsysteme
In den 1960er Jahren wurden Timesharing-Systeme entwickelt, die teuren Computer sollten im Dialogbetrieb von mehreren Benutzern verwendet werden. Der Prozessor wurde dabei periodisch unterbrochen und Programmen anderer Benutzer zugeteilt (Mehrprogrammbetrieb). Die Programme teilten sich also quasi den Prozessor. Im Prinzip sah dies so aus, als ob jedes Programm seinen eigenen Prozessor hätte. Ein Beispiel für ein Timesharing-System war das CTSS am MIT (CTSS hieß compatible time sharing system, also kompatibles Zeitverteilsystem). Dieses System hieß kompatibel, weil zusätzlich der FMS Monitor als Benutzer laufen konnte. Neben dem Dialogbetrieb konnte daher das JOB-SPOOLing zusätzlich nebenher, quasi im Hintergrund, ablaufen. Die Ausnutzung der IBM 7094 war damit gewährleistet.
Neue Konzepte
In diese Zeit fiel auch das ambitionierte Multics-Projekt, das neben Mehrprogrammbetrieb auch neue Konzepte wie virtuelle Speicherverwaltung und Implementation in einer höheren Programmiersprache (PL/I)zu verwirklichen versuchte.
Zu dieser Zeit kamen auch kostengünstigere Minicomputer auf, die nicht nur den Rechenzentren großer Unternehmen und Universitäten die Anschaffung eigener Computer ermöglichten. Vielmehr konnten einzelne Abteilungen eigene, kleine sogenannte Datenprozessoren anschaffen. Der Begriff Computer wurde vermieden, da man darunter zu dieser Zeit die großen, teuren Geräte verstand. Minicomputer kosteten hingegen nur einen Bruchteil (ca. 20000-100000 Dollar). Sie wurden Ende der 1960er und Anfang der 1970er Jahre unter anderem von den Entwicklern des Betriebssystems Unix bei AT&T eingesetzt, die am Multics-Projekt mitgearbeitet hatten, einige Konzepte übernahmen und neue entwickelten, unter anderem ein hierarchisches Dateisystem. Ein Kernel übernahm die Kontrolle über die Hardware und stellte abstrakte Funktionen zur Verfügung.
Das zum Großteil in der Programmiersprache C geschriebene Unix wurde auf viele damalige Computersysteme portiert, die grossen Hersteller entwickelten aber auch eigene Betriebssysteme mit anderen Zielen wie Zuverlässigkeit und Wartbarkeit. Beispiele hiervon sind MVS der Firma IBM für deren Großrechnersysteme und VMS der Firma Digital Equipment Corporation für die VAX-Prozessorlinie. Diese Systeme waren in Assembler geschrieben und auf die Produkte der jeweiligen Firmen beschränkt.
Mikroprozessoren und Heimcomputer
1970 erschien der erste (4-Bit) Mikroprozessor der Firma Intel, der für kleine Aufgaben wie Computerterminals oder Taschenrechner geeignet war. Schon fünf Jahre später wurden dessen 8-Bit Nachfolger in Computern wie dem Apple II oder dem Commodore PET, dem Vorläufer des C64, eingesetzt. Diese hatten bereits einfache, Betriebssysteme ohne Kernel. Sie enthielten einen BASIC-Interpreters und hatten recht gute Grafikfähigkeiten, teilweise sogar in Farbe. Die Leistungsfähigkeit erreichte die einfacher Minicomputer, der Preis war sensationell günstig (ca. 1500 bis 3000 Dollar). Daher wurden diese Rechner auch Heimcomputer genannt, Privatanwender konnten sich jetzt Computersysteme leisten.
Disketten-Betriebssysteme
Viele Firmen stellten Heimcomputer her, die auch als Ersatz für die damaligen Spielkonsolen eingesetzt werden konnten. Die Systeme wurden jedoch einige Jahre später fast vollständig durch den IBM-PC, weniger durch den Apple-Macintosh, verdrängt. Diese neuen Rechner hatten bereits 16-Bit Mikroprozessoren (Intel 8086/8088 bzw. Motorola 68000). Diskettenlaufwerke verlangten ein Dateisystem, im Falle des PC wurde hierfür MSDOS (PCDOS) der Firma Microsoft eingesetzt. Microsoft hatte vorher mit Unix experimentiert und eine eigene Version namens Xenix herausgebracht. Einige Konzepte fanden sich in vereinfachter Form auch in MSDOS wieder.
32-Bit Mikroprozessoren
In den 1980er Jahren erschienen die ersten 32-Bit Mikroprozessoren. Der Intel 80386 mit Unterstützung virtuelle Speicherverwaltung wurde wegen seiner 8086/8088 Kompatibilität unter anderem in PC-Systemen eingesetzt. Seine Möglichkeiten wurden dort jedoch unter MSDOS und dem von Microsoft neu erschienenen Windows-Aufsatz für MSDOS nicht ausgenutzt. Windows verlieh dem PC standardisierte Grafikfähigkeiten und unterstützte die Computermaus als neues Eingabegerät.
32-Bit Mikroprozessoren wie der Motorola 68020 wurden in Workstations eingesetzt. Diese zeichneten sich durch hervorragende Grafikfähigkeiten aus und waren für Einzelanwender in professionellen Bereichen (CAD, Chemie) ausgelegt. Sie begannen die Minicomputer zu verdrängen. Das Betriebssystem war meist Unix, das eine (damals noch sehr teure) Festplatte verlangte. Die Preise dieser Workstations lagen im Bereich der Minicomputerpreise, sie waren damit für Privatanwender zu teuer.
PC Systeme verdrängen die Workstations
Fallende Preise aller Komponenten und eine immer leistungsfähigere Grafikhardware sorgten in den 1990er Jahren dafür, dass PC-Systeme die Fähigkeiten der früheren Workstations zum Preis der Heimcomputer erreichten. Die einfachen Betriebssysteme wie MSDOS wurden durch Nachfolgeversionen von Windows oder Unix-Derivaten wie Linux ersetzt. In diesen Systemen waren die frühen Konzepte der ersten Timesharingsysteme, die virtuelle Speicherverwaltung von Multics und die Dateisystemhierachie und Netzwerk-Konzepte von Unix nahezu unverändert übernommen worden. Linux übernahm sogar die Systemrufe, in Zusammenhang mit den Kommandos des GNU-Projekts enstand sogar Unix-kompatibles System.
die Moderne
In den 2000er Jahren erhöhte sich die Leistungsfähigkeit der PCs und Apple-Computer weiter rasant, z. B. betrug der Takt der Intelprozessoren jetzt statt 25 MHz (ca. 1992) über 3000 MHz (2002). Dies hatte keinen Einfluss auf die eingesetzten Betriebssysteme, ebenso wenig wie die aufkommenden 64-Bit Mikroprozessoren, deren erste Vertreter schon in den 1990ern erschienen.
PC-Systeme wurden zu sogenannten Clustern zusammengeschlossen, die aus mehreren tausend einzelnen PCs bestehen und als Gesamtheit die Leistungsfähigkeit von Supercomputern erreichten. Für Cluster wurden jedoch ebenfalls in der Regel normale Betriebssystemen verwendet, da deren Fähgikeiten für die Anwendungen ausreichten.
Betriebsmittelverwaltung und Abstraktion
Betriebsmittel (Ressourcen) werden von der Hardware eines Computers zur Verfügung gestellt. Darunter werden der Prozessor (bei Mehrprozessorsystemen natürlich mehrere), der physikalische Speicher und alle Geräte wie Festplatten-, CDROM Laufwerke, Netzwerk- und Schnittstellenadapter verstanden.
Einführendes Beispiel: Zeitgeberbausteine
Moderne Rechnersysteme besitzen Zeitgeberbausteine. In frühen PCs wurde z. B. der Baustein 8284 der Fa. Intel eingesetzt. Dieser Baustein muß zunächst initialisiert werden, er kann dann nach Ablauf einer Zeitspanne oder periodisch den Prozessor unterbrechen und diesen zur Abarbeitung einer eigenen Routine (Unterbrechungsroutine) veranlassen. Neben der Initialisierung ist die Unterbrechungsroutine zu erstellen, wobei mindestens zum Aufruf sind Teile in Assembler zu erstellen sind. Da Unterbrechungen asynchron auftreten, sind komplexe Verhältnisse hinsichtlich der Datenstrukturen zu berücksichtigen. Genaue Kenntnis des Bausteins (Datenblatt) sowie der Computerhardware (Unterbrechungsbehandlung) und des Prozessors sind erforderlich.
Virtuelle Prozessoren
Ein modernes Mehrprogrammbetriebssystem verwendet einen solchen Zeitgeberbaustein, um den normalerweise einzigen Prozessor periodisch (normalerweise im Millisekundenbereich) zu unterbrechen und eventuell mit einem anderen Programm fortzufahren (sogenanntes präemptives Multitasking). Die Initialisierung und die Unterbrechungsroutine werden dabei vom Betriebssystem implementiert. Auch wenn nur ein einzelner Prozessor zur Verfügung steht, können mehrere Programme ausgeführt werden, jedes Programm erhält einen Teil der Prozessorzeit (Scheduling). Jedes Programm verhält sich, bis auf die verlangsamte Ausführungszeit, so als hätte es einen eigenen virtuellen Prozessor.
Virtuelle Zeitgeber
Über einen Systemruf, z. B. alarm, wird jedem Programm darüber hinaus ein eigener virtueller Zeitgeber zur Verfügung gestellt. Das Betriebssystem zählt die Unterbrechungen des Original-Zeitgebers und informiert Programme, die den alarm-Systemruf verwendeten. Die einzelnen Zeitpunkte werden über eine Warteschlange verwaltet.
Abstraktion
Die Hardware des Zeitgebers ist damit vor den Programmen verborgen. Ein System mit Speicherschutz erlaubt den Zugriff auf den Zeitgeberbaustein nur über den Kernel und nur über exakt definierte Schnittstellen (meist Systemrufe genannt, die über spezielle Prozessorbefehle wie TRAP, BRK, INT realisiert werden). Kein Programm kann somit das System gefährden, die Verwendung des virtuellen Zeitgebers ist einfach und portabel. Der Anwender oder Programmierer braucht sich nicht um die (komplexen) Details zu kümmern.
Virtualisierung weiterer Betriebsmittel
Wie Prozessoren und Zeitgeber virtualisiert werden, trifft dies auch auf alle anderen Betriebsmittel zu. Dabei werden Abstraktionen teilweise nur als Software implementiert, andere erfordern spezielle Hardware.
Dateisysteme
Über Dateisysteme werden die Details der externen Speichersysteme (Festplattenlaufwerke, Diskettenlaufwerke, CDRoms) verborgen. Dateinamen und Verzeichnisse erlauben den bequemen Zugriff, die eigentlich vorhandene Blockstruktur und die Geräteunterschiede sind vollkommen unsichtbar.
Interner Speicher
Der interne Speicher (RAM) wird in Blöcke (Kacheln) aufgeteilt und den entsprechenden Programmen zur Verfügung gestellt. Über virtuellen Speicher wird bei vielen Systemen jedem Programm ein kontinuierlicher Bereich zur Verfügung gestellt. Dieser Speicher ist physikalisch nicht kontinuierlich, es können sogar unbenutzte Teile auf den externen Speicher ausgelagert sein. Der virtuelle Speicher eines Programms kann sogar größer als der reale Speicher sein.
Netzwerk
Die Details der Netzwerkzugriffe werden verborgen, indem auf die eigentliche Hardware (Netzwerkkarte) ein Protokollstapel aufgesetzt wird. Die Netzwerksoftware erlaubt beliebig viele virtuelle Kanäle. Auf der Ebene der Sockets (Programmierung) ist die Netzwerkkarte vollkommen unsichtbar, das Netzwerk hat viele neue Fähigkeiten (bidirektionale, zuverlässige Datenströme, Adressierung, Routing) bekommen.
Beispiele
Der C64, ein Heimcomputer der 1980er Jahre
In den 1980er Jahren waren Heimcomputer populär. Diese konnten neben nützlichen Aufgaben auch Spiele ausführen. Die Hardware bestand aus einem 8-Bit-Prozessor mit bis zu 64kBytes Ram, einer Tastatur und einem Monitor/Fernsehgerätausgang. Einer der populärsten dieser Computer war der Commodore C64 mit dem 6510-Mikroprozessor. Dieser Computer hatte ein 8k-ROM BIOS, das die Geräte Bildschirm, Tastatur, serielle IEC-Schnittstelle für Diskettenlaufwerke bzw. Drucker, Kassetteninterface initialisierte und über ein Kanalkonzept teilweise abstrahierte. Über ein 8k-ROM BASIC, das auf die Funktionen des BIOS aufsetzte, konnte das System bedient und programmiert werden. Das Betriebssystem dieses Computers kann auf der Ebene des BASIC-Interpreters als gute Hardwareabstraktion angesehen werden. Natürlich sind weder Kernel, Speicher- oder sonstiger Hardwareschutz vorhanden. Viele Programme, vor allem auch Spiele, setzten sich über das BIOS hinweg und griffen direkt auf entsprechende Hardware zu.
Abstraktionsschichten im Betriebssystem des Heimcomputers C64
Beispiel MSDOS
Die ersten IBM-PCs waren ganz ähnlich wie der C64 aufgebaut. Auch sie verfügten über ein eingebautes BIOS zur Initialisierung und Abstraktion der Hardware. Sogar ein BASIC-Interpreter war vorhanden. Im Gegensatz zum BIOS wurde auf BASIC jedoch in den kompatiblen Rechnern anderer Firmen verzichtet.
Der PC konnte mit seinem Intel 8088 Prozessor bis zu 1Mbyte Speicher adressieren, die ersten Modelle waren jedoch nur mit 64Kbyte ausgestattet. Diskettenlaufwerke lösten die alten Kassettenrekorder als Speichermedium ab. Diese erlauben vielfaches Schreiben und Lesen einzeln adressierbarer 512Byte-Blöcke. Die Benutzung wird durch ein ’’Diskettenbetriebsystem (Disk Operating System DOS)’’ vereinfacht, das ein abstraktes Dateikonzept bereitstellt. Blöcke können zu beliebig großen Clustern (Dateien) zusammengefasst werden, eine Diskette kann dabei sehr viele solche Dateien enthalten, die über Namen erreichbar sind. PC-DOS der Firma Microsoft, auch MSDOS (Microsoft Disk Operating System) genannt, ist ein solches System. Es setzt auf das BIOS auf und stellt Dateisystemoperationen zur Verfügung.
Auf den ersten PCs ist kein Speicherschutz realisiert, die Programme können daher an MSDOS vorbei direkt auf BIOS und sogar auf die Hardware zugreifen. MSDOS stellt auch keinen für alle Zwecke ausreichenden Abstraktionsgrad zu Verfügung. Es läßt sich nur ein gleichzeitig Programm starten, die Speichervewaltung ost eher rudimentär. Ein Teil der Hardware wird nicht unterstützt und muß sogar von Programmen direkt angesprochen werden. Die Performance einiger Routinen, speziell zu Textausgabe, war verbesserungswürdig. Viele Programme setzten sich daher zwangsläufig über das Betriebssystem hinweg und schrieben z. B. direkt in den Bildschirmspeicher. MSDOS wird mit einem Satz von Programmen (sogenannten Werkzeugen) und einem Kommandointerpreter (COMMAND.COM) ausgeliefert.
Abstraktionsschichten eines PC unter MSDOS
Spätere PCs wurden mit dem Intel 80386 Prozessor ausgestattet, der Speicherschutz ermöglichte.
Beispiel Linux (GNU/Linux)
Linux läuft als portables Betriebssystem auf verschiedenen Rechnern, wurde aber zunächst auf PCs mit 80386 Prozessor entwickelt. Das in diesen Rechnern eingebaute BIOS dient nur noch zum Initialisieren der Hardware und zum Hochfahren des Betriebssystem-Kernels. Die Routinen des BIOS sind jedoch für Mehrprogrammsysteme wie Linux ungeeignet, insbesondere weil der Prozessor durch Warten belastet wird anstatt durch eine – in der Hardware durchaus vorhandene – geschickte Unterbrechungsverwaltung auf Ereignisse zu reagieren.
Linux verwendet daher nach dem Starten des Systems eigene Gerätetreiber. Es verteilt die Prozessorzeit auf verschiedene Programme (Prozesse). Jeder dieser Prozesse erhält einen eigenen, geschützten Speicherbereich und kann nur über Systemrufe auf die Gerätetreiber und das Betriebssystem zugreifen. Die Programme laufen im User Modus, während der Kernel im Kernel-Mode arbeitet. Die Privilegien im User-Modus sind sehr eingeschränkt. Abstraktion und Speicherschutz sind nahezu vollkommen, ein direkter Zugriff wird nur sehr selten und unter genau kontrollierten Bedingungen gestattet. Kein Programm kann so das Gesamtsystem gefährden, wenn keine unentdeckten Fehler im System vorhanden sind.
Fast vollständige Abstraktion unter Linux
Linux stellt wie sein Vorbild Unix eine vollständige Abstraktion und Virtualisierung für nahezu alle Betriebsmittel bereit (virtueller Speicher, Illusion eines eigenen Prozessors etc.). Erwähnenswert ist hier unter anderem auch die TCP/IP-Netzwerkimplementation sowie die grafische Benutzeroberfläche X11. Programmbibliotheken und ein großer Satz von Werkzeugen (meist Kommandos des GNU-Projekts) sowie eine Entwicklungsumgebung unter anderem für die Sprache C runden das System ab.
Siehe auch: Liste der Betriebssysteme
Weblinks
- http://www.netzmafia.de/skripten/bs
- http://wap03.informatik.fh-wiesbaden.de/sysprog/buch0006.htm
- Funktionen eines einfachen Betriebssystems dargestellt an einem Beispiel eines selbst entwickelten Betriebssystem mit ausgewählten Funktionen
Literatur
- Andrew S. Tanenbaum: Moderne Betriebssysteme, Hanser Verlag 2002, ISBN 3827370191