30
RW- Systemarchitektur Kap. 7 Kapitel 7 Prozesse und Threads

RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

Embed Size (px)

Citation preview

Page 1: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Kapitel 7Prozesse und Threads

Page 2: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Zerlegung von Aufgaben in TeilaufgabenEin natürliches Vorgehen zur Problemlösung:1. Die Zerlegung einer Gesamtaufgabe in Teilaufgaben, 2. das Realisieren von Lösungen für die Teilprobleme und 3. das Zusammenfügungen der Teillösungen zu einer Gesamtlösung.• Betriebssysteme (und Programmiersprachen) bieten Konzepte für

dieses strukturierte Vorgehen an:– Prozesse und Threads als aktive Komponenten von Systemen,– Interprozesskommunikation für die Kooperation zwischen

Prozessen/Threads.

• Prozesse und Threads sind elementare Komponenten einer Zerlegung.

• Beide haben sequentiellem Steuerfluss (control flow),• sie können aber dynamisch weitere Prozesse bzw. Threads

kreieren.

Page 3: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Wesentlicher Unterschied zwischen Prozessen und Threads

• Prozesse haben einen eigenen Adressraum,

• Threads haben keinen eigenen Adressraum.

Kern

Benutzer

P3 P2 P1

Adressräume Prozesses

Kern

Benutzer P

Ein Prozess mit seinem Adressraum und drei Threads

Page 4: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Beispiel für Kooperation von Prozessen

• cat datei1 datei2 datei3 | grep Baum• Ein Prozess konkateniert die Dateien datei1, datei2 und datei3 und

schickt das Ergebnis durch eine Pipe an

• einen zweiten Prozess, der mittels grep nach Vorkommen von „Baum“ sucht.

• ls -l • ls -l | grep ^d • ls -l | grep ^d | wc -l • echo `ls -l | grep ^d | wc -l` Files

Page 5: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Beispiel für Threads

Textverarbeitung eines großen Dokuments:

• Änderungen implizieren Reformatierung

• Benutzer kommuniziert mit Textverarbeitung - 1 Thread– viel Ein-/Ausgabe– wartet häufig auf Benutzer

• Reformatierung des Dokuments - 1 Thread (im Hintergrund)– wird angestoßen, wenn Änderung erfolgt.

• Kooperation verkürzt die Erstellung der Sicht auf das reformatierte Dokument.

• Evtl. dritter Thread, der periodisch den aktuellen Stand des Dokuments zurück schreibt.

• Wesentlich: alle Threads arbeiten im gleichen Adressraum!

Page 6: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Drei kooperative Threads bei der Textverarbeitung

Thread1

Thread3

ReformatierungThread2

Page 7: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Threads und Prozesse

Prozesses können in ihrem Adressraum Threads starten.Ein Thread kann per fork einen Prozess starten, der mit einer Kopie des Adressraums arbeitet.

Page 8: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Zerlegung in Teilaufgaben (ctd.)

Gute Zerlegung -- geringe Abhängigkeiten zwischen Teilprozessen – großer Freiheitsgrad der Ausführung der Teilprozesse (für

Betriebssystem-Scheduler),– Wartezeiten auf Ein- / Ausgaben werden automatisch durch andere

Prozesse genutzt– gute Ausnutzung der Maschinen-Ressourcen

Page 9: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozesse

Prozesse sind „Programme in Ausführung“.

Verschiedene Sichten:

• Für das Betriebssystem: zu verwaltende Aktivität

• Für den Entwickler eines Systems: Strukturierungskonzept – Die Durchführung einer einzigen Aufgabe lässt sich in relativ unabhängige Teilaufgaben zerlegen - ein Prozess für jede Teilaufgabe

• Für den Rechnerbetreiber: Pseudo-parallele Ausführung mehrerer Prozesse – effizientere Nutzung der Ressourcen

Page 10: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Pseudo-parallele Ausführung

• In Multitasking-Betriebssystemen können mehrere Prozesse „pseudo-parallel“ ausgeführt werden.– Auf Ein-Prozessor-Maschinen natürlich nicht wirklich parallel,– aber abwechselnd - Zuteilung von Prozessor und anderen

Betriebsmitteln durch Betriebssystem,– Betriebsmittel werden virtualisiert, jeder Prozess scheint die

notwendigen Betriebsmittel zu besitzen

Page 11: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Multitasking

– Getrennte Ausführung:

Task 1

Task 2

Task 3

