Benutzer:Didia/Betriebssystem

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Überarbeitung Betriebssystem

Ein Betriebssystem ermöglicht die grundlegende Kommunikation zwischen Hardware und Anwenderprogrammen. Es verwaltet Betriebsmittel wie Speicher, Ein- und Ausgabegeräte und steuert die Ausführung von Programmen.

Aufgaben und Dienste[Bearbeiten | Quelltext bearbeiten]

Prozessverwaltung[Bearbeiten | Quelltext bearbeiten]

Computerprogramme werden im Betriebssystem in Form von Prozessen verwaltet und zum Ablauf gebracht. Vereinfacht ist ein Prozess ein Programm in Ausführung. Genauer ist ein Prozess die konkrete Instanziierung eines Programms zu dessen Ausführung innerhalb eines Rechnersystems, ergänzt um weitere (Verwaltungs-)Informationen und Ressourcenzuteilungen des Betriebssystems für diese Ausführung. Ein Prozess wird vom Betriebssystem dynamisch kontrolliert durch bestimmte Aktionen, mit denen es ihn in entsprechende Zustände setzt. Als Prozess bezeichnet man auch die gesamte Zustandsinformation eines laufenden Programms. Im Gegensatz dazu handelt es sich bei einem Programm um die (statische) Verfahrensvorschrift für eine Verarbeitung auf einem Rechnersystem.

Der Aufbau eines Prozesses im Hauptspeicher mit Programmsegment (text), Datensegment (data), Heap und Stack. Im Zusammenhang mit den Speicheradressen, die ein laufendes Programm als Prozess nutzen darf, spricht man auch von einem Prozessadressraum.

Moderne Betriebssysteme unterstützen den Multitasking-Betrieb. Dabei können mehrere Programme nebenläufig ausgeführt werden. Sie können dabei nur scheinbar nebenläufig (parallel), im sogenannten präemptiven Multitasking, auf einem Prozessor ausgeführt werden oder auch echt nebenläufig auf einem Mehrkernprozessor oder auf physisch getrennten Prozessoren.

Ein Prozess beinhaltet insbesondere

  • den Wert des Befehlszählers,
  • die Inhalte der zum Prozess gehörenden Prozessor-Register,
  • das Programmsegment, das den ausführbaren Code des Programms enthält,
  • das Stack-Segment, das temporäre Daten wie Rücksprungadressen und lokale Variablen enthält,
  • das Datensegment, das globale Variablen enthält, und
  • unter Umständen einen Heap, der dynamisch angeforderten Speicher umfasst, der auch wieder freigegeben werden kann.[1]

Der Prozess-Scheduler des Betriebssystems verwaltet die Auswahl des nächsten zu bearbeitenden Prozesses und die Umschaltung. Er kann einen Prozess entweder so lange rechnen lassen, bis er endet oder blockiert (nicht-unterbrechender Scheduler), oder dafür sorgen, dass nach jeweils einer kurzen Zeitdauer der gerade ablaufenden Prozess unterbrochen wird, und der Scheduler so zwischen verschiedenen aktiven Prozessen hin und her wechseln kann (unterbrechender Scheduler), wodurch der Eindruck von Gleichzeitigkeit entsteht, auch wenn zu jedem Zeitpunkt nicht mehr als nur ein Prozess (pro Prozessorkern) verarbeitet wird.

Ein Prozess durchläuft somit während seiner Lebenszeit verschiedene Zustände. Wenn das Betriebssystem entscheidet, den Prozessor für eine gewisse Zeit einem anderen Prozess zuzuteilen, wird zunächst der aktuell rechnende Prozess gestoppt und in den Zustand rechenbereit versetzt. Danach kann der andere Prozess in den Zustand rechnend versetzt werden. Es kann auch sein, dass ein Prozess blockiert wird, weil er nicht weiterarbeiten kann. Typischerweise geschieht dies durch das Warten auf Eingabedaten, die noch nicht zur Verfügung stehen. Vereinfacht lassen sich vier Zustände unterscheiden[2]:

Zustandsautomat eines Prozesses mit vier Zuständen
  • Rechnend (engl. running, auch aktiv): Der Prozess wird in diesem Moment auf der CPU ausgeführt, d. h. die Programm-Befehle werden abgearbeitet. Einem Prozess im Zustand rechnend kann das Betriebsmittel CPU auch wieder entzogen werden, er wird dann in den Zustand bereit versetzt.
  • (Rechen)bereit (engl. ready): Im Zustand bereit befinden sich Prozesse, die gestoppt wurden, um einen anderen Prozess rechnen zu lassen. Sie können theoretisch ihren Ablauf fortsetzen und warten nun darauf, dass ihnen die CPU wieder zugeteilt wird. Auch wenn ein neuer Prozess erzeugt wird, tritt dieser zunächst in den Zustand bereit ein.
  • Blockiert (engl. blocked): Prozesse im Zustand blockiert warten auf bestimmte Ereignisse, die für den weiteren Prozessablauf notwendig sind. Beispielsweise sind E/A-Geräte im Vergleich zur CPU nur sehr langsam arbeitende Komponenten; hat ein Prozess das Betriebssystem mit einer E/A-Geräte-Kommunikation beauftragt, so muss er warten, bis das Betriebssystem diese abgeschlossen hat.
  • Beendet (engl. terminated): Der Prozess hat seine Ausführung beendet, das Betriebssystem muss noch „aufräumen“.

Synchronisationsmechanismen[Bearbeiten | Quelltext bearbeiten]

In Multitasking-Systemen können Prozesse auf gemeinsam genutzte Ressourcen (z.B. Speicherplätze) zugreifen oder Nachrichten austauschen. Dadurch können Konflikte und nur schwer auffindbare Fehler entstehten. Typischerweise müssen Ressourcen geschützt werden, auf die nicht nur lesend, sondern auch schreibend zugegriffen wird. Programmabschnitte, in denen Zugriffe auf gemeinsame Ressourcen durchgeführt werden, heissen kritischen Abschnitte. Dazu sind Synchronisationsmechanismen zum gegenseitigen Ausschluss (engl. mutual exlusion) unumgänglich.[3] Kritische Abschnitte, in denen beispielsweise auf gemeinsam genutzten Speicher zugegriffen wird, sollten vor einem (quasi-)gleichzeitigen Zugriff geschützt werden. Dies kann durch verschiedene Mechanismen wie Semaphore oder Monitore realisiert werden.

