Upload
fester-gehl
View
108
Download
1
Embed Size (px)
Citation preview
RW-Systemarchitektur Kap. 7
Kapitel 7Prozesse 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.
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
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
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!
RW-Systemarchitektur Kap. 7
Drei kooperative Threads bei der Textverarbeitung
Thread1
Thread3
ReformatierungThread2
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.
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
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
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
RW-Systemarchitektur Kap. 7
Multitasking
– Getrennte Ausführung:
Task 1
Task 2
Task 3
– Pseudo-parallele Ausführung:
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.
RW-Systemarchitektur Kap. 7
Implementierung von Prozessen
Felder eines Eintrags in der Prozesstabelle
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
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
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)
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
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:
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
RW-Systemarchitektur Kap. 7
Prozesszustände (3)
terminiertaktivbereitneuZulassung
Zuteilung
Timeout
Freigabe
blockiert
Warte auf Ereignis
Ereignis tritt ein
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
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.
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
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
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
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
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
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
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
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.