Welche Konzepte wurden vor Betriebssystemen verwendet, um sie funktionsfähig zu machen? [geschlossen]

50

Die Betriebssysteme sind eng mit der Computerarchitektur verbunden. Ein Betriebssystem kümmert sich um alle Ein- und Ausgaben in einem Computersystem. Es verwaltet Benutzer, Prozesse, Speicherverwaltung, Drucken, Telekommunikation, Vernetzung usw. Es sendet Daten an eine Festplatte, den Drucker, den Bildschirm und andere an den Computer angeschlossene Peripheriegeräte.

Vor der Einführung des Betriebssystems

Was wurde in Computersystemen verwendet, um sie zum Laufen zu bringen?

Welches Konzept wurde für das Betriebssystem in unserer Computerentwicklung verwendet?

Itachi Uchiha
quelle
5
"Vorher, was wurde in Computersystemen verwendet ..." - Es war das gleiche, als hätten Sie heute kein Betriebssystem ausgeführt. Sie laufen Stapel Aufträge, indem Sie das gesamte Computersystem nacheinander an einen einzelnen Benutzer übergeben.
sawdust
4
Stellen Sie sich Code vor, der auf einem Mikrocontroller ausgeführt wird. Es kann nicht unter einem Betriebssystem ausgeführt werden, aber es ist C-Code, der bis zum Maschinencode kompiliert wird und auf einem realen physischen Gerät ausgeführt wird (nachdem dieser Maschinencode auf die Firmware "geflasht" wurde). Betriebssysteme erleichtern nur mit mehrere Programme interagieren bei der gleiche Zeit mit allen Teilen des Computers unter Verwendung der Konzepte von gemeinsame Nutzung von Ressourcen und Prozessplanung . Ebenso kannst du auch Verwenden Sie ein Betriebssystem auf diesem kleinen Mikrocontroller - wenn du es brauchst.
Breakthrough
Viele der Antworten konzentrieren sich auf E / A, den Ladevorgang von Programmen und Peripheriegeräten. Dies verschleiert jedoch nur den Zweck des Betriebssystems: Ressourcenverwaltung und -freigabe und möglicherweise Mehrbenutzerfähigkeit. Der Zweck des Betriebssystems ändert sich nicht, wenn Sie Code von einer Platine, einem Lochstreifen oder einer Trommel laden oder eine moderne SD-Karte verwenden.
sawdust
Kartendeck. Lochstreifen. Bediener, um dasselbe durch Computer einzuziehen.
Daniel R Hicks

Antworten:

42

Frühe Computer Es wurde jeweils ein Programm ausgeführt.

Programme wurden direkt von (z. B.) Papierbändern geladen, in die Löcher gestanzt waren.

Sie würden die frühesten Computer programmieren durch Einstellen einer großen Anzahl von Ein-Aus-Schaltern.

Koloss:

Atlas:

Manchester:


Ich verwende das Wort "Computer", um die Art von Gerät zu bezeichnen, die heutzutage in Milliardenhöhe existiert. Von dieser großen Anzahl von Computern sind bis auf eine unbedeutend kleine Anzahl digitale, elektronisch programmierbare Computer mit gespeicherten Programmen. Ich bin sicher, die ursprüngliche Frage ist nicht, wie Menschen mit der Berufsbezeichnung "Computer" ihren Arbeitstag verbracht haben. Zwischen diesen beiden Computertypen gibt es eine Reihe interessanter Geräte, die in dieser Antwort nicht behandelt werden.

RedGrittyBrick
quelle
1
Ich habe Hardware, mit der ich arbeite und die diese Schalter im zweiten Bild verwendet. Ebenso werden Programme ausgeführt. Upvote für die Verwendung eines so tollen Bildes
Ramhound
würden nicht die frühesten ENIAC sagen, fest verdrahtet? Weder geschaltet noch Programme gespeichert? Oder ist das aus diesem Grund kein Computer mehr ... neugierig
Rich Homolka
1
@RichHomolka: Wie du andeutest, hängt es wirklich davon ab, was du als Computer betrachtest. Die meisten Leute meinen heutzutage wahrscheinlich einen digitalen, elektronisch programmierbaren Computer. Natürlich gab es zum Beispiel mechanische analoge Computer und die frühesten Computer waren Menschen (es war eine Berufsbezeichnung). Wenn ich Zeit habe, kann ich die Antwort erweitern, um dies zu beheben. Ich glaube, ENIAC wurde durch die Manipulation von Schaltern und Kabeln programmiert.
RedGrittyBrick
Betriebssysteme kamen relativ früh (1956 - siehe en.wikipedia.org/wiki/GM-NAA_I/O ). Der erste in Serie produzierte Computer war ungefähr 1954
Bruce Martin
"Ich bin sicher, die ursprüngliche Frage ist nicht, wie Menschen mit der Berufsbezeichnung" Computer "ihren Arbeitstag verbracht haben" - meine Großmutter war ein Computer.
Paul D. Waite
13