Wenn jedoch jeder Prozess aus einer Menge von Prozessen auf ein Ereignis wartet, das nur ein anderer Prozess aus der Menge auslösen kann, entsteht eine Deadlock-Situation. Eine Erkennung von Deadlocks kann dadurch ermöglicht werden, indem ein Timer (Watchdog) vom zu überwachenden Prozess regelmässig neu gestellt werden muss. Kann der Prozess den Timer bedingt durch den Deadlock nicht mehr bedienen, wird eine mögliche Beseitigung des Deadlocks z.B. durch Abbruch und Neustart des betroffenen Prozesses bewirkt.[4]

Speicherverwaltung[Bearbeiten | Quelltext bearbeiten]

Virtueller und physischer Speicher, wobei ein Teil des virtuellen Adressraums auf die Festplatte ausgelagert wird.

Die Speicherverwaltung (engl. memory management) ist der Teil eines Betriebssystems, der (Teile der) Speicherhierarchie verwaltet. Insbesondere soll sie einen effizienten und komfortablen Zugriff auf den physischen Arbeitsspeicher (Hauptspeicher) eines Computers ermöglichen. In diesem Zusammenhang spricht man auch von der Hauptspeicherverwaltung.[5] Das Verwalten der untersten Ebenen der Speicherhierarchie wie beispielsweise des Cache-Speichers wird dagegen üblicherweise von der Hardware vorgenommen.

Eine der Schlüsselfunktionen eines Betriebssystems in der Speicherverwaltung ist normalerweise die Bereitstellung eines virtuellen (logischen) Adressraums für jeden Prozess. Man kann sich darunter eine Menge von Speicheradressen vorstellen, auf die Prozesse zugreifen können. Dieser Adressraum ist entkoppelt vom physischen Arbeitsspeicher des Computers - er kann sowohl größer also auch kleiner als dieser sein. Die virtuellen (logischen) Adressen gehen nicht direkt an den Speicherbus, sondern an die Memory Management Unit (MMU, dt. Speicherverwaltungseinheit), welche die virtuellen Adressen auf die physischen Adressen abbildet. Normalerweise lädt das Betriebssystem einen Teil des Adressraumes in den Arbeitsspeicher, ein anderer Teil bleibt auf der Festplatte. Bei Bedarf werden Programmteile zwischen den beiden Speichern hin- und hergeschoben.

Je nach Einsatzbereich des Computers werden zur Speicherverwaltung unterschiedliche Techniken verwendet. In Multiuser-/Multiprogramming-Betriebssystemen nutzt man heute meist die virtuelle Speicherverwaltung mit diversen Optimierungsmöglichkeiten im Demand-Paging-Verfahren.[5]

Paging mit Seiten im virtuellen (logischen) Speicher, Seitentabelle und Seitenrahmen im physischen Speicher

Beim Paging wird der virtuelle Adressraum in gleich große Stücke unterteilt, die man als Seiten (engl. pages) bezeichnet. Auch der physische Adressraum ist derart unterteilt. Die entsprechenden Einheiten im physischen Speicher nennt man Seitenrahmen oder auch Kacheln (engl. page frames). Die Seiten werden in der sogenannten Seitentabelle (engl. page table) verwaltet, die Informationen darüber enthält, wo für eine (virtuelle) Seite der entsprechende (reale) Seitenrahmen im Arbeitsspeicher tatsächlich zu finden ist, sowie meistens Zusatzinformationen zum Beispiel zu Gültigkeit, Schreibrechten oder ob (sowie evtl. wohin) die Seite ausgelagert wurde.

Wenn ein Prozess eine virtuelle Adresse anspricht, die keiner physischen Arbeitsspeicher-Adresse zugeordnet ist, wird ein Systemaufruf ausgelöst. Dieser Aufruf wird Seitenfehler (engl. page fault) genannt. Als unmittelbare Folge des Seitenfehlers kommt es zu einer synchronen Prozessunterbrechung (Trap). Das Betriebssystem prüft dann, ob ein zugehöriger Seitenrahmen existiert und gerade ausgelagert ist - dann wählt es einen wenig benutzten Seitenrahmen aus, schreibt dessen Inhalt zurück auf die Festplatte, lädt den benötigten Seitenrahmen in den frei gewordenen Arbeitsspeicherbereich, ändert die Zuordnungstabelle und setzt den unterbrochenen Prozess mit dem fehlgeschlagenen Befehl fort.

Existiert zu der angeforderten virtuellen Adresse kein ausgelagerter Seitenrahmen, so kann das Betriebssystem entweder einen (ggf. zuvor „freigeschaufelten“) leeren realen Seitenrahmen zuordnen und den Prozess fortsetzen, oder den Prozess abbrechen unter dem Hinweis „Seitenfehler“. Aktuell verbreitete Betriebssysteme brechen einen Prozess in diesem Fall ab.

Dateiverwaltung[Bearbeiten | Quelltext bearbeiten]

Da der Arbeitsspeicher zu klein ist und sein Inhalt beim Ausschalten des Computers verloren geht, werden Programme und Daten in Form von Dateien auf Datenträgern (Permanentspeicher) wie Festplatten, CD-ROMs oder USB-Sticks gespeichert. Die Logik der Dateiverwaltung wird in Form so genannter Dateisysteme vom Betriebssystem zur Verfügung gestellt, damit alle Programme auf dieselbe Art und Weise darauf zugreifen können. Das Dateisystem ist dafür verantwortlich, dass dem Benutzer die Daten auf einem Speichermedium in geeigneter Form zugänglich gemacht werden, ohne dass sich dieser um die Details der internen Datenorganisation kümmern muss. Darüber hinaus bietet es einen Schutzmechanismus, der sicherstellt, dass Dateien nur von Anwendern gelesen oder geändert werden dürfen, die dazu berechtigt sind.[6]