– Pseudo-parallele Ausführung:

Page 12: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

ProzesseProzesse = “Programme in Ausführung”• Zu jedem Prozess gehört ein Adressraum - Folge von konsekutiven

Speicherzellen von einer minimalen bis zu einer maximalen Adresse - Enthält– Ausführbares Programm

– Programmdaten

– Laufzeitkeller (“Stack”)

• Zusätzliche Prozessinformationen:– Inhalt von Prozessorregistern (Programmzähler, allgemeine Register,

Akkumulator, Stack Pointer)

– Verwaltungsinformationen zu geöffneten Dateien

– …

• Diese Informationen sind in einer sog. Prozesstabelle gespeichert.

Page 13: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Implementierung von Prozessen

Felder eines Eintrags in der Prozesstabelle

Page 14: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozessverwaltung

Betriebssystem

• kreiert Prozesse, bildet evtl. Prozesshierarchien,

• terminiert Prozesse,

• schaltet um zwischen Prozessen,

• verwaltet Prozessbeschreibungen.

Prozesse können im Vordergrund oder im Hintergrund laufen.

• Benutzerprozesse laufen im Vordergrund,

• Hintergrundprozesse (in UNIX daemons) sind nicht assoziiert mit Benutzern, z.B. Server, die Anfragen bearbeiten, siehe Windows Task Manager, UNIX ps-Kommando

Page 15: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozess-Kreieren

Auslöser für das Kreieren eines Prozesses

• Systeminitialisierung

• Aufrufs eines Systemdienstes zur Prozesskreation, – z.B. Prozess kreiert Kindprozess zur Arbeitsaufteilung,

• Benutzerauftrag zur Prozesskreation,• z.B. durch Kommandozeilen-Eingabe oder Klicken auf Icon,• evtl. verbunden mit Öffnen eines Fensters,

• Start eines Stapeljobs

In jedem Fall: Prozesskreation durch den Aufruf eines Systemdienstes,

in UNIX durch fork: kreiert eine Kopie des aufrufenden Prozesses

Page 16: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozess-Terminieren

• Bedingungen zur Terminierung eines Prozesses

• Normales Ende (freiwillig)

• Fehlerausgang (freiwillig)

• Terminierender Fehler (fatal error) (unfreiwillig)

• Von einem anderen Prozess terminiert (unfreiwillig)

Page 17: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozesshierarchien

• Vater-Prozess kreiert einen Kind-Process, Kinder-Prozesse können ihre eigenen Kinder-Prozesse kreieren

• Ergibt eine baumartige Hierarchie– UNIX “Prozess Gruppe"

• Windows kennt das Konzept Prozesshierarchie nicht– alle Prozesse auf gleicher Ebene

Page 18: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozesszustände

• cat datei1 datei2 datei3 | grep Baum• grep-Prozess hat nicht immer Eingabe (wenn cat-Prozess nicht

schnell genug produziert).

• ist in einem Zustand, dass er laufen könnte, aber ihm Eingabe fehlt,

• wird blockiert, bis Eingabe eintrifft.

• Anderer Zustand, wenn Prozess bereit ist, ihm aber der Prozessor vom BS entzogen wurde.

Dies drückt sich im Zustand eines Prozesses aus:

Page 19: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozesszustände (2)

Modell mit 5 Zuständen:

• Neu: Prozess wurde erzeugt, ist aber noch nicht gestartet

• Bereit: Rechenbereit, aber Prozessor ist diesem Prozess nicht zugeteilt.

• Aktiv: CPU ist dem Prozess zugeteilt.

• Blockiert: Nicht in der Lage weiterzuarbeiten, wartet auf ein Event (z.B. E/A)

• Terminiert

Page 20: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozesszustände (3)

terminiertaktivbereitneuZulassung

Zuteilung

Timeout

Freigabe

blockiert

Warte auf Ereignis

Ereignis tritt ein

Page 21: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozesswechsel

• Prozesswechsel (Context Switch) - Wechsel von der Ausführung eines Prozesses zu der Ausführung eines anderen

• Dispatcher: Teil des Betriebssystems, der Prozesswechsel durchführt

• Scheduler: Teil des BS, der Prozessen die CPU zuweist• Unterscheidung präemptive / nicht-präemptive Scheduler:

– Nicht-präemptive Scheduler - Prozesse geben Prozessor selbst ab wegen

• Terminierung• Warten auf Abschluss einer Ein- / Ausgabeoperation• Warten auf Zuteilung eines Betriebsmittels• Bsp.: MS-DOS

