Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Vorgeschichte:. Der Prozess X befindet sich in der CPU in Ausführung

Ähnliche Präsentationen


Präsentation zum Thema: "Vorgeschichte:. Der Prozess X befindet sich in der CPU in Ausführung"—  Präsentation transkript:

1 Vorgeschichte:. Der Prozess X befindet sich in der CPU in Ausführung
Vorgeschichte: Der Prozess X befindet sich in der CPU in Ausführung. Er stellt eine Lese-Anfrage an die Platte CPU Prozess X Terminaltreibers Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Unterbrechungsroutine des Plattentreibers Stack Prozess X Prog Statuswort Prog Zähler Stackpointer Prozessverwaltung Scheduler Prozesswechsel blockieren lesen Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Der rechnende Prozess X gibt einen Leseauftrag an die Platte (Harddisk) auf. Damit der Prozessor während der Wartezeit nicht unnötig belegt wird, blockiert sich der Prozess selbst und veranlasst einen Prozesswechsel. Ein Prozesswechsel kommt zBsp dadurch zu Stande, dass der Prozess X selbst eine Software-Unterbrechung auslöst. Software-Unterbrechung werden dabei genau gleich behandelt wie I/O-Unterbrechungen – das Thema der folgenden Seiten

2 Eine Weile später ist die Platte fertig mit Lesen und löst eine I/O-Unterbrechung aus...

3 Ausgangslage:. Der Prozess A befindet sich in der CPU in Ausführung
Ausgangslage: Der Prozess A befindet sich in der CPU in Ausführung. Eine Platte löst eine Unterbrechung aus CPU Prozess A Terminaltreibers Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Unterbrechungsroutine des Plattentreibers Stack Prozess A Prog Statuswort Prog Zähler Stackpointer Prozessverwaltung Scheduler Prozesswechsel Prozesstabelle Prozess A rechnend Prozess X blockiert Unterbrechungshardware Platte

4 1) Unterbrechungshardware sichert rechnenden Prozess
CPU Prozess A Terminaltreibers Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Unterbrechungsroutine des Plattentreibers Stack Prozess A Prog Statuswort Prog Zähler Stackpointer Prog Stauswort Prog Zähler Prozessverwaltung Scheduler Prozesswechsel Prozesstabelle Prozess A rechnend Prozess X blockiert Unterbrechungshardware Programmzähler und Programmstatuswort des rechnenden Prozesses werden durch die Unterbrechungshardware auf dem Stack gesichert

5 CPU Unterbrechung Plattentreiber
2) Unterbrechungshardware lädt Unterbrechungsroutine der I/O Geräte-Klasse CPU Unterbrechung Plattentreiber Unterbrechungsvektoren der I/O Geräteklassen Stack Prozess A Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers Prozessverwaltung Scheduler Prozesswechsel Terminaltreibers Prozesstabelle Prozess A rechnend Prozess X blockiert Unterbrechungshardware Unterbrechungshardware lädt den neuen Programmzähler und das Programmstatuswort aus dem Unterbrechungsvektor des I/O-Gerätes in die entsprechenden Register des Prozessors

6 CPU Unterbrechung Plattentreiber
3a) Unterbrechungsroutine sichert restliche Register des ursprünglichen Prozesses CPU Unterbrechung Plattentreiber Unterbrechungsvektoren der I/O Geräteklassen Stack Prozess A Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers Prozessverwaltung Scheduler Prozesswechsel Terminaltreibers Prozesstabelle Prozess A rechnend Prozess X blockiert Die nun aktive Unterbrechungsroutine ist eine Assembler-Routine, die alle Register des ursprünglichen Prozesses in seinem Prozesstabelleneintrag sichert

7 CPU Unterbrechung Plattentreiber
3b) Unterbrechungsroutine sichert Programmstatuswort, Programmzähler und Stackpointer des ursprünglichen Prozesses CPU Unterbrechung Plattentreiber Stack Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers Prozessverwaltung Scheduler Prozesswechsel Terminaltreibers Prozesstabelle Prozess A rechenbereit Prozess X blockiert Dabei wird der ursprüngliche Programmzähler und das Programmstatuswort aus dem Stack gelesen und entfernt (pop)