Dateien haben in einem Dateisystem fast immer mindestens einen Dateinamen sowie Attribute, die nähere Informationen über die Datei geben. Die Dateinamen sind in Verzeichnissen abgelegt; Verzeichnisse sind üblicherweise spezielle Dateien. Über derartige Verzeichnisse kann ein Dateiname (und damit eine Datei) sowie die zur Datei gehörenden Daten vom System gefunden werden. Ein Dateisystem bildet somit einen Namensraum. Alle Dateien (oder dateiähnlichen Objekte) sind so über eine eindeutige Adresse (Dateiname inkl. Pfad oder URI) – innerhalb des Dateisystems – aufrufbar. Der Name einer Datei und weitere Informationen, die den gespeicherten Dateien zugeordnet sind, werden als Metadaten bezeichnet.

Geräteverwaltung[Bearbeiten | Quelltext bearbeiten]

Eine wichtige Aufgabe des Betriebssystems besteht darin, die Besonderheiten der Hardware-Geräte von den Benutzern und Applikationsprogrammierern zu verbergen. Jede Aufgabe kann durch viele verschiedene Geräte unterschiedlicher Hersteller erledigt werden. Die Applikationen sollen jedoch so weit wie möglich unabhängig von der Hardware sein. Zwischen Ein- und Ausgabegeräten und dem Betriebssystem besteht deshalb ein intensives Zusammenspiel.

Im Wesentlichen bestehen Ein-/Ausgabegeräte aus einem Controller und dem Gerät selbst. Der Controller ist ein Chip, der das Gerät auf Hardwareebene steuert und dem Betriebssystem eine vereinfachte Schnittstelle anbietet. Da jedoch jeder Controllertyp anders ist, erfordert jeder Typ eine andere Software zur Steuerung. Die Software, die mit dem Controller kommuniziert, ihm Kommandos gibt und die Antworten empfängt, nennt man Gerätetreiber. Jeder Controller-Hersteller muss einen Treiber für jeden Controller und jedes Betriebssystem anbieten, das er unterstützen will. Um die Treiber zu benutzen, müssen sie in das Betriebssystem integriert werden, damit sie im Kernmodus arbeiten können.[7]

Benutzerschnittstelle[Bearbeiten | Quelltext bearbeiten]

Fast jedes Betriebssystem verfügt über eine Benutzerschnittstelle (engl. user interface, UI). Diese dient der Kommunikation zwischen dem Benutzer und dem Betriebssystem bzw. den Programmen, die darauf ausgeführt werden. Es existieren zwei verschiedene Arten von Benutzeroberflächen:

Fast alle modernen Betriebssysteme besitzen unterschiedlich leistungsfähige Varianten beider Arten von Oberflächen.[8]

Programmierschnittstelle[Bearbeiten | Quelltext bearbeiten]

Eine Programmierschnittstelle, genauer Schnittstelle zur Anwendungsprogrammierung (engl. application programming interface, API), definiert die Programmanbindung auf Quelltext-Ebene. Zur Bereitstellung solch einer Schnittstelle gehört meist die detaillierte Dokumentation der Schnittstellen-Funktionen mit ihren Parametern und Rückgabewerten. Die am weitesten verbreiteten APIs sind das Windows Application Programming Interface (WinAPI) für Windows-Betriebssysteme, das Portable Operating System Interface (POSIX) für unixoide Betriebssysteme und Java-APIs der Java-Laufzeitumgebung. Die API ermöglicht es somit den Anwendungsprogrammierern vordefinierte Funktionen zu verwenden, um mit dem Betriebssystem zu interagieren, anstatt sie selbst zu schreiben und ohne sich mit der darunterliegenden Hardware auseinandersetzen zu müssen.

Die API wird im Allgemeinen in der Implementierungssprache des Betriebssystems zur Verfügung gestellt, somit häufig in C/C++. APIs können jedoch auch durch Zusatz-Bibliotheken angeboten werden (und nicht nur durch das Betriebssystem selbst). Für andere Sprachen als die Betriebssystemsprache ist dies sogar zwingend erforderlich. Solche Bibliotheken mit betriebssystemunabhängigen API-Funktionen gehören bei vielen Programmiersprachen auch zum Lieferumfang des Compilers.[9]

Geschichtliche Entwicklung[Bearbeiten | Quelltext bearbeiten]

Die Entwicklung der Betriebsysteme ist historisch eng verbunden mit den jeweiligen Rechnerarchitekturen. Die nachfolgende Einteilung orientiert sich an den Generationen von Computern, wie sie Andrew S. Tanenbaum vornimmt. Die Zuordnung der Betriebssystemgenerationen zu den Rechnergenerationen kann nur grob vorgenommen werden und bietet nur eine Orientierungshilfe. Ausserdem ist die Entwicklung nicht durchgehend chronologisch: „Eine Entwicklung wartet nicht, bis die vorherige sauber abgeschlossen ist. Es gab eine Menge Überlappungen, nicht zu vergessen die vielen Fehlstarts und Sackgassen.“[10]

Erste Generation (1945-1955)[Bearbeiten | Quelltext bearbeiten]

Die Programmierung der ersten Digitalrechner in den 1940er-Jahren wie dem Atanasoff-Berry-Computer und dem Zuse Z3 erfolgte ausschliesslich in Maschinensprache oder durch Verdrahtung von Stromkreisen. Die meisten Aufgaben bestanden aus einfachen numerischen Berechnungen. Programmiersprachen und Betriebssysteme waren noch unbekannt.[11]

Zweite Generation (1955-1965)[Bearbeiten | Quelltext bearbeiten]

Bedienungskonsole der IBM 701

In den 1950er-Jahren wurde es möglich, Programme auf Lochkarten zu schreiben und diese statt Steckkarten einzulesen. Dadurch konnten Routinearbeiten etwas verbessert werden. Eine revolutionäre Veränderung brachte jedoch erst die Erfindung des [Transistor]]s mit sich, da nun erheblich komplexere und leistungsfähigere Rechner gebaut werden konnten. Erstmals wurde klar zwischen Designer, Computerarchitekten, Operator, Programmierer und Wartungspersonal unterschieden.[12]

