Kommen wir nur zum Mehrprogrammbetrieb und hier im wesentlichen Multiplexverfahren. Damit
starten wir dann besondere Schutzvorkehrungen, die für diese Betriebsart wichtig sind. Wir
betrachten den Aspekt, Kurzaspekte des dynamischen Ladens bei Multiprogrammbetrieb oder Mehrprogramm
Betrieb eben schon große Anforderungen an die Speicherarbeitung steckt und enden dann kurz
mit der Simultanverarbeitung. Es war eine wichtige Maßnahme zur weiteren Leistungssteigerung innerhalb
des Rechensystems, nämlich mehr als ein Programm zugleich im Hauptspeicher liegen zu haben,
wobei dann diese Programme eben ausführbereit sind. Wir haben ja schon beim Einprogrammbetrieb
am Ende gesehen, dass da noch ein so ein Problempunkt existierte, nämlich wenn innerhalb
des Programms man an einer logischen Stelle kam, wo die weitere Ausführung des Programms gar keinen
Sinn mehr macht, weil es etwa auf Eingabeldaten warten muss und wenn man dann keine weiteren
Ausführungsstränge im System verfügbar hat, ja dann muss man tatsächlich warten und dann liegt
die CPU eben brach. Und hier geht es eben genau bei Mehrprogrammbetrieb, denn darum dieses Brach
liegen so gut es geht denn zu vermeiden. Das ist also eine weitere Maßnahme, um die Leistung im
Rechensystem zu steigern, die sich in zwei Dimensionen aufspannt im Raum Vermöge-Mehrprogrammbetrieb
eben so eine Leistungssteigerung zu erzielen, indem wir dann wirklich mehr als ein Programm,
das ausführbereit wäre im Hauptspeicher zu haben und dann tatsächlich auch noch eine zeitlich
basierte Maßnahme zu ergreifen, indem man dann nämlich durch Zeit-Multiplexing-Verfahren
die Simultanverarbeitung ermöglicht. Aber wir machen das mal schrittweise zunächst mal den
reinen Mehrprogrammbetrieb. Das heißt die Multiplex-Vorgänge der CPU zwischen mehreren
Programmen zu unterstützen und damit denn tatsächlich auch eine wirkliche Nebenläufigkeit
zwischen verschiedenen Anwendungsprozessen letztendlich zu erreichen. Das hat man im
Wesentlichen durch Interrupts, denn durch asynchrone Programmunterbrechung, denn schon
gut erreichen können, wobei denn diese Interrupts anfangs als sehr befremdlich angesehen worden sind,
weil man sich dann schon irgendwie so ein Stück weit gefragt hat, warum, was es dann für einen Sinn
machen würde, denn ein Programm, was sich noch in Ausführung befindet, den einfach wegzuschalten,
um ein anderes Programm denn laufen zu lassen. Aber da kommen wir denn später noch dazu,
um das ein bisschen besser zu verdeutlichen. Es waren auch andere Aspekte wichtig, nämlich,
dass denn diese Programme, die ausführbereit im Hauptspeicher lagen, anders voneinander geschützt
werden mussten, als es bisher mit dem Gata-Modell praktisch war. War Adressraumschutz also gefragt
und dann musste man eben zusehen, dass man in der Lage ist, mit dem sehr knappen Hauptspeicher
so vernünftig umgehen zu können, dass man mehr als ein Programm, was ausführbereit war,
denn laufen zu lassen. Also hier ging es dann darum, halt Überlagerungstechniken zu ersinnen,
wo man denn unabhängige Programmteile letztendlich identifizieren konnte, die denn nicht zur selben
Zeit praktisch immer permanent im Hauptspeicher liegen müssen. Und das geht dann auf Segmentierung
so ein Stück weit zurück, wobei hier Segmentierung jetzt nicht zwingend im Sinne von Schutz
verstanden werden müsste, sondern einfach auch ein Segment als so eine Aufteilungseinheit zu
begreifen. Aber letztendlich sind es beide Aspekte Schutz wie auch Aufteilungseinheit,
die mit dem Segment denn da verbunden sind. Segment eines Programms. Nun, beides sind denn
Maßnahmen, die ein Betriebssystem auch heute noch letztendlich ergreift, um letztendlich ein
Stück weit auch zu einer besseren Strukturierung der Maschinenprogramme denn beitragen zu können,
die man nämlich erlaubt, dass denn diese Maschinenprogramme eben als nicht sequenzielle
Programme ablaufbar sind. Das ist an sich eine logische Konsequenz, wenn man so an bestimmte
Datenstrukturen und Datenkomplexe denn denkt, wo man sieht, dass da einzelne Datenbestandteile
sind, die durchaus von der Logik hier gleichzeitig verarbeitet werden könnten, dann wäre es nur
folgerichtig, wenn man sozusagen auch algorithmische Strukturen konstruieren kann auf basis geeigneter
Sprachen, die dann nachher dazu führen, dass Programme tatsächlich auch parallel ablaufen
konnten. Also diese Zeit, wo man denn mehr Programmbetrieb oder Simultanverarbeitung
Mitte der 60er Jahre denn eingeführt hat, war auch genau jene Zeit, wo so die ersten
parallelen Programmiersprachen so entstanden. Ein wichtiger Punkt hier, um diese Leistungssteigerung
ein bisschen zu verdeutlichen, ist eben aktives Warten. Das möchte ich mal kurz erläutern,
Presenters
Zugänglich über
Offener Zugang
Dauer
00:24:42 Min
Aufnahmedatum
2020-07-06
Hochgeladen am
2020-07-06 23:36:27
Sprache
de-DE