Version [22399]
Dies ist eine alte Version von BSys03ProzesseThreads erstellt von RonnyGertler am 2013-03-26 15:39:24.
Betriebssysteme (Betriebssystemtheorie) - Kapitel 3 - 3. Prozesse und Threads
Inhalte von Dr. E. Nadobnyh
3.1. Prozesse
Grundbegriffe
1) Ein Prozess (Task, Aufgabe) ist eine Ausführung des Programms in seiner eigenen Prozessumgebung. Der Prozess ist ein zentrales Konzept einer Parallelverarbeitung in der Betriebssystemtheorie.
2) Eine Prozessumgebung (Ablaufumgebung, Ausführungsumgebung) besteht aus dem Prozess-Kontext und zugeordneten Ressourcen.
3) Ein Ressource (Betriebsmittel) kann eine Hardware oder eine Informationseinheit sein. Jedem Prozess können folgende Ressourcen zugeordnet werden:
- CPU,
- Arbeitsspeicher,
- andere Ressourcen: offene Dateien, Konsolen, Netzwerkverbindungen usw.
4) Ein Prozess-Kontext ist eine ausführliche Beschreibung des Prozesses:
- Registerinhalte,
- Adressraumbeschreibung,
- Beschreibung der zugeordneten Ressourcen,
- Betriebssysteminterne Verwaltungsdaten.
5) Ein Programm ist eine Verfahrensvorschrift für die Datenverarbeitung.
- Ein Programm ist ein Teil der Prozessumgebung.
- Ein bestimmtes Programm kann von mehreren Prozessen ausgeführt werden.
6) Ein Job (Session, Anwendung) ist ein Benutzerauftrag an das Betriebssystem.
- Ein Job kann aus einem oder mehreren Prozessen bestehen.
- Jobs sind unabhängig und geschützt von anderen.
Prozessmodell
1) Die gesamte Software ist als Menge von Prozessen organisiert.
2) Das Betriebssystem schafft für jeden Prozess eine Illusion, dass er den ganzen Rechner für sich selbst alleine zur Verfügung hat. Dieser illusorische Rechner wurde durch die Multitasking realisiert.
3) Jeder Prozess merkt keine Unterbrechung, nur die zeitliche Verzögerung.
4) Jeder Prozess ist gegenüber anderen Prozessen geschützt.
PCB
1) Ein PCB*-Process Control Block (Process Context Block) wird vom Betriebssystem zur Verwaltung eines Prozesses geführt.
Ein PCB ist eine Repräsentation eines Prozesses und enthält seinen Prozess-Kontext.
Sie kann auch als Liste implementiert werden.
Typische Informationen in einem PCB
1. Register-Inhalte:
- PC - Program Counter,
- PSW - Program Status Word,
- SP - Stack Pointer,
- allgemeine Register.
2. Informationen für die Speichermanagement:
- Seitentabelle-Adresse,
- Basisregister-Inhalte,
- Grenzregister-Inhalte,
- Adressen auf Code-, Daten- und Stack-Segmente des Prozesses, usw.
3. Beschreibung der zugeordneten Betriebsmittel:
- Informationen für die Dateiverwaltung: Dateideskriptoren, Home-Verzeichnis, Arbeitsverzeichnis usw.
- Netzwerkverbindungen,
- allozierte Geräte usw.
4. Betriebssysteminterne Prozessverwaltungsdaten:
- Prozess-Nummer (PID-Process IDentification)
- Prozesszustand, z.B. aktiv, bereit, blockiert,
- Priorität für das Scheduling,
- verbrauchte Prozessorzeit seit dem Start,
- Prozeßnummer des Elternprozesses (PPID, Parent PID), usw.
⇒ Demo 1.
Prozesswechsel
Synonyme: Prozess-Umschaltung, Kontextwechsel, context-switch, process switch, task switch.
Am Prozesswechsel sind zwei Prozesse beteiligt:
- der suspendierte Prozess, der vor der Unterbrechung aktiv war, und
- der aktivierte Prozess, der vor der Unterbrechung unaktiv war. Der aktivierte Prozess wurde vom Scheduler ausgewählt.
Am Prozesswechsel sind zwei Ressourcen beteiligt:
- CPU-Register und
- Arbeitsspeicher.
Wechsel von Register-Inhalten
Dieser Wechsel besteht aus Kontextsicherung und Kontextwiederherstellung.
(1) Bei der Kontextsicherung (Kontext-Retten) müssen Registerinhalte des suspendierten Prozesses gesichert werden, um später wiederhergestellt werden zu können.
- Der Unterbrechungskontext wird aus dem Stack im PCB gesichert.
- Andere Registerinhalte werden aus der CPU im PCB gesichert.
(2) Bei der Kontextwiederherstellung werden Registerinhalte des aktivierten Prozesses wiederherstellt, d.h. aus dem PCB in die CPU kopiert.
Wechsel von Speicher-Inhalten
Dieser Wechsel findet z.B. im Rechner mit virtuellem Speicher statt.
Beim Prozesswechsel können:
(3) einige Speicherbereiche des suspendierten Prozesses ausgelagert werden und
(4) einige Adressraumbereiche des aktivierten Prozesses nach Bedarf von der Festplatte auf den Speicher geladen werden.
Erzeugung und Terminierung des Prozesses
Es gibt einige Möglichkeiten einen neuen Prozess zu erzeugen:
- beim Systemstart, z.B. Leerlaufprozess,
- durch Benutzeranforderung, z.B. cmd- Konsole,
- durch Systemaufruf im laufenden Prozess, z.B. fork in UNIX oder CreateProcess in Windows,
- durch Systemaufruf für Stapelauftrag, z.B. batch job.
Es gibt einige Möglichkeiten einen Prozess zu terminieren:
- freiwillige Beendigung durch Systemaufruf , z.B. exit in UNIX oder ExitProzess in Windows;
- unfreiwillige Beendigung durch das System wegen den Fehler, z.B. trap;
- unfreiwillige Terminierung durch einen anderen Prozess, z.B. kill.
⇒ Demo 2.
⇒ Demo 3.
Prozesszustände
Ein Prozess durchläuft während seiner Lebenszeit verschiedene Zustände. Ein Grundmodell enthält drei Zustände:
1) Aktiv (laufend, running). Der Prozess besitzt die CPU. In einem Einprozessorsystem kann nur ein Prozess zu jedem Zeitpunkt in diesem Zustand sein.
2) Rechenbereit (ready). Der Prozess wartet auf die CPU- Zuteilung.
3) Blockiert (wartend, blocked). Der Prozess wartet auf ein Ereignis, z.B.:
- Ablauf einer Zeitspanne, welche der Prozess selbst beauftragt hat, z.B. sleep,
- Zuteilung eines Betriebsmittels außer CPU,
- Meldung von einem anderen Prozess.
In konkreten Betriebssystemen sind auch weitere Prozesszustände möglich.
Es gibt folgende Übergänge zwischen den Zuständen im Grundmodell:
(1) Blockierung. Der aktive Prozess gibt die CPU frei, da er auf ein Ereignis wartet, z.B. auf eine Eingabe. Der Prozess wird blockiert.
(2) Verdrängung (Deaktivieren, Preemption, Vorrangunterbrechung). Dem aktiven Prozess wird die CPU entzogen, z.B. nach dem Interrupt vom Timer.
(3) Zuteilung (Aktivieren). Dem Prozess wird die CPU zugeteilt.
(4) Aufwecken (wakeup, Deblockierung). Der Blockierungsgrund wird aufgehoben, weil das Betriebsmittel verfügbar ist.
3.2. Threads
Definition
Threads sind parallel ablaufende Aktivitäten in einem Prozess.
Synonyme: Fäden, Stränge, Leichtgewichtprozesse, Light Weight Processes (LWP).
Grungidee: Die gesamte Rechenarbeit eines Prozesses wird auf mehrere Aktivitäten geteilt, welche parallel ablaufen können.
Prozess mit einem Thread
Prozess mit mehreren Threads
CategoryBSys