Programme wurden zuerst auf Papier (in Assembler oder Fortran) ausgearbeitet, danach auf Lochkarten gestanzt und in den Eingaberaum gebracht. Ein Operator las die Programme, die in Form eines Lochkartenstapels vorlagen, in den internen Speicher ein. Nach der „Ende-Karte“ wurde das Anwendungsprogramm gestartet und seine Ergebnisse direkt über einen Drucker und/oder über den Kartenstanzer ausgeben. Nachdem der Rechner seinen Job beendet hatte, konnte ein entsprechender Ausdruck im Ausgaberaum abgeholt werden.[13]

Da viel Zeit durch das Hin- und Herlaufen der Operatoren verloren ging, wurde ein Stapelverarbeitungssystem (engl. batch system) entwickelt. Die Jobs wurden im Eingaberaum in einer Ablage gesammelt, mittels eines kleinen Rechners auf ein Magnetband eingelesen und schliesslich im Rechnerraum in ein Bandlaufwerk eingelegt. Als erster Betriebssystem-Vorläufer kann die Software GM-NAA I/O angesehen werden, die von General Motors für den IBM 701 geschrieben wurde. Die Aufgabe eines solchen „Resident Monitor“ bestand darin, nach Beendigung eines Stapelauftrags den Folgeauftrag automatisch zu starteten.[14] 1959 entstand daraus das SHARE Operating System (SOS), das bereits über eine rudimentäre Ressourcenverwaltung verfügte.[15] Dessen Nachfolger IBSYS verfügte bereits über eine einfache Shell mit Kommandosprache.[16]

In den frühen 1960er-Jahren existierten zwei verschiedene, untereinander konkurrierende Produktstrategien[17]:

  • Wortorientierte, grosse wissenschaftliche Rechner wie die IBM 7094 (siehe IBM 700/7000 series) wurden für numerische Berechnungen in der Wissenschaft und Technik verwendet.
  • Zeichenorientierte, kommerzielle Rechner wie die IBM 1401 wurden oft für das Sortieren und Ausdrucken von Bändern in Banken und Versicherungen eingesetzt.

Dritte Generation (1965-1980)[Bearbeiten | Quelltext bearbeiten]

Multiprogrammierung[Bearbeiten | Quelltext bearbeiten]

Eine der wichtigsten Schlüsseltechniken, die in der dritten Generation eingeführt wurde, war die Multiprogrammierung (engl. multiprogramming). Wenn auf der 7094 der aktuelle Job pausierte, um auf ein Band oder auf Beendigung anderer Ein-/Ausgabeoperationen zu warten, war die CPU „untätig“. Bei wissenschaftlichen Berechnungen waren nur wenige Ein-/Ausgabeoparationen erforderlich und dementsprechend ging wenig CPU-Zeit verloren. In der kommerziellen Datenverarbeitung dagegen kann die Ein-/Ausgabewartezeit bis zu 90% der Gesamtzeit ausmachen. Deshalb wurde der Speicher in mehrere Partitionen aufgeteilt, wobei jeder Job seine eigene Partition besass. Während nun ein Job auf die Beendigung einer Ein-/Ausgabe-Operation wartete, konnte ein anderer Job die CPU benutzen. Können nun genügend Jobs im Arbeitsspeicher gehalten werden, so kann die CPU zu fast 100% ausgenutzt werden.[18]

OS/360[Bearbeiten | Quelltext bearbeiten]

Ein IBM-System 360/20 im Deutschen Museum, München

Mit der Einführung der Modellreihe System/360 führte IBM 1964 das Betriebssystem OS/360 in verschiedenen Versionen (OS/360 für rein lochkartenbasierte Systeme, TOS/360 für Maschinen mit Bandlaufwerken, DOS/360 für solche mit Festplatten) ein. Es war das erste Betriebssystem, das modellreihenübergreifend eingesetzt wurde. Die IBM 360 war die erste bedeutende Computerreihe, die (kleine) integrierte Schaltkreise (engl. integrated circuit) verwendete.[17] Als „Kind für alles“ (kommerzielle und wissenschaftliche Datenverarbeitung) sollte OS/360 für das ganze damalige Computerspektrum einsetzbar sein, von kleinen Systemen bis zu ganzen Rechenzentren. Das Ergebnis war ein äusserst komplexes Betriebssystem mit Millionen von Assemblerzeilen, von Tausenden von Programmierern geschrieben. Es enthielt Tausende von Fehlern, deren Korrektur eine kontinuierliche Folge neuer Versionen notwendig machte. Jede Version beseitigte alte Fehler, produzierte jedoch gleichzeitig neue. Deshalb blieb die Anzahl der Fehler vermutlich während der ganzen Zeit in etwa gleich.[18]

Spooling[Bearbeiten | Quelltext bearbeiten]

Eine weitere neue Fähigkeit, die mit den Betriebssystemen der dritten Generation aufkaum, war eine Technik, die als Spooling bezeichnet wird (abgeleitet von Simultaneous Peripheral Operation On Line). Diese ermöglichte es, Jobs direkt von Lochkarten auf die Festplatte (in eine Warteschlange) einzulesen, sobald diese in den Computerraum gebracht wurden. Immer wenn ein laufender Job beendet wurde, konnte nun das Betriebssystem von der Festplatte einen neuen Job in die gerade frei gewordene Partition laden und ihn dort ausführen.[19]

Timesharing[Bearbeiten | Quelltext bearbeiten]

Bei den Stapelverarbeitungssystemen der dritten Generation betrug die Zeit zwischen dem Abschicken eines Jobs und dem Eintreffen der Ausgabe oft mehrere Stunden. Ein Programmierfehler bedeutete dementsprechend ein grosser Zeitverlust. Deshalb wurde mit dem Timesharing der erste konzeptionelle Ansatz entwickelt, mehrere Benutzer an einem Computer gleichzeitig arbeiten zu lassen (Mehrbenutzersystem), indem sie sich die Rechenzeit des einzigen vorhandenen Prozessors teilten. Jeder Benutzer erhielt über ein Terminal online Zugang zum System. Wenn nun 20 Benutzer gleichzeitig in einem Timesharing-System eingeloggt waren, arbeiteten für gewöhnlich nur etwa drei gleichzeitig Rechenzeit und liessen meist nur kurze Kommandos ablaufen. Wenn nun jedem Benutzer abwechselnd für eine kurze Zeitspanne die CPU zur Verfügung gestellt wurde, erschien es jedem so, als hätte er die gesamten Ressourcen des Computers stets für sich allein zur Verfügung. War die CPU noch nicht ausgelastet, konnten zusätzlich im Hintergrund umfangreiche Stapeljobs verarbeitet werden.[19]

