1 / 14

CPU Prozess X

Vorgeschichte: Der Prozess X befindet sich in der CPU in Ausführung. Er stellt eine Lese-Anfrage an die Platte. Unterbrechungsvektoren der I/O Geräteklassen. Platte. Terminal. Prozessverwaltung. Unterbrechungsroutine des Plattentreibers. Scheduler. Terminaltreibers. Prozesswechsel.

Download Presentation

CPU Prozess X

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vorgeschichte: Der Prozess X befindet sich in der CPU in Ausführung.Er stellt eine Lese-Anfrage an die Platte Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Prozessverwaltung Unterbrechungsroutine des Plattentreibers Scheduler Terminaltreibers Prozesswechsel CPUProzess X Stack Prozess X Prog Statuswort Prog Zähler Stackpointer 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 Wartezeitnicht 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.Eine Platte löst eine Unterbrechung aus Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Prozessverwaltung Unterbrechungsroutine des Plattentreibers Scheduler Terminaltreibers Prozesswechsel CPUProzess A Stack Prozess A Prog Statuswort Prog Zähler Stackpointer Prozesstabelle Prozess A rechnend Prozess X blockiert Unterbrechungshardware Platte

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

  5. 2) Unterbrechungshardware lädt Unterbrechungsroutine der I/O Geräte-Klasse Prozessverwaltung Scheduler Prozesswechsel CPUUnterbrechungPlattentreiber Unterbrechungsvektoren der I/O Geräteklassen Stack Prozess A Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers 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. 3a) Unterbrechungsroutine sichert restliche Register des ursprünglichen Prozesses Prozessverwaltung Scheduler Prozesswechsel CPUUnterbrechungPlattentreiber Unterbrechungsvektoren der I/O Geräteklassen Stack Prozess A Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers 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. 3b) Unterbrechungsroutine sichert Programmstatuswort, Programmzähler und Stackpointer des ursprünglichen Prozesses Stack Prozessverwaltung Scheduler Prozesswechsel CPUUnterbrechungPlattentreiber Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Unterbrechungsroutine des Plattentreibers 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 Stack Prozess Verwaltung CPUUnterbrechungPlattentreiber Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Prozessverwaltung Unterbrechungsroutine des Plattentreibers Scheduler Terminaltreibers 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 Stack Prozess Verwaltung CPUUnterbrechungPlattentreiber Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Prozessverwaltung Unterbrechungsroutine des Plattentreibers Scheduler Terminaltreibers 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 Stack Prozess Verwaltung CPUUnterbrechungPlattentreiber Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Prozessverwaltung Unterbrechungsroutine des Plattentreibers Scheduler Terminaltreibers 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 Stack Prozess Verwaltung CPUUnterbrechungPlattentreiber Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Prozessverwaltung Unterbrechungsroutine des Plattentreibers Scheduler Terminaltreibers 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 Stack Prozess Verwaltung CPUUnterbrechungPlattentreiber Unterbrechungsvektoren der I/O Geräteklassen Prog Statuswort Prog Zähler Stackpointer Platte Terminal Prozessverwaltung Unterbrechungsroutine des Plattentreibers calls „Prozess X“ Scheduler Terminaltreibers 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 Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Unterbrechungsroutine des Plattentreibers Terminaltreibers CPUProzess X 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 Unterbrechungsvektoren der I/O Geräteklassen Platte Terminal Prozessverwaltung Unterbrechungsroutine des Plattentreibers Scheduler Terminaltreibers Prozesswechsel Uhr Netz Platte Drucker Terminal CPUProzess X Stack Prozess X Prog Statuswort Prog Zähler Stackpointer Warten auf die nächste Unterbrechung Wer löst sie aus... Prozesstabelle Prozess A rechenbereit Prozess X rechnend ? Unterbrechungshardware

More Related