Betriebssystem

aus Wikipedia, der freien Enzyklopädie
Zusammenhang zwischen Betriebssystem, Hardware, Anwendungssoftware und dem Benutzer
PC Betriebssysteme Marktanteile in Deutschland[1]

Ein Betriebssystem, auch OS (von englisch operating system) genannt, ist eine Zusammenstellung von Computerprogrammen, die die Systemressourcen eines Computers wie Arbeitsspeicher, Festplatten, Ein- und Ausgabegeräte verwaltet und diesen Anwendungsprogramme zur Verfügung stellt. Das Betriebssystem bildet dadurch die Schnittstelle zwischen den Hardware-Komponenten und der Anwendungssoftware des Benutzers.[2] Betriebssysteme bestehen in der Regel aus einem Kernel (deutsch: Kern), der die Hardware des Computers verwaltet, sowie speziellen Programmen, die beim Start unterschiedliche Aufgaben übernehmen. Zu diesen Aufgaben gehört unter anderem das Laden von Gerätetreibern. Betriebssysteme finden sich in fast allen Arten von Computern: Als Echtzeitbetriebssysteme auf Prozessrechnern und eingebetteten Systemen, auf Personal Computern, Tabletcomputern, Smartphones und auf größeren Mehrprozessorsystemen wie z. B. Servern und Großrechnern.

Die Aufgaben eines Betriebssystems lassen sich wie folgt zusammenfassen: Benutzerkommunikation; Laden, Ausführen, Unterbrechen und Beenden von Programmen; Verwaltung und Zuteilung der Prozessorzeit; Verwaltung des internen Speicherplatzes für Anwendungen; Verwaltung und Betrieb der angeschlossenen Geräte; Schutzfunktionen z. B. durch Zugriffsbeschränkungen. Die Gewichtung zwischen diesen Aufgaben wandelte sich im Laufe der Zeit, insbesondere wird Schutzfunktionen wie dem Speicherschutz oder begrenzten Benutzerrechten heute eine höhere Bedeutung zugemessen als noch in den 1990er Jahren. Dies macht Systeme allgemein robuster, reduziert z. B. die Zahl der Programm- und Systemabstürze und macht das System auch stabiler gegen Angriffe von außen, etwa durch Computerviren.

Dieser Artikel behandelt den Begriff „Betriebssystem“ hauptsächlich im Kontext „allgemein zur Informationsverarbeitung verwendete Computersysteme“. Daneben sind Betriebssysteme (mit ggf. spezialisierter Funktionalität) grundsätzlich in nahezu allen Geräten im Einsatz, in denen Software betrieben wird (wie Spielecomputer, Mobiltelefone, Navigationssysteme, Maschinen der Maschinenbaubranchen u. v. a.). Auch viele Steuerungssysteme (eingebettetes System) die z. B. in Flugzeugen, Autos, Zügen, oder in Satelliten zu finden sind, besitzen spezialisierte Betriebssysteme.

Definitionen und Abgrenzung

Ein Betriebssystem übernimmt zwei wesentliche Aufgaben, die im Grunde in keinem direkten Zusammenhang zueinander stehen[3]:

  • Die eine Aufgabe besteht darin, dem Anwendungsprogrammierer saubere Abstraktionen der Betriebsmittel zur Verfügung zu stellen (anstelle der unschönen Hardware). Das Betriebssystem bietet somit eine leichter verständliche und besser handhabbare Schnittstelle zur eigentlichen Maschine an und „versteckt“ die Komplexität der darunterliegenden Maschine: „Der Ansprechpartner für den Programmierer ist also nicht mehr die wirkliche Maschine, sondern eine virtuelle Maschine (Betriebssystem), welche wesentlich einfacher zu verstehen und zu programmieren ist.“[4] Das Betriebssystem erzeugt abstrakte Objekte, um die Komplexität beherrschbar zu machen. Ein Beispiel für eine solche Abstraktion ist die Datei. Diese kann beispielsweise in Form eines Digitalfoto, einer gespeicherten E-Mail-Nachricht oder einer Website vorliegen. Es ist auf jeden Fall einfacher, sich damit zu beschäftigen, als mit den Details von Festplattenspeichern.[5]
  • Die andere Aufgabe besteht darin, die Hardwareressourcen zu verwalten: „Ein Betriebssystem muss eine geordnete und kontrollierte Zuteilung von Prozessoren, Speichereinheiten und Peripheriegeräten unter den verschiedenen Programmen, welche darum konkurrieren, sicherstellen.“[4] Das Betriebssystem ordnet und kontrolliert die Allokation der Prozessoren, Speicher und Ein-/Ausgabegeräte und überwacht, welches Programm gerade welches Betriebsmittel nutzt. Liegen beispielsweise mehrere Aufträge für einen Drucker vor, so muss festgelegt werden, wie diese abgearbeitet werden. Auf einem modernen Betriebssystem können dadurch auch mehrere Programme gleichzeitig ausgeführt werden. Benutzen mehrere Anwender einen Computer oder ein Netzwerk, dann gewinnen Maßnahmen zur Verwaltung und zum Schutz von Speicher, Ein-/Ausgabegeräten und anderen Betriebsmitteln noch an Bedeutung. Die Benutzer würden sich sonst gegenseitig stören.[6]

Die Gesamtheit aller Programme und Dateien, die sämtliche Abläufe bei Betrieb eines Rechners steuern, wird Systemsoftware genannt. Dazu gehören Betriebssysteme, aber auch systemnahe Software wie Compiler, Interpreter und Editoren. Anwendungssoftware wie beispielsweise Browser oder Buchhaltungssoftware benutzen die Systemsoftware für einen ordnungsgemäßen Ablauf.[7] In der Literatur wird der Begriff „Betriebssystem“ innerhalb der Systemsoftware unterschiedlich breit interpretiert.