Eines der ersten Timesharing-Systeme war das Compatible Time-Sharing System (CTSS), das Anfang der 1960er-Jahre am MIT entwickelt und bis 1973 genutzt wurde. Es wurde auf einem modifizierten 7094 entwickelt und betrieben.[20]

Aus der Weiterentwicklung des CTSS entstand unter der Federführung von Fernando José Corbató MULTICS (MULTiplexed Information and Computing System). Es wurde ab 1963 in Zusammenarbeit von MIT, General Electric und den Bell Labs von AT&T entwickelt. 1969 zogen sich die Bell Labs aus dem Projekt zurück. Die Entwicklung wurde von der ARPA finanziell gefördert. Ab 1969 war das erste Multics-System am MIT verfügbar. Das erste kommerzielle System wurde von Honeywell Information Systems, Inc. auf einer Honeywell 6180 vertrieben, bis 1986 das letzte System installiert wurde. Am 30. Oktober 2000 wurde das letzte noch laufende Multics-System des kanadischen Department of National Defence in Halifax, Kanada heruntergefahren und außer Dienst gestellt. Trotz des fehlenden wirtschaftlichen Erfolgs brachte MULTICS viele wegweisende Ideen in die Fachliteratur ein.[21]

UNIX[Bearbeiten | Quelltext bearbeiten]

Ken Thompson (links) und Dennis Ritchie (rechts)
Terminal des Version 7 Unix für den PDP-11

1961 begann mit der DEC PDP-1 die Verbreitung der Minicomputer. Dadurch wurde ein völlig neuer Markt geschaffen und es folgte schnell eine Serie anderer PDP-Rechner. Inspiriert von den Arbeiten an Multics startete eine Gruppe um Ken Thompson und Dennis Ritchie an den Bell Labs 1969 mit der Entwicklung von Unix. Ken Thompson schrieb ursprünglich eine vereinfachte Version des MULTICS (damals in Assembler) für einen ausrangierten PDP-7-Minicomputer. In den Jahren 1972–1974 wurde UNIX bis auf wenige Teile in der höheren Programmiersprache C mit dem Ziel der Portabilität neu implementiert, um auf dem damals neuen PDP-11 lauffähig zu sein.[22] 1974 veröffentlichten Ritchie und Thompson einen Grundsatzartikel über UNIX.[23]

UNIX wurde in der akademischen Welt, in Behörden und vielen Unternehmen sehr beliebt. Da der Quellcode des Systems frei verfügbar war, entwickelten verschiedene Organisationen jeweils eigene (zueinander inkompatible) UNIX-Versionen, dazu gehören das BSD-UNIX der University of California in Berkleley und das System V von AT&T. Damit Programme gemeinsam für alle UNIX-Plattformen geschrieben werden konnten, wurde von vom IEEE und der Open Group als Standard das Portable Operating System Interface (POSIX) entwickelt. Dieses ist eine standardisierte Programmierschnittstelle, welche die Schnittstelle zwischen Anwendungssoftware und Betriebssystem darstellt.

Vierte Generation (1975 - heute)[Bearbeiten | Quelltext bearbeiten]

Erste Personal Computer[Bearbeiten | Quelltext bearbeiten]

Mit der Entwicklung von Large-Scale-Integration-Schaltungen (LSI) begann das Zeitalter des Personal Computer (PC), anfangs auch Mikrocomputer genannt. Von der Architektur waren die PCs anfangs nicht so verschieden von den Minicomputern der PDP-11-Klasse. Der günstigere Mikroprozessorchip ermöglichte es jedoch, dass sich auch Privatpersonen eigene PCs als Heimcomputer leisten konnten.[24]

Die ersten PCs wie der Altair 8800 von 1975 verfügten zunächst über kein Betriebssystem. Daher mussten sämtliche Aktionen in einem reinen Maschinencode eingegeben werden. Sein erstes Betriebssystem erhielt der Altair 8800 in Form eines BASIC-Interpreters.[25] Dieser stellte sowohl eine Programmierumgebung dar als auch die allgemeine Schnittstelle zwischen dem Benutzer und der Hardware (die dieser Interpreter direkt ansteuerte). Er war Laufzeitumgebung und Benutzerschnittstelle zugleich; über bestimmte Befehle konnte der Benutzer beispielsweise Daten laden und speichern und Programme ausführen.

CP/M[Bearbeiten | Quelltext bearbeiten]

Gary Kildall entwickelte das Betriebssystem CP/M (Control Program for Microcomputers) zunächst im Auftrag von Intel für den 8-Bit-Mikroprozessor Intel 8080. Da Intel vermutlich nicht mit einem Erfolg rechnete, überliess es die Rechte daran Kildall, der daraufhin die Firma Digital Research gründete, um CP/M weiterzuentwickeln und zu vertreiben. Er schrieb das Betriebssystem 1977 so um, dass es auch auf anderen Rechnerarchitekturen lief, beispielsweise auf dem Zilog Z80. CP/M war damit (neben dem für leistungsstärkere Rechner konzipierten Unix) das erste plattformunabhängige Betriebssystem. Eine Multiuser-Variante wurde unter dem Namen MP/M entwickelt. Durch seine modulare Bauweise (der plattformunabhängige Kernel BDOS setzte auf einer Hardware-Treiberschicht namens BIOS auf) ließ es sich mit vertretbarem Aufwand auf zahlreiche zueinander inkompatible PC-Plattformen portieren. Eine Programmierumgebung steuerte nun (meistens) nicht mehr die Hardware direkt an, sondern nutzte die Schnittstellen des Betriebssystems. Daher war auch die Programmierumgebung nicht mehr nur auf einer bestimmten Hardware lauffähig, sondern auf zahlreichen PCs.

