10 Zurück zu den Ursprüngen „Betriebssysteme wurden in den 1960er Jahren erfunden“ bs-10 1 Die Situation am Ende der 1950er Jahre: Stapelbetriebssysteme ohne Spooling (bei Großrechnern) typisch: IBM 7090 + IBM 1401 + Magnetbänder (1.2.2) Verarbeitungs- Rechner IBM 7090 IBM 1401 IBM 1401 bs-10 Eingaberechner 2 Ausgaberechner Technik HW-Ressource virtualisiert Prozessor Prozess/Faden Arbeitsspeicher Adressraum Ein/Ausgabegerät Ein/Ausgabestrom reale Maschine virtuelle Maschine (Idee - Realisierung) Mehrprozessbetrieb (1959 -1962) Teilnehmerbetrieb (1959 - 1965) Virtueller Speicher (1960 - 1967) Spooling (1960 - 1963) Virtuelle Maschinen (1967 - 1969) bs-10 3 10.1 Mehrprozessbetrieb Großbritannien 1959: Christopher Strachey: Time-sharing in large fast computers. (Proc. Int. Conf. on Information Processing, Paris, 1959) Dieser Aufsatz erläutert Prinzipien und Einsatzmöglichkeiten des Mehrprozessbetriebs. Achtung: „Time-sharing“ meint hier tatsächlich Mehrprozessbetrieb, in den 60er Jahren dann zunehmend als multiprogramming bezeichnet. bs-10 4 Niederlande 1959: Edsger W. Dijkstra: Communication with an automatic computer. Doctoral Dissertation, Vrije Universiteit Amsterdam, 1959 Diese Dissertation ist die erste grundsätzliche Auseinandersetzung mit der Unterbrechungstechnik, die seit den 50er Jahren in den meisten Rechnern zu finden ist. Dijkstras spätere Arbeiten zum Prozessbegriff und zur Synchronisation von Prozessen haben hier ihre Wurzeln. bs-10 5 USA 1964: Clark Oliphint: Operating system for the B 5000. Datamation Magazine 10.5, May 1964 Beschreibung eines der ersten kommerziellen Stapelsysteme mit Mehrprozessbetrieb (für die Burroughs B 5000). Die B 5000 war die erste Maschine mit Kellerarchitektur, und das Betriebssystem wurde in Extended Algol geschrieben! bs-10 6 USA 1966: J.B. Dennis, E.C. van Horn: Programming semantics for multiprogrammed computations. Comm. of the ACM 9.3, March 1966 Einer der klassischen Aufsätze zu MULTICS. Ausführlich diskutiert wird der Begriff Prozess, der Mitte der 60er Jahre gebräuchlich wurde. bs-10 7 Niederlande 1967/68: Edsger W. Dijkstra: Cooperating sequential processes. In F. Genuys (ed.): Programming Languages. Academic Press 1968 Grundlegender Aufsatz zur nichtsequentiellen Programmierung mit Semaphoren. bs-10 8 Niederlande 1967/68: Edsger W. Dijkstra: The structure of the THE multiprogramming system. Comm. of the ACM 11.5, May 1968 Beschreibung der Entwurfsprinzipien eines Stapelsystems (!) mit Mehrprozessbetrieb: funktionale Hierarchie, Korrektheit A. Nicolas Habermann: On the harmonious cooperation of abstract machines. Doctoral Thesis, Technische Hogeschool Eindhoven, 1967 Theoretische Fundierung der Korrektheit (hauptsächlich Verklemmungsfreiheit) des THE-Systems. bs-10 9 Dänemark 1970: Per Brinch Hansen: The nucleus of a multiprogramming system. Comm. of the ACM 13.4, April 1970 Beschreibung eines eleganten Konzepts für Mehrprozessbetrieb und Interprozesskommunikation. Das System wurde für die dänische Regnecentralen RC 4000 konstruiert. bs-10 10 10.2 Teilnehmerbetrieb USA 1959: John McCarthy: A time-sharing operator program for our projected IBM 709. Memorandum to P.M. Morse, M.I.T. 1959 Ein Vorschlag, am M.I.T. ein Teilnehmersystem für die IBM 709 zu bauen; die erste genauere Beschreibung, was unter „time-sharing“ zu verstehen sei. bs-10 11 USA 1962: F.J. Corbató et al.: An experimental time-sharing system. Spring Joint Computer Conference 1962 Beschreibung des CTSS (Compatible Time-Sharing System), des ersten, rudimentären Teilnehmersystems, entwickelt am M.I.T. für die IBM 7090. Das Prinzip des Mehrprozessbetriebs war zu diesem Zeitpunkt noch nicht sehr gut verstanden. Zu jedem Zeitpunkt befand sich ein Benutzerprogramm im Arbeitsspeicher; zum Ein/Auslagern wurden anfangs Magnetbänder benutzt! Das System unterstützte 3 Benutzer! bs-10 12 USA 1965-68: F.J. Corbató, V.A. Vyssotsky: Introduction and overview of the Multics system. Fall Joint Computer Conference 1965 Dieser Aufsatz behandelt den Nachfolger des CTSS am M.I.T., das erheblich ehrgeizigere MULTICS-System. Zum Einsatz kam eine leistungsfähige Hardware, die General Electric 645 mit Paging und Segmentierung. MULTICS ist nicht nur als erstes leistungsfähiges Teilnehmersystem berühmt geworden, sondern auch wegen seines virtuellen Speichers, seines hierarchischen Dateisystems und seiner Verdienste um die Prägung des Prozessbegriffs (s.o.). bs-10 13 USA 1969-74: R. A. Meyer, L. H. Seawright: A virtual machine time-sharing system. IBM Systems Journal 9.3, September 1970 Originaltext zum CP-67/CMS (9.2.3) [Vorgänger: CP-40, 1967!] Dennis Ritchie, Ken Thompson: The Unix time-sharing system. Comm. of the ACM 17.7, July 1974 bs-10 Das heute noch lesenswerte Unix-Papier! Unix war das erste weltweit erfolgreiche Teilnehmersystem - obwohl es lange Jahre keinerlei kommerzielle Unterstützung dafür gab und es nur auf der PDP-11-Architektur lief; allerdings war die Lizenz (von den Bell Labs) praktisch kostenlos zu haben. Das Erfolgsrezept von Unix: bewährte Ideen aus anderen Systemen vereinfachen (MULTICS!) und geschickt kombinieren. 14 10.3 Virtueller Speicher Großbritannien 1961: Tom Kilburn, Bruce Payne, David Howarth: The Atlas supervisor. Proc. AFIPS Computer Conference, 1961 Bemerkenswerter Aufsatz über das weltweit erste PagingSystem. Atlas war ein Gemeinschaftsprojekt der Ferranti Ltd. und der Universität Manchester. Als Auslagerungsbereich für die Seiten wurde eine Magnettrommel benutzt. Das System realisierte Stapelbetrieb. bs-10 15 USA 1965-68: F.J. Corbató, V.A. Vyssotsky: Introduction and overview of the Multics system. Fall Joint Computer Conference 1965 (siehe oben unter 10.2) Die Kombination von Paging und Segmentierung in MULTICS war wegweisend für alle späteren Virtuelle-Speicher-Systeme. Auch der Einsatz von Capabilities für die flexible und sichere Adressierung wurde im MULTICS-Kontext erstmalig erforscht. bs-10 16 10.4 Spooling Großbritannien 1961: Tom Kilburn, Bruce Payne, David Howarth: The Atlas supervisor. Proc. AFIPS Computer Conference, 1961 (siehe oben 10.3) Atlas hat nicht nur den Verdienst, der Paging-Pionier zu sein, auch die Machbarkeit von Spooling (unter Verwendung der Magnettrommel) wurde hier zum ersten Mal überzeugend demonstriert. Somit war eine rudimentäre Form von Mehrprozessbetrieb gegeben. bs-10 17 10.5 Zusammenfassung bs-10 18 USA Großbritannien Niederlande BR Deutschland 1959 McCarthy: „time-sharing" Strachey: „multiprogramming“* Dijkstra: Ph.D. on interrupts Atlas: paging/VM, 1961 spooling (drum) 1962-63 CTSS: time-sharing (7090 + tapes) 1963-64 1962-65 TR 4 (batch, tapes) Dijkstra: semaphores, processes 1965-69 Multics: file system (+VM), processes 1969 CP/CMS: virtual machine THE (Dijkstra) hierarchy, correctness 1969 bs-10 TR 440 (BS1/3, BSM) * originally called "time-sharing" by Strachey 19