In der DIN-Sammlung 44300 (veraltet, ersetzt durch ISO/IEC 2382:2015 siehe: Liste der DIN-Normen/DIN 1–49999 unter DIN 44300) geht die Definition von seiner Aufgabe und Stellung in einer Programmhierarchie aus:

„Das Betriebssystem wird gebildet durch die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften der Rechenanlage die Grundlage der möglichen Betriebsarten des digitalen Rechensystems bilden und insbesondere die Ausführung von Programmen steuern und überwachen.“

DIN 44300[8]

Für Andrew S. Tanenbaum beschränkt sich der Begriff Betriebssystem im Wesentlichen auf den Kernel: „Editoren, Compiler, Assembler, Binder und Kommandointerpreter sind definitiv nicht Teil des Betriebssystems, auch wenn sie bedeutsam und nützlich sind.“[9] Viele Lehrbücher folgen dieser engeren Sichtweise. Andere Autoren zählen unter anderem auch eine Kommandosprache zum Betriebssystem: „Außer die Hardware zu verwalten […], bieten moderne Betriebssysteme zahlreiche Dienste an, etwa zur Verständigung der Prozesse untereinander, Datei- und Verzeichnissysteme, Datenübertragung über Netzwerke und eine Befehlssprache.“[10] Eine noch weitere Fassung des Begriffes, die beispielsweise auch Editoren und Compiler umfasst, geht zum Teil auf ältere Werke des deutschen Sprachraums zurück, lässt sich aber auch in aktueller Literatur noch finden. So zählen die Autoren des Informatik-Dudens auch Übersetzungsprogramme und Dienstprogramme zu den wesentlichen Komponenten eines Betriebssystems.[11] In jüngerer Zeit kann der GNU/Linux-Namensstreit als Beispiel für die Abgrenzungsprobleme angesehen werden.

Der Begriff des Betriebssystems ist in Artikel 3 der Richtlinie (EU) 2019/882[12] legal definiert.

Ungeachtet dessen, wie weit oder wie eng man den Begriff „Betriebssystem“ fasst, enthalten die Installationsmedien für Betriebssysteme für gewöhnlich zusätzliche Dienst- und Anwendungsprogramme.

Entwicklungsstufen

Die Entwicklung von Computer-Betriebssystemen verlief und verläuft parallel zur Entwicklung und Leistungsfähigkeit verfügbarer Hardware: Beide Linien bedingten sich gegenseitig und ermöglichten bzw. erforderten Weiterentwicklungen auf der ‚anderen‘ Seite. Die Entwicklung verlief zum Teil in kleinen, manchmal in größeren Sprüngen:

Lochkarten verarbeitende Systeme (gilt sinngemäß auch für Lochstreifen) gehören mittlerweile (seit Anfang der 1970er Jahre) der Vergangenheit an. Jedoch sind sie ein guter Ansatz zur Betrachtung der Systementwicklung: In diesen räumlich relativ großen Systemen gab es noch keine externen elektronischen Speichermedien. Die Programme lagen (in Maschinensprache) in Form von Lochkartenstapeln vor und wurden durch den Operator über den Lochkartenleser in den internen Speicher ‚eingelesen‘. Nach der „Ende-Karte“ wurde das Anwendungsprogramm gestartet, das seine Eingabedaten je nach Aufgabenstellung ebenfalls über den Kartenleser lesen (deshalb der Begriff Stapelverarbeitung, engl. batch processing, queued systems) und seine Ergebnisse direkt über einen Drucker und/oder über den Kartenstanzer ausgeben musste. Vor- und nachgelagert waren, mithilfe elektro-mechanischer Geräte (Kartenlocher, Mischer, Sortierer) ausgeführt, Erfassungs-, Misch- und Sortiervorgänge erforderlich. Bereits zu diesem Zeitpunkt war die interne Verarbeitung deutlich schneller als die Ein-/Ausgabegeräte; das Lesen eines Lochkartenstapels (Karton mit 2000 Karten) dauerte ca. 5–10 Minuten, die Arbeitsspeichergrößen solcher Rechner lagen bei ca. 16 bis 64 kB (Beispiel siehe System/360).
Diese Maschinen besaßen kein konventionelles Betriebssystem, wie es heute geläufig ist. Lediglich ein Kontrollprogramm (resident monitor) wurde im Speicher gehalten und sorgte für den reibungslosen Ablauf, indem es die Kontrolle an die momentan auszuführenden Programme übergab. Der Rechner konnte stets nur ein Programm nach dem anderen ausführen.

Eine Weiterentwicklung – Multiprogrammed Batch Systems – konnte zusätzliche Geräte unterstützen (Magnetbandeinheiten, erste Magnetplatten mit z. B. 7,25 MB Speichervolumen), mehrere Programme gleichzeitig ausführen (z. B. in 3 'Partitionen') sowie Programme und Daten auf externen Speichern halten. Eine schnellere Abarbeitung war möglich, da die Zeit für das Lesen und Ausgeben der Kartenstapel entfiel – und die Prozessoren schneller wurden. Hier wurden Mechanismen wie das Spooling (Zwischenausgabe von Druckerdaten auf Magnetband mit verzögertem, parallel möglichem Drucken) und die Möglichkeit des Offline-Betriebs bereits ausgiebig genutzt. Jedoch war ein Programm nötig, welches sich der Aufgaben E/A-Verwaltung, Speicherverwaltung und vor allem CPU-Scheduling etc. annimmt. Ab diesem Zeitpunkt konnte man von ersten Betriebssystemen reden.