Es entstand eine ganze CP/M-Welt, die den Markt etwa fünf Jahre lang dominierte.[26] Dies wiederum führte zur Entstehung einer Industrie der Anwendungssoftware. Erst ein verbreitetes Betriebssystem machte es rentabel, so etwas wie ein Textverarbeitungsprogramm zu entwickeln und zu vermarkten.[27]

MS-DOS[Bearbeiten | Quelltext bearbeiten]

In den frühen 1980er-Jahren entwickelte IBM den IBM-PC, der auf einem Intel 8088 Mikroprozessor basierte. Die Firma Microsoft unter der Führung von Bill Gates war damals ein führender Anbieter für BASIC-Interpreter. Zunächst kontaktierte IBM Bill Gates, um eine BASIC-Lizenz für den neuen IBM-PC zu erwerben. IBM erkundigte sich zudem, ob er ein Betriebssystem für den PC kennen würde. Gates verwies zunächst auf Digital Research, der damals führenden Firma für Betriebssysteme. IBM und Digital Research wurden sich jedoch nicht einig.[28][27]

Darauf kaufte Microsoft vom Unternehmen Seattle Computer Products das Betriebssystem 86-DOS (Disk Operating System, ursprünglich QDOS, Quick and Dirty Operating System), ein für den Intel 8086 optimierten CP/M-Klon, der von Tim Paterson entwickelt wurde, und bot dieses IBM an. Da IBM einige Veränderungen am System verlangte, stellte Gates den Entwickler Paterson in seiner Firma Microsoft ein und bot schliesslich ein Paket aus DOS und BASIC als MS-DOS 1.0 (Microsoft Disk Operating System) an, das IBM kaufte. MS-DOS wurde 1981 zusammen mit dem ersten IBM-PC ausgeliefert und konnte den IBM-PC-Markt schnell erobern. Auf dem Nachfolger des IBM-PCs, dem IBM-PC/AT mit Intel 80286-Prozessor war MS-DOS bereits sehr verbreitet und wurde später auch noch oft auf den Nachfolgeprozessoren 80386 und 80486 eingesetzt.[29]

MS-DOS war ursprünglich ein kommandozeilenorientiertes Einzelbenutzer-Betriebssystem im 16-Bit-Real-Modus, das aus einem 8 KB grossen speicherresidenten Code bestand.[30] MS-DOS hatte gegenüber CP/M einige Verbesserungen bei der Dateiverwaltung, z.B. das FAT-Dateisystem. Die Ursprungsversion von MS-DOS unterstützte noch keine Festplatte, sondern nur Floppy-Laufwerke.[31] Im Folgenden wurde das Betriebssystem jedoch kontinuierlich weiterentwickelt.

Xerox Alto und Xerox Star[Bearbeiten | Quelltext bearbeiten]

In den 1960er-Jahren erfand Douglas Engelbart am Stanford Research Institute die Computermaus und lieferte darüber hinaus wesentliche Ideen zu allen Aspekten der Mensch-Maschinen-Interaktion, u. a. Grafische Benutzoberflächen (engl. graphical user interface, GUI), Hypertext und Computernetzwerken.[32] Einige seiner Mitarbeiter verliessen Anfang der 1970er-Jahre das Institut ung gingen zu Xerox PARC. Dort wurde 1973 der Xerox Alto entwickelt, die erste Workstation mit einer grafischen Benutzeroberfläche, die über eine Computermaus angesteuert wurde. Mit einer schreibmaschinenähnlichen Tastatur, einer 3-Tasten-Maus, einer zusätzlichen kleinen 5-Tasten-Akkordtastatur für besondere Befehle, einem objektorientierten Betriebssystem und einer Ethernet-Netzwerkschnittstelle war er wegweisend für künftige PCs.

Nach dem für die Forschung entwickelten Xerox Alto wurde in dem 1981 herausgebrachten Xerox Star die anwenderfreundliche grafische Benutzerschnittstelle erstmals in einem kommerziellen Computer angewandt. Es gab bereits einen per Maus bedienbaren Desktop mit Menüs und Fenstern. Neben einer Ethernet-Schnittstelle unterstützte das System, wie schon sein Vorgänger, die WYSIWYG-Darstellung. Der Star verwendete einen 16-bit-Zeichensatz, um europäische Schriften, Japanisch und später weitere Schriften zu unterstützen.[33] Die dargestellten Desktop-Objekte stammten aus der Arbeitswelt. So wurden beispielsweise Dokumente in Form eines Blatt Papiers dargestellt und konnten in Ablagen und Ordnern gesammelt werden.[34]

Dass Xerox den potenziellen Wert der GUI jedoch nicht erkannte, wird teilweise als strategischer Fehler von grossem Ausmass angesehen.[35] Allerdings war auch der Preis von 16'000 US-Dollar für den Xerox Star damals sehr hoch, insbesondere da viele Menschen erst noch von den Vorteilen eines Computers überzeugt werden mussten. Zudem wurde die Entwicklung zusätzlicher Softwarekomponenten von Drittanbietern durch die geschlossene Systemarchitektur des Star-Computers verhindert.[34]

Apple Lisa und Macintosh[Bearbeiten | Quelltext bearbeiten]

Als Steve Jobs, Mitbegründer und ehemaliger CEO von Apple, 1979 das Forschungszentrum Xerox PARC besuchte und den Xerox Alto sah, erkannte er den potenziellen Wert, den eine grafische Benutzeroberfläche mit Schreibtischcharakter und Mausbedienung bot. Dies veranlasste ihn dazu, mit dem Apple Lisa einen PC mit GUI zu entwickeln. Wegen des hohen Preises von rund 10'000 US-Dollar verkaufte sich der Rechner schlecht, und Apple stellte die Produktion bereits 1984 wieder ein. In der Computergeschichte gilt Lisa als Vorbereitung des deutlich preisgünstigeren, aber technisch ähnlichen Macintosh im Jahr 1984. Mittelfristig wurde der „Mac“ dann zum großen Erfolg für den kalifornischen Computerkonzern.