Quelle: Geschichte der Betriebssysteme

Betriebssysteme haben sich in mehreren Phasen oder Generationen entwickelt, die in etwa den Jahrzehnten entsprechen.

Die 1940er Jahre - Erste Generationen

Die frühesten elektronischen Digitalcomputer hatten keine Betriebssysteme. Maschinen dieser Zeit waren so primitiv, dass Programme oft waren   ein Bit auf einmal auf Reihen von mechanischen Schaltern (Stecker   Bretter) . Programmiersprachen waren unbekannt (nicht einmal Assembler)   Sprachen). Betriebssysteme waren unbekannt.

Die 1950er Jahre - Zweite Generation

In den frühen 1950er Jahren hatte sich die Routine mit der etwas verbessert   Einführung von Lochkarten. Das Allgemeine Motorenforschung   Laboratories implementierten die ersten Betriebssysteme in den frühen 1950er Jahren   für ihre IBM 701 . Das System der 50er lief in der Regel einen Job nach dem anderen   Zeit. Diese wurden deshalb als Single-Stream-Batch-Verarbeitungssysteme bezeichnet   Programme und Daten wurden in Gruppen oder Chargen eingereicht.

Quelle: http://en.wikipedia.org/wiki/History_of_operating_systems

Die frühesten Computer waren Großrechner ohne Betriebssystem.

Jeder Benutzer hatte für einen festgelegten Zeitraum die alleinige Nutzung der Maschine und erreichte den Computer mit häufig eingeschalteten Programmen und Daten   Lochkarten und Magnet- oder Papierbänder. Das Programm wäre   geladen in die Maschine, und die Maschine würde eingestellt, um zu arbeiten, bis   Das Programm ist beendet oder abgestürzt.

Programme können im Allgemeinen über ein Bedienfeld mit Toggle debuggt werden   Schalter und Kontrollleuchten. Es wird gesagt, dass Alan Turing ein Meister von war   dies auf der frühen Manchester Mark 1-Maschine, und er war bereits   Ableiten der primitiven Konzeption eines Betriebssystems aus der   Prinzipien der Universal Turing Maschine.

DavidPostill
quelle
10

Zurück zum Start von Computersystemen, bei denen es keine einzelnen Computersysteme gab, sondern Mainframes.

enter image description here

Diese Großrechner liefen auf Lochkarten, die Ihr Programm (und häufig Ihre Daten) enthielten. Die Leute bekamen Zeit für diese Systeme, nahmen ihre Karten mit und steckten sie in die Maschinen, damit sie sie verarbeiten konnten. Die Maschine würde das Programm ausführen, bis es beendet ist, und dann würde der nächste Benutzer mit seinem Band und seinen Karten kommen.

Im Grunde hat es so funktioniert.

Matthew Williams
quelle
4
Das "Betriebssystem" hier ist also ... wer erledigt die Planung für die Benutzer?
Kyle Strand
2
Mein Punkt ist, dass Ihre Antwort nicht wirklich erklärt, was Sie mit "Genau genommen gibt es Betriebssysteme in der einen oder anderen Form schon sehr lange" meinen. Sie geben eine grundlegende Beschreibung von Mainframes an, aber es ist überhaupt nicht klar, dass diese Mainframes in der Ferne etwas hatten, das dem entspricht, was wir als "Betriebssysteme" bezeichnen.
Kyle Strand
3
Ich weiß, was Sie sagen wollen, aber ich bin mit dieser Beschreibung nicht sonderlich zufrieden. Ich bin alt genug, um an Großrechnern gearbeitet zu haben, die Ihrer genauen Beschreibung eines Großrechners oben entsprechen, die aber tatsächlich ein Betriebssystem enthielten. Der Mainframe in Ihrem Bild ist wahrscheinlich ein IBM-Mainframe aus den 1970er Jahren (ein s / 360 oder s / 370?), Auf dem OS / 360 oder eine frühe Version von MVS ausgeführt wird.
Rob Moir
2
So etwas gibt es nicht "gestanzte Magnetkarten" . Ihr Foto eines "Großrechners" entspricht der Vision von Hollywood und Laien von einem Computer: Reihen von Magnetbandtransporten.
sawdust
1
Hier einige Fehlaussagen. Wie @sawdust sagte, waren Lochkarten nicht magnetisch. Außerdem enthielten Lochkarten häufig Ihr Programm und deine Daten; oder Ihr Programm befindet sich möglicherweise auf Papier (Lochstreifen). Mag Bandspulen waren viel später. Zuvor wurden Programme über Bedienfeldschalter geladen, wie in RedGrittyBricks Antwort gezeigt, oder indem der Computer über eine Steckdose neu verkabelt wurde. ich fand Vater, Sohn & amp; Co. interessante und informative Geschichte.
Stephen P
6

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).