Die nächsten Schritte waren dann Folgen der jeweiligen Aufgabenbereiche, die den Systemen zukamen. Folgende Systeme sind entstanden und bis zum heutigen Tage im Einsatz: Parallele Systeme, Verteilte Systeme, Personal-Computer-Systeme, Time-Sharing-Systeme, Real-Time-Systeme und in neuester Zeit auch die Personal Digital Assistants und Smartphones.

Im PC-Bereich sind derzeit die meistgenutzten Betriebssysteme die verschiedenen Varianten von Windows von Microsoft (führend bei Systemen mit GUI), BSD inkl. macOS von Apple (am weitesten verbreitetes Desktop-Unix) und GNU/Linux (führend bei Servern). Für spezielle Anwendungen (Beispiel: industrielle Steuerung) werden auch experimentelle Betriebssysteme für Forschungs- und Lehrzwecke eingesetzt.

Neben den klassischen Varianten gibt es noch spezielle Betriebssysteme für verteilte Systeme, bei denen zwischen dem logischen System und den physischen System(en) unterschieden wird. Der logische Rechner besteht aus mehreren physischen Rechnereinheiten. Viele Großrechner, Number-Cruncher und die Systeme aus dem Hause Cray arbeiten nach diesem Prinzip. Eines der bekanntesten Betriebssysteme im Bereich verteilte Systeme ist Amoeba.

Aufgaben

Zu den Aufgaben eines Betriebssystems gehören meist:

  • Speicherverwaltung
    • Verwaltung der Systemressource Hauptspeicher.
    • Protokollierung der Speichernutzung.
    • Reservierung und Freigabe von Speicher.
  • (Prozess)-Verwaltung
    • Überwachung der Speicherzugriffe und gegebenenfalls Beenden von Prozessen bei einer Schutzverletzung.
    • Erzeugung neuer Prozesse (entweder auf Anforderung des Betriebssystems oder auf Aufforderung anderer schon existierender Prozesse) und Reservierung des von den Prozessen benötigten Speichers.
    • Kommunikation und Synchronisation von Prozessen untereinander (Interprozesskommunikation)
  • Geräte- und Dateiverwaltung
    • Effiziente Zuweisung von Ein-/Ausgabegeräten und Vermittlungseinheiten (Datenkanäle, Steuereinheiten), Vermeidung von Konflikten
    • Initiierung, Überwachung der Ausführung, Terminierung von Ein-/Ausgabevorgängen.
    • Verwaltung des Dateisystems. Erzeugung eines Namensraums mit zugehörigen Speicherobjekten und gegebenenfalls weiteren Objekten.
  • Rechteverwaltung
    • Voneinander unabhängige Benutzer/Programme dürfen sich gegenseitig nicht stören.
  • Abstraktion
    • Verbergen der Komplexität der Maschine vor dem Anwender
    • Abstraktion des Maschinenbegriffes (nach Coy):
      • Reale Maschine = Zentraleinheit + Geräte (Hardware)
      • Abstrakte Maschine = Reale Maschine + Betriebssystem
      • Benutzermaschine = Abstrakte Maschine + Anwendungsprogramm

Als Gerät aus der Sicht eines Betriebssystems bezeichnet man aus historischen Gründen alles, was über Ein-/Ausgabekanäle angesprochen wird. Dies sind nicht nur Geräte im herkömmlichen Sinn, sondern mittlerweile auch interne Erweiterungen wie Grafikkarten, Netzwerkkarten und anderes. Die (Unter-)Programme zur Initialisierung und Ansteuerung dieser „Geräte“ bezeichnet man zusammenfassend als Gerätetreiber.

Betriebsmittelverwaltung und Abstraktion

Als Betriebsmittel oder Ressourcen bezeichnet man alle von der Hardware eines Computers zur Verfügung gestellten Komponenten, also den Prozessor (bei Mehrprozessorsystemen die Prozessoren), den physischen Speicher und alle Geräte wie Festplatten-, Disketten- und CD-ROM-Laufwerke, Netzwerk- und Schnittstellenadapter und andere. Die Hardware Compatibility List enthält alle Hardware-Produkte, die im Zusammenhang mit einem bestimmten Betriebssystem auf ihre Funktionalität hin getestet wurden.

Einführendes Beispiel: Zeitgeberbausteine

Moderne Rechnersysteme besitzen Zeitgeberbausteine (Timer). In frühen PCs wurde z. B. der Baustein 8284 des Unternehmens Intel eingesetzt. Dieser Baustein muss zunächst initialisiert werden. Er kann dann nach Ablauf einer Zeitspanne oder periodisch den Prozessor unterbrechen und ihn zur Abarbeitung einer eigenen Routine veranlassen. Neben der Initialisierung ist eine Unterbrechungsroutine zu erstellen, deren Aufruf in einer dafür geeigneten Sprache (meist Assembler) programmiert werden muss. Da Unterbrechungen asynchron auftreten, sind komplexe Verhältnisse hinsichtlich der Datenstrukturen zu berücksichtigen. Genaue Kenntnisse des Bausteins (Datenblatt), der Computerhardware (Unterbrechungsbehandlung) und des Prozessors sind erforderlich. Die einzelnen Komponenten, die an diesem Prozess beteiligt sind, fasst man unter dem Begriff Rechnerarchitektur zusammen.

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, zum Beispiel 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