Der Macintosh wurde jedoch nicht nur ein grosser Erfolg, weil er billiger als Lisa war, sondern weil er allgemin benutzerfreundlich war. Dadurch war er auch für Anwender geeignet, die nicht viel Kenntnisse von Computern hatten und auch nicht die Absicht hatten, daran etwas zu ändern. So verbreitete er sich auch in der Welt des grafischen Designs, der professionellen digitalen Fotografie und der professionellen digitalen Videoproduktion.[36] Das Betriebssystem des Macintosh hatte ursprünglich keinen Namen und wurde nur „System“ (mit angehängter Versionsnummer) genannt. Ab Version 7.5.1 hieß es dann Mac OS (abgeleitet von Macintosh Operating System).

Windows[Bearbeiten | Quelltext bearbeiten]

Windows war ursprünglich von 1985 bis 1995 eine grafische Umgebung, die auf MS-DOS aufsetzte. Erst mit Windows 95 wurde ein eigenständiges Betriebssystem mit grafischer Benutzeroberfläche verkauft. Es war das erste Betriebssystem der Windows-Reihe von Microsoft, das den 32-Bit-Betrieb des Prozessors weitreichend unterstützte, ohne auf die Abwärtskompatibilität zu den damals noch weit verbreiteten DOS-Programmen zu verzichten. Mit Windows 98 wurde 1998 eine leicht veränderte Version dieses Systems herausgegeben. Windows 95 und Windows 98 enthielten aber noch immer einen grossen Anteil 16-Bit-Intel-Maschinencode.[37]

Mit Windows NT (für new technology) entwickelte Microsoft ein reines 32-bit-Betriebssystem, das von Grund auf neu geschrieben wurde. Leiter des NT-Projekts wurde David N. Cutler. Er galt als einer der renommiertesten Entwickler von Betriebssystemen überhaupt und war maßgeblich an der Entwicklung des Betriebssystems VMS beteiligt gewesen, weshalb der Windows NT-Kernel viele Ähnlichkeiten mit VMS aufweist.[38] Microsoft warb ihn und Mitglieder seines Teams von DEC ab und setzte sie auf die Entwicklung eines neuen Betriebssystems an. Diese Abwerbung beantwortete DEC mit einer Klage, die Microsoft durch die Zahlung von 150 Millionen US-Dollar und die Zusage, mit Windows NT auch Alpha-Prozessoren zu unterstützen, beilegen konnte.

Die Version 5 von Windows NT wurde 1999 in Windows 2000 umbenannt. Mit Windows ME veröffentlichte Microsoft im Jahr 2000 auch eine neue Version von Windows 98. Im Jahr 2001 erschien mit Windows XP der technische Nachfolger von Windows 2000, dessen internes Versionskürzel Windows NT 5.1 lautet. XP war sechs Jahre auf dem Markt und ersetzte in diesem Zeitraum so gut wie alle vorherigen Windows-Versionen. Erst mit Windows Vista erschien im Januar 2007 der technische Nachfolger von Windows XP (mit der Versionsnummer NT 6.0). Die wohl populärste Neuerung in Vista ist Aero, die neue vektorbasierte Benutzeroberfläche von Windows.[37] Der Nachfolger von Vista ist Windows 7, das im Oktober 2009 erschien (mit der internen Versionsnummer NT 6.1). Abgesehen von zahlreichen Bugfixes und einer überarbeiteten Oberfläche sind sich Windows Vista und 7 sehr ähnlich.[39][40]

Als Nachfolger von Windows 7 veröffentlichte Microsoft im Oktober 2012 Windows 8. Dieses sollte die Möglichkeiten der Nutzung eines Computer mittels Touchscreen und Maus vereinigen. Die Verwendung einer realen oder einer virtuellen Tastatur auf dem Bildschirm ist weiterhin möglich. Das Betriebssystem enthält zwei Oberflächensysteme: einerseits Windows 8 Modern UI (früher „Metro“ genannt) eine speziell für Touchscreens optimierte Bedienoberfläche in „Kachelform“ und andererseits die klassische Desktop-Oberfläche mit der Taskleiste. Diese entspricht großteils dem aus Windows 7 bekannten Desktop und kann aus der neuen Oberfläche gestartet werden.[41]

Als nächste Version wurde im Oktober 2014 Windows 10 vergestellt. Dieses ist sowohl auf einem Desktop-Computer und Notebook, als auch auf einem Tabletcomputer, Smartphone, Convertible, eingebetteten System, Raspberry Pi 2 & 3, Xbox One und der HoloLens lauffähig und stellt somit eine einheitliche Softwareplattform für verschiedene Geräteklassen dar. Dabei passt sich die grafische Benutzeroberfläche je nach Typ des Gerätes an dessen Eigenschaften an. Bei Convertibles kann Windows 10 mithilfe der neuen „Continuum“-Funktion automatisch erkennen, ob eine Tastatur angeschlossen ist oder nicht, und passt die Bedienoberfläche entsprechend an. Das Pendant des Betriebssystems für einige mobile Geräte wie Smartphones wird als Windows 10 Mobile bezeichnet.

Literatur[Bearbeiten | Quelltext bearbeiten]

  • Albrecht Achilles: Betriebssysteme. Eine kompakte Einführung mit Linux. Springer: Berlin, Heidelberg, 2006 ISBN 978-3540238058.
  • Uwe Baumgarten, Hans-Jürgen Siegert: Betriebssysteme. Eine Einführung. 6., überarbeitete, aktualisierte und erweiterte Auflage, Oldenbourg Verlag: München, Wien, 2007.
  • Erich Ehses, Lutz Köhler, Petra Riemer, Horst Stenzel, Frank Victor: Systemprogrammierung in UNIX / Linux. Grundlegende Betriebssystemkonzepte und praxisorientierte Anwendungen. Vieweg+Teubner: Wiesbaden, 2012 ISBN 978-3834814180.
  • Helmut Herold, Bruno Lurz, Jürgen Wohlrab, Matthias Hopf: Grundlagen der Informatik. Kapitel 9: Betriebssysteme. 3., aktualisierte Auflage, Pearson: Hellbergmoos, 2017, S. 433-462 ISBN 978-3-86894-316-0.
  • Peter Mandl: Grundkurs Betriebssysteme. Architekturen, Betriebsmittelverwaltung, Synchronisation, Prozesskommunikation, Virtualisierung. 4. Auflage, Springer Vieweg: Wiesbaden, 2014 ISBN 978-3658062170.
  • Abraham Silberschatz, Peter Baer Galvin, Greg Gagne: Operating System Concepts. Ninth Edition, John Wiley & Sons: Hoboken, 2013 ISBN 978-1-118-06333-0.
  • Andrew S. Tanenbaum, Herbert Bos: Moderne Betriebssysteme. 4., aktualisierte Auflage. Pearson: Hallbergmoos, 2016, ISBN 978-3-8689-4270-5.
    • Ältere zitierte Ausgabe: Andrew S. Tanenbaum: Moderne Betriebssysteme. 3., aktualisierte Auflage, Pearson Studium, 2009.
    • Englische Originalausgabe: Modern Operating Systems. 4th Edition, Pearson, 2016.


