|
Prozeßzustände
Während seiner Abarbeitung kann ein Prozeß verschiedene Zustände
einnehmen: - aktiv (running): Prozeß wird von der CPU bearbeitet
- bereit (ready): Prozeß kann die CPU benutzen, ist aber durch einen anderen Prozeß verdrängt worden
- blockiert: Prozeß wartet auf das Eintreten eines bestimmten Ereignisses (z. B. Drucker bereit, Benutzereingabe, etc.) Der Einfachheit halber wird hier ein Rechnersystem mit nur einer CPU angenommen, d. h. ein Prozeß ist aktiv, alle anderen sind bereit oder blockiert.
- Für bereite und blockierte Prozesse wird jeweils eine separate Warteliste
geführt.
- Ein neu gestartetes Programm wird am Ende der Bereit-Liste eingetragen.
- Ein spezieller Teil des Betriebssystems, der Scheduler, teilt den Prozessen
die CPU zu. Für die Zuteilung existieren unterschiedliche Algorithmen, die
alle das Ziel haben, die CPU möglichst gerecht unter allen Prozessen aufzuteilen.
Für die Steuerung der Zeitscheiben ist ein in regelmäßigen Zeitabständen
auftretender Harwareinterrupt notwendig --> Scheduler wird regelmäßig
aufgerufen.
Die Situation in der Hardware stellt sich etwa folgendermaßen dar. Im Speicher liegen
die einzelnen Instanzen der Prozesse. Jeweils ein Prozeß wird der CPU zugeteilt.
Zustandswechsel eines Prozesses:
- Dispatch: bereit --> aktiv
Zuteilung der CPU an einen Prozeß.
- Timerrunout: aktiv --> bereit
Nach Ablauf einer Zeitscheibe wird dem Prozeß die CPU wieder entzogen.
- Block: aktiv --> blockiert
Aktiver Prozeß hat eine E/A-Operation angefordert (oder sich selbst für
eine bestimmte Zeit verdrängt), bevor seine Zeitscheibe abgelaufen war.
Dies ist der einzige Zustandswechsel, den ein Prozeß selbst auslösen kann.
- Wakeup: blockiert --> bereit
Das Ereignis, auf das der Prozeß gewartet hat ist eingetreten.
Signal an den Prozeß
Zu jedem Prozeß legt das BS einen Prozeßsteuerblock (process control
block = PCB) in der Prozeßtabelle ab, der alle notwendigen Informationen
über einen Prozeß enthält, z. B.:
- PID (Process ID) - dies ist eine eindeutige ganze Zahl, über die der Prozeß im
System identifiziert wird
- Prozeßzustand
- Verweise auf die dem Prozeß zugeteilten Speicherseiten
- Benutzerkennungen (die die Rechte des Prozesses bestimmen)
- Blockierursachen bei einem schlafenden Prozeß
- Identifikation empfangener, aber noch nicht bearbeiteter Signale
- etc.
Zusätzlich zum PCB werden noch weitere, zum Prozeß
gehörige Daten geführt, auf die er aber nur im Zustand "running"
Zugriff hat. Dazu gehören:
- Eine Tabelle, in der die Reaktion des Prozesses auf jedes mögliche
Signal festgelegt ist
- Verweis auf das zugeordnete Terminal
- Verweis auf das aktuelle Inhaltsverzeichnis
- Die Tabelle der Dateideskriptoren
- Eine Bitmaske, die die Zugriffsrechte von Dateien mitbestimmt, die vom
jeweiligen Prozeß erzeugt werden
- etc.
|
|
|