So wie Prozessoren und Zeitgeber virtualisiert werden, ist dies auch für alle anderen Betriebsmittel möglich. Dabei werden einige Abstraktionen teilweise nur als Software implementiert, andere erfordern spezielle Hardware.

Dateisysteme

Über Dateisysteme werden die Details der externen Speichersysteme (Festplatten-, Disketten- oder CD-ROM-Laufwerke) 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 auch Arbeitsspeicher genannt und vom Betriebssystem in Blöcke (Kacheln) aufgeteilt, die den geladenen Programmen auf Anforderung zur Verfügung gestellt werden. Meist wird der Speicher initialisiert, das bedeutet, dass dabei allenfalls noch vorhandene Daten zuvor gelöscht werden. Über virtuellen Speicher wird bei vielen Systemen jedem Programm ein kontinuierlicher (zusammenhängender) Bereich zur Verfügung gestellt. Die Virtuelle Speicherverwaltung erlaubt einen flexiblen Ansatz, bei dem der reale physisch vorhandene Speicher weder zusammenhängend sein muss (Segmentierung), noch muss er in Summe real wirklich so groß sein, wie es aus Sicht der Programme scheint. Stattdessen werden einzelne Speicherblöcke, englisch pages, nach Bedarf zwischen Arbeitsspeicher (RAM) und externem Speicher (z. B. die Auslagerungsdatei) hin und her geschoben (Paging).

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.

Bildschirm

Als Grafische Benutzeroberfläche (GUI, Abk. für engl. Graphical User Interface) wird generell eine Bildschirmausgabe beschrieben, wenn sie über eine Eingabeaufforderung hinausgeht. Mit den richtigen Grafikkarten und Bildschirmen ist die Darstellung von geometrischen Objekten (Linien, Kreisen, Ellipsen, aber auch Schriftattributen und Farben) auf dem Bildschirm möglich, aus denen sich komplexere geometrische Elemente wie Knöpfe, Menüs, Benutzeroberflächen etc. zum einfachen Steuern von Programmen erstellen lassen.

Die Grafikkarte als Hardware ist für den Programmierer und Anwender vollkommen verborgen.

Geschichte

Erste Betriebssysteme (bis 1980)

Die ersten Computer kamen ohne echtes Betriebssystem aus, da lediglich ein einziges Programm im Stapelbetrieb geladen sein konnte und die unterstützte Hardware noch sehr überschaubar war. Der erste Digitalrechner wurde von Charles Babbage (1792–1872) entwickelt. Er sah bereits die Notwendigkeit, seine „Analytische Maschine“ mit Software zu betreiben. Er stellte die Tochter des bekannten Dichters Lord Byron Ada Lovelace ein, um erste Programme zu schreiben. Ada Lovelace gilt als die erste Programmiererin. Charles Babbage gelang es nie, seine „Analytische Maschine“ vernünftig zum Laufen zu bringen. Zahnräder, Gestänge und andere mechanische Teile konnten nicht in der notwendigen Präzision hergestellt werden.[13]

Nach den erfolglosen Versuchen von Charles Babbage wurden wenige Anstrengungen unternommen, ein weiteres Projekt Digitalrechner auf die Beine zu stellen. Erst vor dem Zweiten Weltkrieg wurden Babbages Ideen wieder aufgegriffen. Erste digitale Rechner wurden auf Basis von elektrischen Relais und Röhren realisiert. Zu den ersten Wissenschaftlern gehörten Howard Aiken von der Havard Universität, John von Neumann an der Princeton-Universität, John William Mauchly, John Presper Eckert in Pennsylvania und Konrad Zuse in Berlin. Die ersten Computer wurden von einem Team von Technikern entwickelt, welche für den Entwurf, den Bau, die Programmierung und Wartung solcher Maschinen verantwortlich waren. Programmiersprachen waren unbekannt und die Programme wurden mithilfe von Steckkarten realisiert, auf welchen die Programme mithilfe von elektrischen Drähten programmiert wurden. Da ein Computer nur ein einziges Programm ausführen konnte, waren Betriebssysteme unnötig. Eine Berechnung einer einzigen Aufgabe dauerte Sekunden, und die Ausführung eines Programmes Stunden, aber nur dann wenn die Computer mit Tausenden von Röhren oder Relais einwandfrei funktionierten. In den frühen 1950er Jahren wurden elektrische Drähte durch Lochkarten ersetzt.[14]

Als Betriebssystem-Vorläufer gilt der 1956 in Gestalt des GM-NAA I/O bei General Motors für die IBM 704 erfundene resident monitor, ein Stück Software, das nach Beendigung eines Stapelauftrags den Folgeauftrag automatisch startete. 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]

1961 entstand mit dem Compatible Timesharing System (CTSS) für die IBM 7094 am MIT das erste Betriebssystem für Mehrbenutzerbetrieb. Das ermöglichte die quasi-gleichzeitige Benutzung der Rechenanlage durch mehrere Anwender mittels angeschlossener Terminals.[17] Eine Vielzahl gleichzeitig geladener Programme erforderte es, die von ihnen beanspruchten Speicherbereiche voneinander abzugrenzen. Als Lösung entstand 1956 an der TU Berlin der Virtuelle Speicher[18] und wurde Mitte der 1960er Jahre erstmals in Großrechner-Betriebssystemen umgesetzt.

Damals lieferte meist der Hersteller der Hardware das Betriebssystem, das nur auf einer bestimmten Modellreihe oder sogar nur auf einem bestimmten System lief, sodass Programme weder zwischen verschiedenen Computern, noch über verschiedene Generationen hinweg portierbar waren. Mit der Einführung der Modellreihe System/360 von IBM 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.

