14
CPU Prozess X Prog Statuswort Prog Zähler Stackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Plat te Prozessverwaltung Scheduler Prozesswechsel Terminaltreibers Unterbrechungsvektor en der I/O Geräteklassen Platte Terminal Unterbrechungsrout ine des Plattentreibers Vorgeschichte: Der Prozess X befindet sich in der CPU in Ausführung. Er stellt eine Lese-Anfrage an die 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 lesen blockieren

CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

Embed Size (px)

Citation preview

Page 1: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUProzess X

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess X

Prozesstabelle

Prozess A rechenbereit

Prozess X rechnend

Platte

Prozessverwaltung

Scheduler

ProzesswechselTerminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

Vorgeschichte: Der Prozess X befindet sich in der CPU in Ausführung.Er stellt eine Lese-Anfrage an die 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

lesenblockieren

Page 2: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

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

Page 3: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUProzess A

Pro

g S

tatusw

ort

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess A

Prozesstabelle

Prozess A rechnend

Prozess X blockiertUnterbrechungshardware

Platte

Prozessverwaltung

Scheduler

ProzesswechselTerminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

Ausgangslage: Der Prozess A befindet sich in der CPU in Ausführung.Eine Platte löst eine Unterbrechung aus

Page 4: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUProzess A

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess A

Prog Stauswort

Prog Zähler

Terminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

Prozesstabelle

Prozess A rechnend

Prozess X blockiert

Programmzähler und Programmstatuswort des rechnenden Prozesses werden durch die Unterbrechungshardware auf dem Stack gesichert

Prozessverwaltung

Scheduler

Prozesswechsel

Unterbrechungshardware

1) Unterbrechungshardware sichert rechnenden Prozess

Page 5: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUUnterbrechungPlattentreiber

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess A

Prozesstabelle

Prozess A rechnend

Prozess X blockiert

Terminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

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

Prozessverwaltung

Scheduler

Prozesswechsel

2) Unterbrechungshardware lädt Unterbrechungsroutine der I/O Geräte-Klasse

Page 6: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUUnterbrechungPlattentreiber

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess A

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

Prozessverwaltung

Scheduler

ProzesswechselTerminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

3a) Unterbrechungsroutine sichert restliche Register des ursprünglichen Prozesses

Page 7: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUUnterbrechungPlattentreiber

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack

Prozesstabelle

Prozess A rechenbereit

Prozess X blockiert

Dabei wird der ursprüngliche Programmzähler und das Programmstatuswort aus dem Stack gelesen und entfernt (pop)

Prozessverwaltung

Scheduler

ProzesswechselTerminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

3b) Unterbrechungsroutine sichert Programmstatuswort, Programmzähler und Stackpointer des ursprünglichen Prozesses

Page 8: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUUnterbrechungPlattentreiber

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess Verwaltung

Prozesstabelle

Prozess A rechenbereit

Prozess X blockiert

Die Unterbrechungsroutine belegt das Stack-Register des Prozessors mit dem Stackpointer der Prozessverwaltung

Prozessverwaltung

Scheduler

ProzesswechselTerminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

4) Unterbrechungsroutine lädt den Stackpointer der Prozessverwaltung

Page 9: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUUnterbrechungPlattentreiber

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess Verwaltung

Prozesstabelle

Prozess A 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

C-Routine bestimmt blockierten Prozess

calls

rechenbereit

Prozessverwaltung

Scheduler

ProzesswechselTerminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

5) Unterbrechungsroutine ruft eine C-Routine auf

Page 10: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUUnterbrechungPlattentreiber

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess Verwaltung

Prozesstabelle

Prozess A rechenbereit

Prozess X rechenbereit

C-Routine bestimmt blockierten Prozess

calls

Prozessverwaltung

Scheduler

Prozesswechsel

calls

Den nächsten rechnendenProzess bestimmen:Prozess X

Der Prozess-Scheduler wird von der C-Prozedur aufgerufen und bestimmt den nächsten Prozess, der in den Zustand rechnend versetzt werden soll

Terminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

6) Der Prozess-Scheduler wird aufgerufen

Page 11: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUUnterbrechungPlattentreiber

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess Verwaltung

Prozesstabelle

Prozess A rechenbereit

Prozess X rechenbereit

C-Routine bestimmt blockierten Prozess

Prozessverwaltung

Scheduler

Prozesswechsel

Return „Prozess X“

Return „Prozess X“

Die Unterbrechungsroutine erhält die Kontrolle der C-Prozedur zurück

Terminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

7) Die Kontrolle geht wieder zurück zur Unterbrechungsroutine

Page 12: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUUnterbrechungPlattentreiber

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess Verwaltung

Prozesstabelle

Prozess A rechenbereit

Prozess X rechenbereit

Prozessverwaltung

Scheduler

Prozesswechsel

calls „Prozess X“Terminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

Die Unterbrechungsroutine ruft eine Assembler-Routine (Prozesswechsel) auf, diese aktiviert den neuen Prozess (Prozess X). Dabei werden alle Register neu belegt

8a) Der eigentliche Prozesswechsel wird aufgerufen

Page 13: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

CPUProzess X

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess X

Prozesstabelle

Prozess A rechenbereit

Prozess X rechnend

Prozessverwaltung

Scheduler

ProzesswechselTerminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

8b) Der eigentliche Prozesswechsel wird durchgeführt

Page 14: CPU Prozess X Prog StatuswortProg ZählerStackpointer Stack Prozess X Prozesstabelle Prozess A rechenbereit Prozess X rechnend Platte Prozessverwaltung

NetzUhr

CPUProzess X

Pro

g

Statu

swo

rt

Pro

g Z

ähler

Stackp

oin

ter

Stack Prozess X

Prozesstabelle

Prozess A rechenbereit

Prozess X rechnendUnterbrechungshardware

Prozessverwaltung

Scheduler

ProzesswechselTerminaltreibers

Unterbrechungsvektoren der I/O Geräteklassen

Platte

Terminal

Unterbrechungsroutine des Plattentreibers

Warten auf die nächste Unterbrechung

DruckerPlatte

Terminal?Wer löst sie aus...

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