1890-1950 - Systemeigener Betrieb Die allerersten Computer hatten das Äquivalent zu dem, was ein Betriebssystem jetzt in sie eingebaut hat. Sie (der Operator) waren auch Teil des Betriebssystems. Sie haben die Registerschalter umgelegt (oder eine Lochkarte verwendet) und die Busleitungen physisch vertauscht (denken Sie an die altmodische Telefonzentrale), und der Speicher wurde (über physische Leitungen) direkt mit der Glühbirne (dem Monitor des Tages) und den Druckern verbunden ( Langzeitspeicher), so dass die Programmausgabe aufleuchtet und direkt auf das Gerät gedruckt wird, wenn es in den Ausgabespeicherpuffer gestellt wird. Für diese Dinge wurde kein Treiber benötigt, weil sie (aufgrund der Art und Weise, wie diese physischen Kabel verlegt wurden) einfach funktionierten (es gab heutzutage auch keinen Monitor). Tatsächlich würde es noch einige Jahrzehnte dauern Bis eine digitale numerische Anzeige erfunden wurde, damit Sie die Zahlen, die Sie bereits in das Register eingegeben hatten, und die Ausgabe tatsächlich als Dezimalzahlen sehen konnten, beherrschten die Drucker diese gesamte Ära bis zu den Monitoren Mit dem Wechsel von mechanisch (1890er Jahre) zu elektrisch analog (1910er Jahre) zu digital (1930er Jahre) änderte sich an dieser Stelle nicht wirklich viel. Diese Plug-N-Play-Architektur wurde in dieser Zeit durch das Interrupt-System ersetzt erst in den späten neunzigern wieder auftauchen, dann natürlich viel weniger einstecken, da die geräte mit interrupts CPU-zeit in anspruch nehmen durften, was architekturen ermöglichte, die nicht direkt an hardware gebunden waren, aber dafür mehrere generationen brauchten um wirklich der optimierte Prozess zu sein, den wir in x86 arch (und neuer) sehen; Frühe Systeme hatten oft schreckliche Rennbedingungen, Hardwarekompatibilitäts- und Verzögerungsprobleme und andere merkwürdige Verhaltensweisen bei Interrupts. Weil jede Maschine in dieser Zeit völlig andere (experimentelle) Architekturen benutzte; Fast alle Geräte wurden speziell für die Maschine angefertigt, an der sie gearbeitet haben.
1950-1973 - Betrieb innerhalb eines Systems In dieser Ära tauchten die meisten Funktionen auf, an die wir denken, wenn wir über ein echtes Betriebssystem sprechen. Debugging, Programmiersprachen, Mehrbenutzer, Multitasking, Terminals, Plattenlaufwerke, Netzwerke, Standardisierung von Komponenten usw. wurden in dieser Ära eingeführt. Diesmal war ein großer Fortschritt in Richtung Standardisierung zu verzeichnen, was bedeutete, dass wir mehr standardisierte Geräte hatten, aber dennoch jedes Betriebssystem von Hand für jede Maschine hergestellt wurde, was bedeutete, dass die Betriebssystemfunktionalität von den Ingenieuren, die das jeweilige System entworfen hatten, stark eingeschränkt wurde . Während dieser Zeit gab es eine beträchtliche Grauzone in einem Betriebssystem, da die verschiedenen Architekturen die Dinge sehr unterschiedlich handhaben und ein Mehrzweckcomputer viel mehr Betriebssystem benötigt als ein Computer, der Hardware enthält, um dieselben Jobs zu handhaben. Tatsache ist, dass Hardware immer schneller sein wird als Software, und praktisch alles, was in Software gemacht wird, kann theoretisch in Hardware gemacht werden (es ist Kosten \ Flexibilität \ Größe \ Zeit \ usw., die uns davon abhält, fast reine Hardwareversionen von allem zu erstellen) Tag). Ein Betriebssystem wurde für einen bestimmten Computer oder Computertyp erstellt. es würde anderswo nicht funktionieren. Für jedes neue Computerdesign musste die gesamte Betriebssystemsoftware von Grund auf neu geschrieben werden, um mit einem bestimmten Maschinenmodell zu arbeiten. Gegen Ende dieser Zeit erschien ein neues Betriebssystem, das dieses Paradigma bald ändern würde, UNIX, das von Ken Thompson und Dennis Ritchie in den Bell Labs geschrieben wurde.
1973 - Betrieb zwischen Systemen Ein einziges Programm hat dies alles geändert, aber es war nicht UNIX. Es war der C-Compiler (der von Ken Thompson und Dennis Ritchie in einer Garage hergestellt wurde, nachdem Bell Labs ihn geschnitten hatte). Bis zu diesem Zeitpunkt war es zu jedem Zeitpunkt, an dem Sie Code geschrieben haben, entweder Maschinencode (Code, den die Maschine direkt versteht, aber nicht portabel ist) oder er wurde in einer Sprache geschrieben, die Ihren Code in Byte-Code kompilierte (Code, der von einem anderen Programm als solcher interpretiert wird) läuft). Der große Unterschied für Betriebssysteme, den C mit sich brachte, war die Fähigkeit, das, was als Cross-Compilieren in Maschinencode bezeichnet wird, auszuführen. Dies bedeutete, dass Code einmal geschrieben und kompiliert werden konnte, um von Haus aus auf vielen verschiedenen Maschinentypen ausgeführt zu werden, solange ein Compiler für diese Maschine geschrieben worden war. Betriebssysteme müssen im Maschinencode geschrieben werden, da der Maschinencode buchstäblich der einzige Code ist, den die Maschine kennt.
Ich würde sagen, erst als Ken und Dennis den UNIX-Kernel mit einem C-Compiler kompilierten, wurde ein echtes Betriebssystem im modernen Sinne geboren. Davor war ein Betriebssystem entweder ein physisches Objekt oder einfach ein vorinitialisierter Speicherbereich, der speziell für eine bestimmte Maschine entwickelt wurde. Das Hinzufügen neuer Geräte zum System erforderte buchstäblich, dass der 'Kernel'-Code neu geschrieben wurde. Nun konnte das UNIX-Betriebssystem, das sie für eine bestimmte Maschine entworfen hatten, neu kompiliert und auf anderen Maschinen ausgeführt werden, ohne ALLES neu zu schreiben (solange diese Maschine einen C-Compiler aus einer Bootstrap-Umgebung kompilieren konnte, konnte der Rest des Betriebssystems geschrieben werden der relativ hohe C-Code).