Einzelnachweise:

  1. Silberschatz, Galvin, Gagne: Operating System Concepts. 2013, S. 106.
  2. Mandl: Grundkurs Betriebssysteme. 2008, S. 78; Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 131–132.
  3. Helmut Herold, Bruno Lurz, Jürgen Wohlrab, Matthias Hopf: Grundlagen der Informatik. 3., aktualisierte Auflage, Pearson, 2017, S. 443-444.
  4. Helmut Herold, Bruno Lurz, Jürgen Wohlrab, Matthias Hopf: Grundlagen der Informatik. 3., aktualisierte Auflage, Pearson, 2017, S. 446.
  5. a b Mandl: Grundkurs Betriebssysteme. 4. Aufl. 2014, S. 213.
  6. Helmut Herold, Bruno Lurz, Jürgen Wohlrab, Matthias Hopf: Grundlagen der Informatik. 3., aktualisierte Auflage, Pearson, 2017, S. 439,449.
  7. Andrew S. Tanenbaum: Moderne Betriebssysteme. 3., aktualisierte Aufl., Pearson, 2009, S. 60-61.
  8. Herold, Lurz, Wohlrab, Hopf: Grundlagen der Informatik. 3. Aufl., 2017, S. 437.
  9. Herold, Lurz, Wohlrab, Hopf: Grundlagen der Informatik. 3. Aufl., 2017, S. 456.
  10. Tanenbaum: Moderne Betriebssysteme. 3. Aufl. 2009, S. 37.
  11. Tanenbaum: Moderne Betriebssysteme. 3. Aufl. 2009, S. 38; Herold, Lurz, Wohlrab, Hopf: Grundlagen der Informatik. 3. Aufl., 2017, S. 434.
  12. Herold, Lurz, Wohlrab, Hopf: Grundlagen der Informatik. 3. Aufl., 2017, S. 435.
  13. Tanenbaum: Moderne Betriebssysteme. 3. Aufl. 2009, S. 38-40.
  14. Richard Fox: Information Technology. An Introduction for Today’s Digital World. CRC Press: Boca Raton, London, New York, 2013, S. 217.
  15. SOS Reference Manual, 1959.
  16. Jack Harper, IBM 7090/94 IBSYS Operating System, 2001.
  17. a b Tanenbaum: Moderne Betriebssysteme. 3. Aufl. 2009, S. 41.
  18. a b Tanenbaum: Moderne Betriebssysteme. 3. Aufl. 2009, S. 42.
  19. a b Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 43.
  20. Fernando J. Corbató, Marjorie Merwin Daggett, Robert C. Daley: An Experimental Time-Sharing System. In: Proc. AFIPS Fall Joint Computer Conf. AFIPS, 1962, S. 335-344. (Online)
  21. Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 44-45.
  22. Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 833-834.
  23. Dennis M. Ritchie, Ken Thompson: The UNIX Time-Sharing System]. In: Commun. of the ACM, Vol. 17, Juli 1974, S. 365-375.
  24. Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 46.
  25. Computer Classics, Jörg und Kerstin Allner, Data Becker Verlag, ISBN 3-8158-2339-0, S. 27
  26. Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 46.
  27. a b Rainer Bartel: Computerhelden (5): Gary Kildall, das missverstandene Genie. Beitrag in Der Digisaurier vom 5. 4. 2017.
  28. Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 46.
  29. Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 47.
  30. Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 937.
  31. Mandl: Grundkurs Betriebssysteme. 4. Aufl., 2014, S. 19-20.
  32. Martin Burckhardt: Mit seiner Maus machten andere Mäuse. D. C. Engelbart, der Erfinder der Computermaus. In: Frankfurter Allgemeine Zeitung, 16. Juni 2016, S. 15.
  33. Zenon W. Pylyshyn, Liam Bannon: Perspectives on the Computer Revolution. Intellect Books, 1989, ISBN 978-0-89391-369-4, 262, 263 etc. Vergleich Alto und Star mit detaillierten Spezifikationen (google.com [abgerufen am 18. November 2014]).
  34. a b Henrik Arndt: Integrierte Informationsarchitektur. Die erfolgreiche Konzeption professioneller Websites. Springer: Berlin, Heidelberg, 2006, S. 28-29.
  35. Douglas K. Smith, Robert C. Alexander: Fumbling the Future. How Xerox Invented, Then Ignored, the First Personal Computer. William Morrow: New York, 1988.
  36. Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 47-48.
  37. a b Tanenbaum: Moderne Betriebssysteme. 3. Aufl., 2009, S. 48.
  38. Mark Russinovich: [Internetquelle: archiv-url ungültig Windows NT and VMS: The Rest of the Story.] In: Windows & .Net Magazine. Penton Media, 1. Dezember 1998, archiviert vom Original; abgerufen am 20. September 2013 (englisch).
  39. Axel Vahldiek: Windows 7: Microsofts Hoffnungsträger am Start. Online-Beitrag in heise.de am 22.10.2009.
  40. Panagiotis Kolokythas: Windows 7 erhält keinen neuen Kernel. Online-Beitrag in pcwelt.de vom 27. 5. 2008.
  41. tagesschau.de: Einführung von Windows 8. Microsoft bricht mit der Tradition. Online-Beitrag vom 26.10.2012.