Ein besonderes Problem bei der Stapelverarbeitung war es, dass während der Wartezeit auf Ein- bzw. Ausgaben die CPU jeweils nicht benutzt wurde. Dieses Problem war bei den wissenschaftlichen numerischen Berechnung eher nicht von Bedeutung, weil hier nur sehr wenige Ein-/Ausgaben-Operationen durchgeführt wurden. Im Gegensatz dazu konnten im kommerziellen Bereich schnell 80-90% der gesamten Rechenzeit Wartezeit auf Ein- und Ausgaben sein.
Ein Lösung bestand darin, den Speicher in mehrere Teile aufzuteilen und in
jedem Teil ein separates Programm abzuspeichern. Wenn dann ein Programm auf eine
Ein-/Ausgabe wartet, wurde ein anderes Programm von der CPU bedient. Diese
Technik nennt man Multiprogramming. In der Folgezeit entwickelte sich
das Multiprogramming zum Multitasking einer Technik, die heutigen
Betriebssystemen immernoch ganz wesentlich ist. Im Kapitel
werden wir uns damit ausführlich beschäftigen.
Eine weitere Neuerung bestand darin, dass nun Lochkarten nicht mehr auf Bänder
gespeichert werden mussten, sondern auf Platten eingelesen werden konnten. So war es
möglich, dass im laufenden Betrieb neue Programme eingelesen wurden
und diese immer dann in den Speicher geladen wurden, wenn ein anderes Programm seine
Berechnungen beendet hatte. Diesen Vorgang nennt man Spooling
(Simultaneous Periphical Operation On Line). Für die Ausgabe wurde auch die
Spooling-Technik verwendet. Diese Technik ist ein Vorläufer des modernen
Speichermanagements, welches wir in Kapitel
betrachten werden.
Beim Multiprogramming bestand aber nach wie vor wie bei der Stapelverarbeitung das Problem, dass vom Einspielen des Programms und der Daten bis zum Erhalt der Ausgabedaten mehrere Stunden vergehen konnten. So konnte ein kleiner Programmierfehler in einem Fortranprogramm den Programmierer leicht einen halben Tag kosten. Dieses Problem ebnete den Timesharing-Systemen den Weg. Hier konnten mehrere Benutzer gleichzeitig über Terminals Zugang zum Rechnersystem haben. Dabei war es möglich, Benutzern für kurze interaktive Kommandos Rechenzeit einzuräumen. Lange rechnende Programme wurden dann im Hintergrund immer dann weitergerechnet, wenn gerade kein Benutzer ein interaktives Kommando abgesetzt hat. Auch das Prinzip des Timesharings ist uns heute wohlbekannt. Setzen wir uns an einen Rechner der gerade eine größere Berechnung durchführt und machen eine Eingabe (z.B. über Tastatur oder Maus), so erwarten wir, dass diese auf dem Bildschirm innerhalb kürzester Zeit nachvollzogen wird und die Berechnung solange unterbrochen wird.
Eine wesentliche Weiterentwicklung wurde mit den Rechnerwerkzeug MULTICS (MULTiplexed Information and Computuing System) erzielt. Dieses Werkzeug sollte Hunderten von Timesharing-Benutzern gleichzeitig das Rechnen ermöglichen. Wenn dieses Projekt auch nach einiger Zeit im Sande verlief, so war MULTICS doch entscheidend für die Entwicklung von UNIX.