Ab 1963 wurde Multics in Zusammenarbeit von MIT, General Electric und den Bell Laboratories (Bell Labs) von AT&T entwickelt, das jedoch erst ab 1969 bis 2000 im Einsatz war. Multics wurde in PL/I programmiert. 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. In den Jahren 1970 bis 1972 wurden mit RSX-15 und RSX-11 frühe Vorläufer des heutigen Windows NT entwickelt. Unix wurde in den Jahren 1972–1974 bis auf wenige Teile in der höheren Programmiersprache C mit dem Ziel der Portabilität neu implementiert, um auf der damals neuen PDP-11 lauffähig zu sein. In weiterer Folge entwickelte sich UNIX zu einer ganzen Familie von Systemen für verschiedene Hardwareplattformen.

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.[19] 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. 1974 erfand Gary Kildall CP/M, das als erstes universelles PC-Betriebssystem gilt. 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.

Für die aufkommende Computergrafik reichten rein textbasierte Benutzerschnittstellen nicht mehr aus. Die 1973 eingeführte Xerox Alto war das erste Computersystem mit einem objektorientierten Betriebssystem[20] und einer grafischen Benutzeroberfläche, was diesen Rechner für Desktop-Publishing geeignet machte und einen großen Fortschritt in Sachen Benutzerfreundlichkeit darstellte.[21]

Meilensteine

Der C64, ein Heimcomputer der 1980er Jahre

[[Hilfe:Cache|Fehler beim Thumbnail-Erstellen]]:
C64C-System mit VC1541-II-Diskettenlaufwerk und 1084S RGB-Monitor (1986)

In den 1980er Jahren wurden Heimcomputer populär. Diese konnten neben nützlichen Aufgaben auch Spiele ausführen. Die Hardware bestand aus einem 8-Bit-Prozessor mit bis zu 64 KiB RAM, einer Tastatur und einem Monitor- bzw. HF-Ausgang. Einer der populärsten dieser Computer war der Commodore C64 mit dem Mikroprozessor 6510 (einer Variante des 6502). Dieser Computer verfügte über einen in einem eigenen 8 KiB-ROM-Baustein befindlichen Systemkern namens Kernal mitsamt einem BIOS (Basic Input/Output System), das die Geräte Bildschirm, Tastatur, serielle IEC-Schnittstelle für Diskettenlaufwerke bzw. Drucker, Kassetteninterface initialisierte und über ein Kanalkonzept teilweise abstrahierte. Über ein separates 8 KiB-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.

Basic-Programm Maschinensprachenprogramm
8k ROM BASIC PRINT#,FOR
8k ROM-BIOS (Gerätetreiber) / Kernal / JSR Maschinensprachenprogramm
Hardware (Prozessor(en), Speicher, Geräte)

Abstraktionsschichten im Betriebssystem des Heimcomputers C64

Die grafische Benutzeroberfläche (GUI) von Apple

[[Hilfe:Cache|Fehler beim Thumbnail-Erstellen]]:
Beispiel für eine grafische Benutzeroberfläche

Xerox entwickelte im Palo Alto Research Center (PARC) das Smalltalk-Entwicklungssystem (Xerox entwickelte mit ALTO (1973) und Star (1981) erste Rechner mit grafischer Benutzeroberfläche). Das Unternehmen Apple bot Xerox an, die Technologie zu kaufen; da PARC aber vor allem ein Forschungszentrum war, bestand kein Interesse an Verkauf und Vermarktung. Nachdem Apple-Chef Steve Jobs Xerox Aktienanteile von Apple anbot, wurde ihm erlaubt, einigen Apple-Entwicklern die Xerox-Demos zu zeigen. Danach war den Apple-Entwicklern auf jeden Fall klar, dass der grafischen Benutzeroberfläche die Zukunft gehörte, und Apple begann, eine eigene grafische Benutzeroberfläche zu entwickeln.

Viele Merkmale und Prinzipien jeder modernen grafischen Benutzeroberfläche für Computer, wie wir sie heute kennen, sind originale Apple-Entwicklungen (Pull-down-Menüs, die Schreibtischmetapher, Drag and Drop, Doppelklicken). Die Behauptung, Apple habe seine GUI von Xerox illegal kopiert, ist ein ständiger Streitpunkt; es existieren jedoch gravierende Unterschiede zwischen einem Alto von Xerox und der Lisa/dem Macintosh.

Der Mac-OS-Nachfolger

Mitte der 1990er Jahre steckte das Unternehmen Apple in einer tiefen Krise; es schien kurz vor dem Ruin. Ein dringliches Problem war dabei, dass Apples Betriebssystem Mac OS als veraltet galt, weshalb sich Apple nach Alternativen umzusehen begann. Nach dem Scheitern des wichtigsten Projektes für ein modernes Betriebssystem mit dem Codenamen Copland sah sich Apple gezwungen, Ausschau nach einem für die eigenen Zwecke verwendbaren Nachfolger zu halten. Zuerst wurde vermutet, dass Apple das Unternehmen Be, mit ihrem auch auf Macs lauffähigen Betriebssystem BeOS, übernehmen würde. Die Übernahmeverhandlungen scheiterten jedoch im November 1996, da der frühere Apple-Manager und Chef von Be Jean-Louis Gassée im Falle einer Übernahme 300 Millionen US-Dollar und einen Sitz im Vorstand verlangte. Da Gil Amelio versprochen hatte, bis zur Macworld Expo im Januar 1997 die zukünftige Strategie zu Mac OS zu verkünden, musste schnell eine Alternative gefunden werden. Überraschend übernahm Apple dann noch im Dezember 1996 für 400 Mio. US-Dollar das Unternehmen NeXT des geschassten Apple-Gründers Steve Jobs mitsamt dem Betriebssystem NeXTStep bzw. OPENSTEP, das Apples Grundlage für die nachfolgende neue Betriebssystem-Generation werden sollte. Unter dem Codenamen Rhapsody wurde es weiterentwickelt zu einem UNIX für Heim- und Bürocomputer mit dem Namen „Mac OS X“; von Version 10.8 (2012) bis 10.11 hieß es einfach „OS X“, seit Version 10.12 (2016) „macOS“. Ab Version 10.5 ist es konform mit der Single UNIX Specification.

