2.3.4.3 Quasi-gleichzeitige Ausführung mehrerer Prozesse

[gesichtete Version][gesichtete Version]
(LOOP2 Upgrade)
Zeile 15: Zeile 15:


<p>
<p>
Es kann aber zu einer <loop_index>quasi-gleichzeitige Ausführung mehrerer Prozesse</loop_index>"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.
Es kann aber zu einer <loop_index id="5fa978740ae55">quasi-gleichzeitige Ausführung mehrerer Prozesse</loop_index>"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.
</p>
</p>


Zeile 45: Zeile 45:


<p>
<p>
<loop_index>Wir brauchen ein Betriebssystem|Notwendigkeit Betriebssystem</loop_index>
<loop_index id="5fa978740ae61">Wir brauchen ein Betriebssystem|Notwendigkeit Betriebssystem</loop_index>
<loop_area type="important">'''Wir brauchen ein Betriebssystem!'''
<loop_area type="important">'''Wir brauchen ein Betriebssystem!'''
<p>
<p>
Zeile 78: Zeile 78:
== Hardware-Taktgeber ==
== Hardware-Taktgeber ==
<p>
<p>
Zu diesem Zweck gibt es einen '''<loop_index>Hardware-Taktgeber</loop_index>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.
Zu diesem Zweck gibt es einen '''<loop_index id="5fa978740ae6b">Hardware-Taktgeber</loop_index>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.
</p>
</p>


Zeile 94: Zeile 94:
<br />
<br />
<p>
<p>
Die <loop_index>Interruptbehandlungsroutine</loop_index>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.
Die <loop_index id="5fa978740ae73">Interruptbehandlungsroutine</loop_index>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.
</p>
</p>


Zeile 102: Zeile 102:
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Integration des Taktgebers">
<loop_task title="Integration des Taktgebers" id="5fa978740ae7c">
<p>
<p>
Du erinnerst dich an die folgende Abbildung:
Du erinnerst dich an die folgende Abbildung:
</p>
</p>
<p>
<p>
<loop_figure title="Abbildung zu Aufgabe 1" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:vnrgesamt2.jpg|650px]]</loop_figure>
<loop_figure title="Abbildung zu Aufgabe 1" description="" copyright="CC-BY" index=true show_copyright=true id="5fa978740ae84">[[Datei:vnrgesamt2.jpg|650px]]</loop_figure>
</p>
</p>
<p>
<p>
Zeile 120: Zeile 120:
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Betriebssystem und Prozesse im Wechsel">
<loop_task title="Betriebssystem und Prozesse im Wechsel" id="5fa978740ae8b">
<p>
<p>
Nach dem Start eines Rechners mit integriertem Hardware-Taktgeber werden insgesamt drei Prozesse gestartet:
Nach dem Start eines Rechners mit integriertem Hardware-Taktgeber werden insgesamt drei Prozesse gestartet:

Version vom 9. November 2020, 19:12 Uhr

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?