– Präemptive Scheduler - Neuzuteilung des Prozessors in regelmäßigen Zeitintervallen vom Betriebssystem erzwungen

• Bsp.: UNIX, LINUX, neuere Windows-Versionen

Page 22: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Dat

en

Pro

zess

1

ProzesswechselHauptspeicher

Co

de

Pro

zess

1

Co

de

Pro

zess

2

Dat

en

Pro

zess

2

Act

iv.

rec.

P

roze

ss 1

Act

iv.

rec.

P

roze

ss 2

Prozesstabelle

CPU

PC

Sta

ck p

oin

ter

Reg

iste

r

Schritt 1:Prozess 1 wird ausgeführt.

Page 23: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Dat

en

Pro

zess

1

ProzesswechselHauptspeicher

Co

de

Pro

zess

1

Co

de

Pro

zess

2

Dat

en

Pro

zess

2

Act

iv.

rec.

P

roze

ss 1

Act

iv.

rec.

P

roze

ss 2

Prozesstabelle

PC

Sta

ck p

oin

ter

Reg

iste

r

Schritt 2:Activation record von Prozess 1 wird in Prozesstabelle geschrieben.

CPU

Page 24: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Dat

en

Pro

zess

1

ProzesswechselHauptspeicher

Co

de

Pro

zess

1

Co

de

Pro

zess

2

Dat

en

Pro

zess

2

Act

iv.

rec.

P

roze

ss 1

Act

iv.

rec.

P

roze

ss 2

Prozesstabelle

PC

Sta

ck p

oin

ter

Reg

iste

r

Schritt 3:Activation record von Prozess 2 wird aus der Prozesstabelle geladen.

CPU

Page 25: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Dat

en

Pro

zess

1

ProzesswechselHauptspeicher

Co

de

Pro

zess

1

Co

de

Pro

zess

2

Dat

en

Pro

zess

2

Act

iv.

rec.

P

roze

ss 1

Act

iv.

rec.

P

roze

ss 2

Prozesstabelle

PC

Sta

ck p

oin

ter

Reg

iste

r

Schritt 4:Prozess 2 wird ausgeführt.

CPU

Page 26: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Warteschlangen wartender Prozesse

Prozessor

Bereit-Warteschlange

Warteschlange Ereignis 1

Warteschlange Ereignis n

Zulassung ZuteilungFreigabe

Timeout

Warten auf Ereignis 1

Warten auf Ereignis n

Ereignis 1 tritt ein

Ereignis n tritt ein

Page 27: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Swapping

• Swapping bzw. Auslagern:– Prozesse werden aus dem Hauptspeicher entfernt – Daten werden komplett auf Festplatte ausgelagert.

• Grund: Hauptspeicher wird für andere Prozesse benötigt.• Aber: Swapping verursacht Kosten (Laufzeit)!• Neue Prozesszustände - Kombinationen aus

– Bereit / blockiert und– Ausgelagert / nicht ausgelagert

• Alternative: Virtueller Speicher mit– Paging und/oder– Segmentierung

Page 28: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozesszustände

terminiertaktivbereitbereit /ausgel.

Zulassung

Zuteilung

Timeout

Freigabe

blockiert

Warte auf Ereignis

Ereignis tritt ein

neu

block. /ausgel.

Zulassung

aktivieren

auslagern

aktivieren

auslagern

Ereignis tritt ein

auslagern

Page 29: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Prozesse

• Die Adressräume verschiedener Prozesse sind– getrennt und– geschützt gegen den Zugriff anderer Prozesse– Kommunikation zwischen Prozessen über Nachrichten/Signale

Page 30: RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

RW-Systemarchitektur Kap. 7

Fäden (Threads)

Kooperative Erledigung einer Aufgabe auf gemeinsamen Daten – Strukturierung in Menge zusammen arbeitender sequentieller Threads

Threads sind „leichtgewichtige Prozesse“• mit gemeinsamem Adressraum,• aber eigenem Keller, eigene Register, eigenen Zustand!• kein gegenseitiger Schutz,• Kommunikation über gemeinsame Variablen.• weniger Aufwand für Kreation, Löschung, Umschaltung im

Vergleich zu (schwergewichtigen) Prozessen – gut für Anwendungen mit dynamisch kreierten und terminierten Threads

• Leistungsgewinn, wenn manche Threads Ein-/Ausgabe machen und andere rechnen.