krowe
quelle
1
Jemand erwähnte, dass OS \ 360 vor UNIX kam. Dies gilt auch, aber wie alle anderen Betriebssysteme dieses Tages wurde es für jedes einzelne Maschinenmodell, auf dem es lief, von Hand codiert.
krowe
1
Jemand erwähnte, dass FORTRAN auch Cross-Compiler sein kann. Das stimmt, genau wie ALGOL (der Vorgänger von C), aber C war der erste, der gebootet wurde, um ein maschinenunabhängiges Betriebssystem zu erstellen.
krowe
1
" Bis Ken und Dennis zum ersten Mal den UNIX-Kernel kompilierten ... dass ein echtes Betriebssystem im modernen Sinne geboren wurde .. "OMG. Auf dieser Website wurden selten weniger zutreffende Wörter geschrieben. Es gibt keinen Sinn, in dem diese Aussage im Entferntesten zutreffend ist.
RBarryYoung
1
ignoriert auch MULTICS (und BCPL)
Francis Davey
Die meisten der oben aufgeführten Punkte bezüglich der Vorrangstellung von UNIX und C sind falsch. Warum UNIX und C waren in der Geschichte der Betriebssysteme so wichtig. Dies war fast ausschließlich auf das Zustimmungsdekret von 1974 gegen AT & amp; T zurückzuführen, was bedeutete, dass dies (und viele andere AT & amp; T-Technologien) der Fall waren kostenlos , einschließlich des Quellcodes . Aus diesem Grund sind es echte "Firsts" wie die Ersten kostenlos voll funktionsfähiges modernes Betriebssystem und Low-Level-Compiler, einschließlich des gesamten Quellcodes. Eine Einzelposition, die es für 10-20 Jahre einnehmen würde, bevor seine Konkurrenten den Vorteil, der es gab, ehrlich zugeben würden.
RBarryYoung
3

Am Anfang waren die Programme fest in den Computer eingebunden, der das Programm beim Booten sofort von einem bestimmten Ort aus ausführte.

Dann wurden verschiedene Formen der Offline-Speicherung erfunden: Lochkarten, Bänder, Trommeln, sogar Platten. Viel flexibler. Aber nicht direkt von der CPU aus erreichbar. Das Programm muss in den Speicher geladen werden, bevor es ausgeführt werden kann. Sie schreiben also ein Programm, um Ihr Programm zu laden. Dies ist bekannt als Lader , oder Bootstrap (Aus dem Ausdruck "sich an den Bootstraps hochziehen").

Wenn das System komplizierter wird, kann es sein, dass ein einfacher Lader einen komplexeren Lader lädt. Dies begann mit Mikrocomputern: Der normale Bandlader war langsam, also laden Sie einen Dekomprimierer und laden Sie den Rest des Bandes schnell. Oder Festplatten-Speedloader, die als Kopierschutzsysteme fungierten, indem sie nicht standardmäßige Aufgaben mit der Festplatte erledigten.

Oder der Pre-UEFI-PC-Startvorgang: Der Prozessor wird im BIOS ausgeführt. Dies lädt den ersten Sektor von der Platte und springt dorthin. Das sucht nach einer aktiven Partition und lädt von dort einen Bootloader, der das Betriebssystem lädt. Ursprünglich wäre das COMMAND.COM für MSDOS gewesen; jetzt ist es normalerweise NTLDR.EXE für Windows.

pjc50
quelle
3

Es sollte beachtet werden, dass in der frühen Hardware (vor 1960) die Ein- / Ausgabe viel einfacher war. Sie konnten eine Karte lesen oder eine Karte lochen oder eine Zeile auf dem Drucker drucken, und zwar jeweils mit einer einzigen Anweisung: Die Puffergröße und häufig auch die Pufferadresse waren festgelegt.

Selbst in den frühen 60er Jahren konnte man mit anspruchsvolleren Prozessoren (z. B. der 7090) noch Karten mit einer kleinen Routine (etwa 20 Anweisungen) lesen oder lochen, die leicht in jedes Programm kopiert werden konnte.