8 4) Unterbrechungsroutine lädt den Stackpointer der Prozessverwaltung
CPU Unterbrechung Plattentreiber Stack Prozess Verwaltung Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers Prozessverwaltung Terminaltreibers Scheduler Prozesswechsel Prozesstabelle Prozess A rechenbereit Prozess X blockiert Die Unterbrechungsroutine belegt das Stack-Register des Prozessors mit dem Stackpointer der Prozessverwaltung

9 5) Unterbrechungsroutine ruft eine C-Routine auf
CPU Unterbrechung Plattentreiber Stack Prozess Verwaltung Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers Prozessverwaltung Terminaltreibers Scheduler Prozesswechsel calls Prozesstabelle C-Routine bestimmt blockierten Prozess Prozess A rechenbereit rechenbereit Prozess X rechenbereit Die Unterbrechungsroutine ruft eine C-Prozedur auf, diese bestimmt den blockierten Prozess, der durch die Unterbrechung geweckt werden soll und versetzt ihn in den Zustand rechenbereit

10 6) Der Prozess-Scheduler wird aufgerufen
CPU Unterbrechung Plattentreiber Stack Prozess Verwaltung Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers Prozessverwaltung Terminaltreibers Scheduler Prozesswechsel calls calls Prozesstabelle C-Routine bestimmt blockierten Prozess Den nächsten rechnenden Prozess bestimmen: Prozess X Prozess A rechenbereit Prozess X rechenbereit Der Prozess-Scheduler wird von der C-Prozedur aufgerufen und bestimmt den nächsten Prozess, der in den Zustand rechnend versetzt werden soll

11 7) Die Kontrolle geht wieder zurück zur Unterbrechungsroutine
CPU Unterbrechung Plattentreiber Stack Prozess Verwaltung Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers Prozessverwaltung Terminaltreibers Scheduler Prozesswechsel Return „Prozess X“ Return „Prozess X“ Prozesstabelle C-Routine bestimmt blockierten Prozess Prozess A rechenbereit Prozess X rechenbereit Die Unterbrechungsroutine erhält die Kontrolle der C-Prozedur zurück

12 8a) Der eigentliche Prozesswechsel wird aufgerufen
CPU Unterbrechung Plattentreiber Stack Prozess Verwaltung Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers Prozessverwaltung calls „Prozess X“ Terminaltreibers Scheduler Prozesswechsel Prozesstabelle Prozess A rechenbereit Prozess X rechenbereit Die Unterbrechungsroutine ruft eine Assembler-Routine (Prozesswechsel) auf, diese aktiviert den neuen Prozess (Prozess X). Dabei werden alle Register neu belegt

13 8b) Der eigentliche Prozesswechsel wird durchgeführt
CPU Prozess X Terminaltreibers Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Unterbrechungsroutine des Plattentreibers Stack Prozess X Prog Statuswort Prog Zähler Stackpointer Prozessverwaltung Scheduler Prozesswechsel Prozesstabelle Prozess A rechenbereit Prozess X rechnend

14 Endzustand: Der Prozess X befindet sich in der CPU in Ausführung
CPU Prozess X Terminaltreibers Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Unterbrechungsroutine des Plattentreibers Stack Prozess X Prog Statuswort Prog Zähler Stackpointer Prozessverwaltung Scheduler Prozesswechsel Warten auf die nächste Unterbrechung Wer löst sie aus... Prozesstabelle Prozess A rechenbereit Prozess X rechnend Unterbrechungshardware ? Uhr Netz Platte Drucker Terminal


Herunterladen ppt "Vorgeschichte:. Der Prozess X befindet sich in der CPU in Ausführung"

Ähnliche Präsentationen


Google-Anzeigen