Das Betriebssystem OPENSTEP war die erste Implementierung der OpenStep-Spezifikationen, die zusammen mit Sun entwickelt wurden. Deren Entwicklung hatte Einfluss auf Java und somit letztlich auf Android.

Disk Operating System (DOS)

Der Ursprung von DOS liegt in CP/M und wurde 1974 von Digital Research eingesetzt. Die Portierung auf den Motorola 68000, genannt CP/M-68k, selbst kein großer kommerzieller Erfolg, wurde zur Grundlage für TOS, dem Betriebssystem des Atari ST. MS-DOS Version 1.0 erschien 1981 als Nachbildung von CP/M und wurde für IBM-PCs eingesetzt. Es setzt auf das BIOS auf und stellt Dateisystemoperationen zur Verfügung.

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 Unternehmen verzichtet.

Der PC konnte mit seinem Intel-8088-Prozessor (16-Bit-Register) bis zu 1 MiB Speicher adressieren, die ersten Modelle waren jedoch nur mit 64 KiB ausgestattet. Diskettenlaufwerke lösten die alten Kassettenrekorder als Speichermedium ab. Sie erlauben vielfaches Schreiben und Lesen einzeln adressierbarer 512-Byte-Blöcke. Die Benutzung wird durch ein Disk Operating System (DOS) vereinfacht, das ein abstraktes Dateikonzept bereitstellt. Blöcke können zu beliebig großen Clustern (Zuordnungseinheit – kleinste für das Betriebssystem ansprechbare Einheit) zusammengefasst werden. Dateien (logische Informationseinheiten) belegen einen oder mehrere dieser (verketteten) Cluster. Eine Diskette kann viele Dateien enthalten, die über Namen erreichbar sind.

Auf den ersten PCs war kein Speicherschutz realisiert, die Programme konnten daher an DOS vorbei direkt auf BIOS und sogar auf die Hardware zugreifen. Erst spätere PCs wurden mit dem Intel-80286-Prozessor ausgestattet, der Speicherschutz ermöglichte. MS-DOS stellte auch keine für alle Zwecke ausreichende Abstraktion zur Verfügung. Es ließ sich nur ein Programm gleichzeitig starten, die Speicherverwaltung war eher rudimentär. Ein Teil der Hardware wurde nicht unterstützt und musste von Programmen direkt angesprochen werden, was dazu führte, dass beispielsweise für jedes Spiel die Soundkarte neu konfiguriert werden musste. Die Performance einiger Routinen, speziell zur Textausgabe, war verbesserungswürdig. Viele Programme setzten sich daher über das Betriebssystem hinweg und schrieben z. B. direkt in den Bildschirmspeicher. MS-DOS wurde mit einem Satz von Programmen (sogenannten Werkzeugen) und einem Kommandointerpreter (COMMAND.COM) ausgeliefert.

Anwenderprogramm (COMMAND.COM, WORDSTAR)
MSDOS (Dateisystem) INT Anwenderprogramm (COMMAND.COM, WORDSTAR)
BIOS (Gerätetreiber) INT Anwenderprogramm (COMMAND.COM, WORDSTAR)
Hardware (Prozessor(en), Speicher, Geräte)

Abstraktionsschichten eines PC unter DOS

Windows

1983 begann das Unternehmen Microsoft mit der Entwicklung einer grafischen Betriebssystem-Erweiterung („Grafik-Aufsatz“) für MS-DOS namens Windows. Das MS-DOS und BIOS-Design der PCs erlaubten keine Weiterentwicklung in Richtung moderner Serverbetriebssysteme. Microsoft begann Anfang der 1990er ein solches Betriebssystem zu entwickeln, das zunächst als Weiterentwicklung von OS/2 geplant war (an dessen Entwicklung Microsoft zwischen 1987 und 1991 beteiligt war): Windows NT 3.1 (Juli 1993). Für den Consumer-Markt brachte Microsoft am 15. August 1995 Windows 95 heraus; es setzt auf MS-DOS auf. Dieser „Consumer-Zweig“, zusammengefasst Windows 9x, wurde mit der Veröffentlichung von Windows Me (August/September 2000) abgeschlossen.

Aufbau von Windows NT: Über die Hardware wurde eine Abstraktionsschicht, der Hardware Abstraction Layer (HAL) gelegt, auf den der Kernel aufsetzte. Verschiedene Gerätetreiber waren als Kernelmodule ausgeführt und liefen wie der Kernel im privilegierten Kernel Mode. Sie stellten Möglichkeiten der E/A-Verwaltung, Dateisystem, Netzwerk, Sicherheitsmechanismen, virtuellen Speicher usw. zur Verfügung. Systemdienste (System Services) ergänzten das Konzept; wie ihre Unix-Pendants, die daemons, waren sie in Form von Prozessen im User-Mode ausgeführt.