Da der Computer ausschließlich für einen einzelnen Auftrag vorgesehen war, spielte es keine Rolle, ob der Prozessor im Leerlauf war, während er darauf wartete, dass der Kartenleser zum Lesen der nächsten Karte bereit war, oder ob der Zeilendrucker die nächste Zeile einspeist.

Nun, es war wichtig, weil die Rechenzeit tatsächlich teuer war. Aus diesem Grund erfanden die Menschen Multi-Processing, Time-Sharing, asynchrone E / A sowie Interrupts und Gerätetreiber und Betriebssysteme. Die Schnittstellen der Hardwaregeräte wurden für den Programmierer komplexer und ermöglichten den Zugriff auf E / A-Register auf niedrigerer Ebene, was von den Gerätetreibern mehr Komplexität erforderte. Diese Komplexitätskosten (Speicher, Programmierzeit) wurden mit den vom Betriebssystem gemultiplexten Geräten "gleichzeitig" über die verschiedenen Programme amortisiert.

Noch in den 80ern benutzte ich einen Computer mit Mikroprozessor, der eines dieser älteren Systeme emulierte. Die Maschinenanweisungen hatten ein einheitliches Format über 80 Bits (10 Oktetts), und die Anweisung, den ersten Sektor der ersten Festplatte zu lesen und unter der Adresse 0 im Speicher abzulegen, war sehr praktisch: 0000000000. Der Startvorgang bestand also jeden Morgen Geben Sie diesen Befehl in das Terminal ein, in dem er unter der Adresse 0 gespeichert und ausgeführt wurde. Anschließend wird der Bootsektor geladen und die Ausführung mit dem nächsten Befehl fortgesetzt (unter der Adresse 10). Das Dateisystem bestand aus einer statischen Tabelle, die "Namen" von Sektorenbereichen zuordnet, die manuell zugewiesen wurden! I / O wurde in Assembler für diese Dateien ausgeführt, indem die Sektoren direkt gelesen oder geschrieben wurden, versetzt durch die Position der Datei auf der Festplatte, die durch die "open" -Routine wiederhergestellt wurde.

Pascal Bourguignon
quelle
2

Die erste Generation von Computern, die für einen breiteren persönlichen Gebrauch entwickelt wurden, hatte einen sogenannten "Monitor" im ROM (Nur-Lese-Speicher).

Unmittelbar nach dem Booten stellte der Monitor eine sehr eingeschränkte Befehlszeilenschnittstelle zur Verfügung, um hauptsächlich Programme aus dem Datenspeicher wie z. B. ein Bandgerät zu laden und die Ausführung zu starten (einige andere Befehle standen für die manuelle Codeeingabe zur Verfügung, wurden aber selten benötigt). Es kann immer nur ein Programm ausgeführt werden.

Anders als das Betriebssystem hatte Monitor keinerlei Dateisystemunterstützung. Der menschliche Bediener war dafür verantwortlich, das richtige Band zu finden, es auf den Rekorder zu legen und zu Beginn des zu ladenden Programms zu positionieren.

Überwachen Sie kombinierte Funktionen des BIOS und des Betriebssystems und war bereits sehr deutlich eine Software.

Nach dem Einschalten setzte das kurze "Reset" -Signal den Programmzähler wie jeden anderen Zähler auf Null und schaltete gleichzeitig den Speicher-Mapper (falls vorhanden) so, dass die Adresse 0000 dem Monitor-ROM zugeordnet wurde. Es war üblich, eine Hardwareschaltung zu haben, um Monitor später in den hohen Adressraum neu zuzuordnen. Neben dem Start des Codes wurde auch die Schaltfläche "Zurücksetzen" verwendet, um das laufende Programm zu beenden und ein anderes Programm zu laden.

Die rudimentäre Schaltfläche "Zurücksetzen" ist auch in diesen Tagen auf einigen Desktop-PCs zu finden.

h22
quelle
Dies gilt für die erste (oder zweite) Generation von "Personal Computern" für den Heimgebrauch. Bevor es sie gab, hatten Schüler an weiterführenden Schulen Fernzugriff auf Computer, die sich die Zeit teilten und anders funktionierten, aber dennoch "für eine breitere Nutzung ausgelegt" wären. Ich bin mir nicht sicher, ob die erste Generation von Heimcomputern, die Altairs und die Heathkits, Kommandozeilenmonitore hatten.
RedGrittyBrick
0

Der direkteste Vorgänger des Betriebssystems wäre eine Kombination aus Standardbibliotheken für die Schnittstelle zu Geräten und dem Bootstrap-Loader-System, mit dem ein Programm in den Speicher geladen und ausgeführt werden kann.

keshlam
quelle