Version [22400]
Dies ist eine alte Version von BSys03ProzesseThreads erstellt von RonnyGertler am 2013-03-26 15:46:57.
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
Beispiel
Ein Textsystem (z.B. Microsoft Word) lässt sich effizient mittels vier Threads parallelisieren:
1) Text eingeben,
2) Rechtschreibung prüfen ,
3) Zeilen-/Seitenumbruch gestalten,
4) periodisch Sicherheitskopie auf der Platte anlegen.
Thread-Modell
1) Ein Thread ist eine Ausführung eines Programmteils.
2) Jeder Thread gehört zu einem bestimmten Prozess.
3) Jeder Prozess enthält implizit mindestens einen Thread.
4) Jeder Prozess kann beliebig viele Threads generieren.
5) Alle Threads eines Prozesses können parallel (pseudoparallel) ausgeführt werden.
7) Thread besitzt einen eigenen Registersatz und eigenen Stack.
8) Alle Threads eines Prozesses haben eine gemeinsame Prozessumgebung, z.B. gleicher Adressraum, gleiche geöffnete Dateien usw.
9) Jeder Thread ist gegenüber anderen Threads dieses Prozesses nicht geschützt.
Trennung von Ressourcenverwaltung und Prozessorverwaltung
Die Ressourcen werden zwischen dem Prozess und den Threads aufgeteilt:
1) Ein Prozess besitzt alle Ressourcen außer Register und Stack.
2) Jeder Thread besitzt einen eigenen Registersatz und eigenen Stack. Die CPU wird nicht dem Prozess sondern den Threads zugeteilt.
3) Prozess besitzt die Ressourcen, Thread führt den Code aus.
TCB
Ein Thread-Kontext wird im so genannten Thread-Controll-Block (TCB) zusammengestellt:
1) Thread-Identification,
2) Thread-Zustand (aktiv, rechenbereit, blockiert),
3) Priorität für das Scheduling,
4) Register-Inhalte,
5) Zeiger auf PCB, usw.
Ein PCB enthält dann keine Register-Inhalte und wird entsprechend reduziert.
Erzeugung und Terminierung des Threads
1) Wird ein Prozess erzeugt, so stellt dieser eine Ausführungsumgebung für Threads zur Verfügung. Der Code des Prozesses wird durch einen Thread (primary thread) ausgeführt, der automatisch zusammen mit dem Prozess erzeugt wird.
Jeder Thread kann weitere Threads erzeugen, die zum gleichen Prozess gehören.
2) Jeder Thread kann sich selbst beenden oder von anderem Thread terminiert werden. Wird primary thread terminiert, wird gesamter Prozess beendet.
Bei der Prozessterminierung werden alle seine Threads auch terminiert.
⇒ Demo 4.
⇒ Demo 5.
Vorteile und Nachteile von Threads
1) Erzeugen, Terminieren, Kommunikation, Kontextwechsel von Threads sind wesentlich schneller als bei Prozessen. Daher kommt der Begriff Leichtgewichtige-Prozesse.
2) Besoders oft findet der Kontextwechsel statt. Ein Thread-Kontextwechsel ist ungefähr 100-mal schneller als ein Prozess-Kontextwechsel.
Schritte beim Kontextwechsel | Prozesswechsel | Threadwechsel |
TCB austauschen | + | + |
Speicherverwaltungstabelle ändern | + | - |
Speicherbereiche ersetzen | + | - |
Entleeren und Neuladen des Cache | + | - |
CategoryBSys