OS/2-
Programme
Win32-Anwendungen DOS-
Programme
Win16-
Programme
POSIX-
Programme
User Mode
Win32-Anwendungen Andere DLLs DOS-
System
Windows on
Windows
OS/2-
Subsystem
Win32 Subsystem (kernel32.dll, user32.dll, gdi32.dll) Win32 Subsystem (kernel32.dll, user32.dll, gdi32.dll) Win32 Subsystem (kernel32.dll, user32.dll, gdi32.dll) POSIX-
Subsystem
Systemdienste Kernel Mode
Ein-/Ausgabe-Manager (Dateisystem, Netzwerk) Objektmanager/Security Resource Manager/Processmanager
Local Procedure Call Manager/Virtual Memory Manager

Mikrokernel
Window-Manager
Gerätetreiber Hardware-Abstraktions-Schicht (HAL) Grafiktreiber
Hardware (Prozessor(en), Speicher, Geräte)

Abstraktionsschichten unter Windows NT (etwas vereinfacht)

Über sogenannte Personalities wurden dann die Schnittstellen bestehender Systeme nachgebildet, zunächst für Microsofts eigenes, neues Win32-System, aber auch für OS/2 (ohne Grafik) und POSIX.1, also einer Norm, die eigentlich Unix-Systeme vereinheitlichen sollte. Personalities liefen wie Anwenderprogramme im unprivilegierten User-Mode. Das DOS-Subsystem war in Form von Prozessen implementiert, die jeweils einen kompletten PC mit MS-DOS als virtuelle Maschine darstellten; darauf konnte mit einer besonderen Version von Windows 3.1, dem Windows-on-Windows, auch Win16-Programme ausgeführt werden. Windows-on-Windows blendete dazu die Fenster der Win16-Programme in das Win32-Subsystem ein, das die Grafikausgabe verwaltete. Das System erlaubte daher die Ausführung von Programmen sowohl für MS-DOS wie für die älteren Windows-Betriebssysteme, allerdings unter vollkommener Kontrolle des Betriebssystems. Dies galt aber nur für die Implementierung für Intel-80386-Prozessoren und deren Nachfolger.

Programme, die direkt auf die Hardware zugreifen, blieben aber außen vor. Insbesondere viele Spiele konnten daher nicht unter Windows NT ausgeführt werden, zumindest bis zur Vorstellung von WinG, das später in DirectX umbenannt wurde. Ohne die Möglichkeit eines direkten Zugriffs auf die Grafikhardware bzw. -treiber war die Programmierung von leistungsfähigen Actionspielen zunächst auf die älteren Windows-Versionen beschränkt.

Windows NT erschien in den Versionen 3.1, 3.5, 3.51 und 4.0. Windows 2000 stellte eine Weiterentwicklung von Windows NT dar. Auch Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2012, Windows 8/8.1 und Windows 10 bauen auf der Struktur von Windows NT auf.

Linux (GNU/Linux)

Datei:Linus Torvalds.jpeg
Linus Torvalds, Entwickler von Linux

1991 begann Linus Torvalds in Helsinki/Finnland mit der Entwicklung des Linux-Kernels, den er bald danach der Öffentlichkeit zur Verfügung stellte.

Es läuft als portables Betriebssystem auf verschiedenen Rechnerarchitekturen, wurde aber zunächst für PCs mit Intel-80386-Prozessor entwickelt. Das in diesen Rechnern verwendete BIOS dient nur noch zum Initialisieren der Hardware und zum Starten des Bootloaders, da die Routinen des BIOS für Multitaskingsysteme wie Linux ungeeignet sind. Dies kommt zustande, da insbesondere der Prozessor durch Warten belastet wird anstatt durch eine – in der Hardware durchaus vorhandene – geschickte Unterbrechungsverwaltung (interrupt handling) auf Ereignisse (events) 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 Systemaufrufe auf die Gerätetreiber und das Betriebssystem zugreifen.

Die Prozesse laufen im Benutzermodus (user mode), während der Kernel im Kernel-Modus (kernel mode) arbeitet. Die Privilegien im Benutzermodus sind sehr eingeschränkt. Ein direkter Zugriff wird nur sehr selten und unter genau kontrollierten Bedingungen gestattet. Dies hat den Vorteil, dass kein Programm z. B. durch einen Fehler das System zum Absturz bringen kann.

Linux stellt wie sein Vorbild Unix eine vollständige Abstraktion und Virtualisierung für nahezu alle Betriebsmittel bereit (z. B. virtueller Speicher, Illusion eines eigenen Prozessors).

Anwenderprogramme (z.B. Textverarbeitung, Tabellenkalkulation oder Browser) User Mode
Complex Libraries (GLib, GTK+, Qt, SDL, EFL) Anwenderprogramme
Complex Libraries (GLib, kde) Simple Libraries sin, opendbm Anwenderprogramme
C-Standard-Bibliothek: glibc open, exec, sbrk, socket, fopen, calloc
Systemaufrufe TRAP, CALL, BRK, INT (je nach Hardware) Kernel Mode
Kernel (Gerätetreiber, Prozesse, Netzwerk, Dateisystem)
Hardware (Prozessor(en), Speicher, Geräte)

Fast vollständige Abstraktion unter Linux

Verbreitung

Das Unternehmen StatCounter analysiert die Verbreitung von Endanwender-Betriebssystemen anhand von Zugriffsstatistiken diverser Websites. Sehr viele Jahre war Windows an der Spitze, bis es laut StatCounter 2017 von Android überholt wurde.[22]

