2.3.4.3 Quasi-gleichzeitige Ausführung mehrerer Prozesse

Die quasi-gleichzeitige Ausführung mehrerer Prozesse stellt einen besonderen Meilenstein dar zwischen dem bisher erarbeiteten Bild der Ausführung mehrerer Prozesse im Hauptspeicher und dem, was ein normaler Anwender heute von seinem PC oder Laptop gewohnt ist.


Der bisherige Stand

Zunächst sei an den bisher erarbeiteten technischen Stand erinnert:

Auf einer (hier betrachteten) ganz einfachen CPU kann immer nur genau ein Prozess zur Zeit aktiv sein. Eine tatsächlich parallele Ausführung mehrerer Prozesse ist deshalb technisch bedingt nicht möglich.

Es kann aber zu einer "quasi-gleichzeitigen" Ausführung mehrerer Prozesse kommen, indem sich die betreffenden Prozesse in kleinen Zeiteinheiten auf der CPU abwechseln. Sind die "kleinen Zeiteinheiten" hierbei genügend klein gewählt, so erhält ein Anwender vor dem System den Eindruck, als ob alle Prozesse parallel ablaufen.

Aus der Praxis

Du kennst genau dieses Verhalten aus deiner täglichen Arbeit mit deinem PC oder Laptop. Alle gestarteten Programme wie beispielsweise Browser, E-Mail-Client, Textverarbeitung, etc. scheinen parallel zu laufen.


Offene Fragen

Es ergeben sich einige offene Fragen:

Frage

  1. WER oder WAS bestimmt, wann es Zeit ist, einen Prozess zu unterbrechen und die CPU einem anderen Prozess zuzusprechen?

  2. WER oder WAS bestimmt, welcher Prozess als nächstes die CPU bekommt?


Frage 2 lässt sich ganz einfach mit folgender Forderung beantworten:

Wichtig

Wir brauchen ein Betriebssystem!

Und eine der Aufgaben dieses Betriebssystems wird die Auswahl des jeweils nächsten Prozesses für die CPU sein.


Aber bei Frage 1 wird es schwieriger. Hier kann das Betriebssystem nicht helfen, denn das Betriebssystem ist Software, während seiner Ausführung also nichts weiter als ein Prozess.


Wichtige Erkenntnis

Wichtig

Dies ist eine sehr wichtige Erkenntnis für das Zusammenspiel von Hardware, Betriebssystem und sonstiger Software! Ein Betriebssystem ist nichts anderes als Software. Sobald das Betriebssystem in den Hauptspeicher geladen und seine Ausführung gestartet wird, ist das Betriebssystem ein Prozess. Und der Betriebssystem-Prozess wechselt sich fortan mit den weiteren Prozessen im Hauptspeicher auf der CPU ab.


Wenn jetzt Prozess A auf der CPU läuft, dann muss es ein Hardware-gesteuertes Ereignis geben, welches dafür sorgt, dass der laufende Prozess A unterbrochen wird und das Betriebssystem (als weiterer Prozess) die CPU übernimmt.


Hardware-Taktgeber

Zu diesem Zweck gibt es einen Hardware-Taktgeber, der in sehr kleinen zeitlichen Abständen einen Interrupt auslöst. Bei der Abarbeitung dieses Interrupts wird der laufende Prozess A unterbrochen, und die zugehörige Interruptbehandlungsroutine ausgeführt.

Die Antwort auf Frage 1 ist somit:

Wichtig

Die Hardware unseres Rechners muss um einen Taktgeber erweitert werden!

Und dieser Taktgeber sorgt unabhängig von allen Prozessen und in kleinen zeitlichen Abständen für ein Signal, welches einen Interrupt auslöst. Die zugehörige Interruptbehandlungsroutine kann dann entscheiden, ob es Zeit für einen Prozesswechsel auf der CPU ist.


Die Interruptbehandlungsroutine kann nun Bestandteil des Betriebssystems sein, wodurch der Interrupt letztlich dafür sorgt, dass das Betriebssystem zur Ausführung auf der CPU kommt. Wird nun entschieden, dass es Zeit für einen Prozesswechsel auf der CPU ist, so kann ein anderer Teil des Betriebssystems aufgerufen werden, der den nächsten Prozess auswählt und ihm die CPU übergibt.


Aufgabe 1

Aufgabe

Du erinnerst dich an die folgende Abbildung:

Vnrgesamt2.jpg

Wie integrierst du den Hardware-Taktgeber in dieses Bild?


Aufgabe 2

Aufgabe

Nach dem Start eines Rechners mit integriertem Hardware-Taktgeber werden insgesamt drei Prozesse gestartet:

  1. Prozess BS: Das Betriebssystem.
  2. Prozess X: Eine beliebige Anwendung.
  3. Prozess Y: Eine weitere beliebige Anwendung.

Prozess BS beginnt ab Speicherstelle 0 im Hauptspeicher, damit wird das Betriebssystem zuerst gestartet.

Erläutere was passiert, wenn Prozess BS sich nun um die quasi-gleichzeitige Ausführung aller Prozesse auf der CPU kümmert. In welcher Weise wechseln sich BS, X und Y auf der CPU ab? Wodurch wird dieser Wechsel veranlasst?