Wissensdatenbank Wirtschaftsrecht

aktuelles Dokument:
BSys03ProzesseThreads
image5
image4
image3
image2
image1
 Alle Kategorien:
  Forschungsdatenbank
  Lehrveranstaltungen
  Lexikon
  Literatur
  Rechtsgebiete
  Rechtsprechung
  Service
  Studium F H S
  Wissensmanagement
ich war hier: BSys03ProzesseThreads
 (image: http://wdb.fh-sm.de/uploads/QualipaktLehre/BMBF_Logo_klein.jpg)

Betriebssysteme (Betriebssystemtheorie) - Kapitel 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:
  1. CPU,
  2. Arbeitsspeicher,
  3. andere Ressourcen: offene Dateien, Konsolen, Netzwerkverbindungen usw.

4) Ein Prozess-Kontext ist eine ausführliche Beschreibung des Prozesses:
  1. Registerinhalte,
  2. Adressraumbeschreibung,
  3. Beschreibung der zugeordneten Ressourcen,
  4. Betriebssysteminterne Verwaltungsdaten.

5) Ein Programm ist eine Verfahrensvorschrift für die Datenverarbeitung.
  1. Ein Programm ist ein Teil der Prozessumgebung.
  2. Ein bestimmtes Programm kann von mehreren Prozessen ausgeführt werden.

6) Ein Job (Session, Anwendung) ist ein Benutzerauftrag an das Betriebssystem.
  1. Ein Job kann aus einem oder mehreren Prozessen bestehen.
  2. 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.

2) Die Prozesstabelle wird vom BS zur Verwaltung von Prozessen geführt und enthält PCB von allen Prozessen.
Sie kann auch als Liste implementiert werden.


Typische Informationen in einem PCB


1. Register-Inhalte:
  1. PC - Program Counter,
  2. PSW - Program Status Word,
  3. SP - Stack Pointer,
  4. allgemeine Register.

2. Informationen für die Speichermanagement:
  1. Seitentabelle-Adresse,
  2. Basisregister-Inhalte,
  3. Grenzregister-Inhalte,
  4. Adressen auf Code-, Daten- und Stack-Segmente des Prozesses, usw.

3. Beschreibung der zugeordneten Betriebsmittel:
  1. Informationen für die Dateiverwaltung: Dateideskriptoren, Home-Verzeichnis, Arbeitsverzeichnis usw.
  2. Netzwerkverbindungen,
  3. allozierte Geräte usw.

4. Betriebssysteminterne Prozessverwaltungsdaten:
  1. Prozess-Nummer (PID-Process IDentification)
  2. Prozesszustand, z.B. aktiv, bereit, blockiert,
  3. Priorität für das Scheduling,
  4. verbrauchte Prozessorzeit seit dem Start,
  5. 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:
  1. der suspendierte Prozess, der vor der Unterbrechung aktiv war, und
  2. der aktivierte Prozess, der vor der Unterbrechung unaktiv war. Der aktivierte Prozess wurde vom Scheduler ausgewählt.

Am Prozesswechsel sind zwei Ressourcen beteiligt:
  1. CPU-Register und
  2. 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.
  1. Der Unterbrechungskontext wird aus dem Stack im PCB gesichert.
  2. Andere Registerinhalte werden aus der CPU im PCB gesichert.
Analogie: Schnappschuss.

(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:
  1. beim Systemstart, z.B. Leerlaufprozess,
  2. durch Benutzeranforderung, z.B. cmd- Konsole,
  3. durch Systemaufruf im laufenden Prozess, z.B. fork in UNIX oder CreateProcess in Windows,
  4. durch Systemaufruf für Stapelauftrag, z.B. batch job.

Es gibt einige Möglichkeiten einen Prozess zu terminieren:
  1. freiwillige Beendigung durch Systemaufruf , z.B. exit in UNIX oder ExitProzess in Windows;
  2. unfreiwillige Beendigung durch das System wegen den Fehler, z.B. trap;
  3. 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.:
  1. Ablauf einer Zeitspanne, welche der Prozess selbst beauftragt hat, z.B. sleep,
  2. Zuteilung eines Betriebsmittels außer CPU,
  3. Meldung von einem anderen Prozess.

In konkreten Betriebssystemen sind auch weitere Prozesszustände möglich.

 (image: http://wdb.fh-sm.de/uploads/BSys03ProzesseThreads/BSys12.gif)

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
 (image: http://wdb.fh-sm.de/uploads/BSys03ProzesseThreads/BSys13.gif)

Prozess mit mehreren Threads
 (image: http://wdb.fh-sm.de/uploads/BSys03ProzesseThreads/BSys14.gif)


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.

Alle vier Vorgänge arbeiten mit einem Textdokument gemeinsam.


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.

6) Thread besitzt Zustände (aktiv, rechenbereit, blockiert).

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 + -


3) Threads sind nicht voneinander geschützt und müssen durch Programmierer synchronisiert werden.


Multi-Threading


Multi-Threading ist eine Betriebsart mit mehreren Thread pro Prozess.

Beispiele:

Single-Thread- Systeme Multi-Thread- Systeme
Ein -Prozess- System MS-DOS Java-Runtime-System, z.B. JDK-Version 1.6
Multitasking Ältere UNIX- Varianten Windows XP, Solaris, Modernes UNIX



Thread-Formen


1) Kernel-Level-Threads (KL-Threads) werden vom Betriebssystem verwaltet.

2) User-Level-Threads (UL-Threads, Benutzer-Threads) werden vom Prozess verwaltet. Die Existenz von UL-Threads ist dem Betriebssystem nicht bekannt.
  1. Vorteil: Die UL-Threads können schneller umgeschaltet werden. Bei der Zeitmessung für ein VAX-UNIX-System haben sich z.B. folgende Verhältnisse ergeben: ULTh / KLTh / Prozesse = 1 / 10 / 40.
  1. Nachteil: Wenn ein UL-Thread blockeit wird (z.B. wegen I/O), dann sind alle UL-Threads des Prozesses auch blockiert.
  1. Beispiel: Fibers von Windows.


Java-Threads


1) Java ist eine Multithreading -Sprache.

2) Java-Threads erhalten der CPU durch die JVM zugeteilt.
JVM (Java Virtual Maschine) ist das Laufzeitsystem für
Java-Programme.

3)Formen der Java-Threads:
  1. UL-Threads, (Green Threads), z.B. JDK-Version 1.2 für Linux,
  1. KL-Threads, (native Threads), z.B. Windows NT/2000/XP.

⇒Demo 6
⇒Demo 7



CategoryBSys
Diese Seite wurde noch nicht kommentiert.
Valid XHTML   |   Valid CSS:   |   Powered by WikkaWiki