Die laut StatCounter am weitesten verbreiteten Endanwender-Betriebssysteme sind:[23]

2017 2018
1. Android 31,76 % Datei:Pfeil rechts oben.svg 38,97 %
2. Windows 43,82 % Datei:Pfeil rechts unten.svg 37,07 %
3. iOS 11,71 % Datei:Pfeil rechts oben.svg 13,18 %
4. macOS 5,09 % Datei:Pfeil rechts oben.svg 5,24 %
5. Linux 0,94 % Datei:Pfeil rechts unten.svg 0,76 %
nicht identifizierte B. 3,64 % Datei:Pfeil rechts unten.svg 2,72 %
andere Betriebssysteme 3,03 % Datei:Pfeil rechts unten.svg 2,06 %


Siehe auch

Literatur

  • Albrecht Achilles: Betriebssysteme. Eine kompakte Einführung mit Linux. Springer: Berlin, Heidelberg, 2006. ISBN 978-3-540-23805-8.
  • 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-3-8348-1418-0.
  • Eduard Glatz: Betriebssysteme. Grundlagen, Konzepte, Systemprogrammierung. 1. Auflage. dpunkt: Heidelberg, 2006. ISBN 3-89864-355-7.
  • Sibsankar Haldar, Alex A. Aravind: Operating Systems. Delhi (u. a.): Pearson Education, 2009. ISBN 978-81-317-1548-2.
  • 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-3-658-06217-0.
  • 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-86894-270-5.
    • Ältere zitierte Ausgabe: Andrew S. Tanenbaum: Moderne Betriebssysteme. 3., aktualisierte Auflage, Pearson Studium, 2009.
    • Englische Originalausgabe: Modern Operating Systems. 4th Edition, Pearson, 2016.

Weblinks

Commons: Betriebssystem – Sammlung von Bildern, Videos und Audiodateien
Wiktionary: Betriebssystem – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Einzelnachweise

  1. Berechnung nach https://de.statista.com/ - abgerufen am 2. Februar 2020
  2. Andrew S. Tanenbaum: Moderne Betriebssysteme. Pearson Studium, 3., aktualisierte Auflage, ISBN 978-3-8273-7342-7
  3. Andrew S. Tanenbaum: Moderne Betriebssysteme. 3., aktualisierte Aufl., Pearson, 2009, S. 33.
  4. a b Helmut Herold, Bruno Lurz, Jürgen Wohlrab, Matthias Hopf: Grundlagen der Informatik. 3., aktualisierte Auflage, Pearson, 2017, S. 438.
  5. Andrew S. Tanenbaum: Moderne Betriebssysteme. 3., aktualisierte Aufl., Pearson, 2009, S. 34.
  6. Andrew S. Tanenbaum: Moderne Betriebssysteme. 3., aktualisierte Aufl., Pearson, 2009, S. 35–36.
  7. Peter Mandl: Grundkurs Betriebssysteme. 4. Aufl., Springer, 2014, S. 2.
  8. Zitiert nach Uwe Baumgarten, Hans-Jürgen Siegert: Betriebssysteme. Eine Einführung. 6., überarbeitete, aktualisierte und erweiterte Auflage, Oldenbourg Verlag: München, Wien, 2007, S. 3.
  9. Tanenbaum: Moderne Betriebssysteme. 3. Aufl. 2009, S. 79.
  10. Anthony Ralston, Edwin D. Reilly: Encyclopaedia of Computer Science. New York: Van Nostrand Reinhold, 3. Auflage 1993, S. 1290. Englisches Originalzitat: „Besides managing the hardware resources […], modern operating systems also provide numerous services, such as inter-process communication, file and directory systems, data transfer over networks, and a command language“.
  11. Volker Claus, Andreas Schwill: Duden Informatik A-Z. Fachlexikon für Studium, Ausbildung und Beruf. Mannheim: Bibliographisches Institut & F. A. Brockhaus, 4. Aufl., 2006, ISBN 3-411-05234-1.
  12. ABl. L 151 vom 7. Juni 2019
  13. Andrew S. Tanenbaum: Moderne Betriebssysteme, Pearson Studium,2002, ISBN 3-8273-7019-1, Seite 18
  14. Andrew S. Tanenbaum: Moderne Betriebssysteme, Pearson Studium,2002, ISBN 3-8273-7019-1, Seite 18
  15. SOS Reference Manual, 1959.
  16. Jack Harper, IBM 7090/94 IBSYS Operating System, 2001.
  17. Fernando J. Corbató, Marjorie Merwin Daggett, Robert C. Daley: An Experimental Time-Sharing System, 1962.
  18. E. Jessen: Origin of the Virtual Memory Concept. IEEE Annals of the History of Computing. Band 26. 4/2004, S. 71 ff.
  19. Computer Classics, Jörg und Kerstin Allner, Data Becker Verlag, ISBN 3-8158-2339-0, S. 27
  20. blinkenlights.com, abgerufen am 23. Oktober 2017
  21. Zenon W. Pylyshyn, Liam Bannon: Perspectives on the Computer Revolution. Intellect Books, Januar 1989, ISBN 978-0-89391-369-4, S. 262, 263 etc. Vergleich Alto und Star mit detaillierten Spezifikationen.
  22. Android verdrängt Windows vom ersten Platz der Marktanteile. Pro-Linux, 4. April 2017, abgerufen am 4. April 2017.
  23. Operating System Market Share Worldwide. StatCounter, 5. September 2018, abgerufen am 5. September 2018.