Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Kapitel 7 Prozesse und Threads

Ähnliche Präsentationen


Präsentation zum Thema: "Kapitel 7 Prozesse und Threads"—  Präsentation transkript:

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

2 Zerlegung von Aufgaben in Teilaufgaben
Ein natürliches Vorgehen zur Problemlösung: Die Zerlegung einer Gesamtaufgabe in Teilaufgaben, das Realisieren von Lösungen für die Teilprobleme und 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

3 Wesentlicher Unterschied zwischen Prozessen und Threads
Prozesse haben einen eigenen Adressraum, Threads haben keinen eigenen Adressraum. Ein Prozess mit seinem Adressraum und drei Threads Adressräume Prozesses Benutzer Benutzer P P3 P2 P1 Kern Kern RW-Systemarchitektur Kap. 7

4 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

5 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

6 Drei kooperative Threads bei der Textverarbeitung
Reformatierung Thread2 Thread3 Thread1 RW-Systemarchitektur Kap. 7

7 Beispiel für Threads Ein Webserver mit mehreren Threads
Dispatcher-Thread empfängt einkommende Anfragen aus dem Netz, weckt schlafenden Worker-Thread auf, um Anfrage zu bearbeiten. Worker-Thread prüft Verfügbarkeit der verlangten Seit im Cache. Wenn nicht verfügbar, startet Leseoperation von Platte und blockiert bis zur Vollendung der Leseoperation. Bereiter Thread wird zur Ausführung ausgewählt. RW-Systemarchitektur Kap. 7

8 Code für Webserver-Threads
(a) Dispatcher-Thread (b) Worker-Thread RW-Systemarchitektur Kap. 7

9 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

10 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

11 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

12 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

13 Multitasking Getrennte Ausführung: Task 1 Task 2 Task 3
Pseudo-parallele Ausführung: RW-Systemarchitektur Kap. 7

14 Prozesse Prozesse = “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

15 Implementierung von Prozessen
Felder eines Eintrags in der Prozesstabelle RW-Systemarchitektur Kap. 7

16 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

17 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

18 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

19 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

20 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

21 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

22 Prozesszustände (3) terminiert aktiv bereit neu blockiert Zulassung
Zuteilung Timeout Freigabe blockiert Warte auf Ereignis Ereignis tritt ein RW-Systemarchitektur Kap. 7

23 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

24 Prozesswechsel Hauptspeicher Code Prozess 1 Code Prozess 2
Activ. rec. Prozess 1 Activ. rec. Prozess 2 Daten Prozess 1 Daten Prozess 2 Prozesstabelle CPU PC Register Stack pointer Schritt 1: Prozess 1 wird ausgeführt. RW-Systemarchitektur Kap. 7

25 Prozesswechsel Hauptspeicher Code Prozess 1 Code Prozess 2
Activ. rec. Prozess 1 Activ. rec. Prozess 2 Daten Prozess 1 Daten Prozess 2 Prozesstabelle CPU PC Register Stack pointer Schritt 2: Activation record von Prozess 1 wird in Prozesstabelle geschrieben. RW-Systemarchitektur Kap. 7

26 Prozesswechsel Hauptspeicher Code Prozess 1 Code Prozess 2
Activ. rec. Prozess 1 Activ. rec. Prozess 2 Daten Prozess 1 Daten Prozess 2 Prozesstabelle CPU PC Register Stack pointer Schritt 3: Activation record von Prozess 2 wird aus der Prozesstabelle geladen. RW-Systemarchitektur Kap. 7

27 Prozesswechsel Hauptspeicher Code Prozess 1 Code Prozess 2
Activ. rec. Prozess 1 Activ. rec. Prozess 2 Daten Prozess 1 Daten Prozess 2 Prozesstabelle CPU PC Register Stack pointer Schritt 4: Prozess 2 wird ausgeführt. RW-Systemarchitektur Kap. 7

28 Warteschlangen wartender Prozesse
Bereit-Warteschlange Freigabe Zulassung Zuteilung Prozessor Timeout Warteschlange Ereignis 1 Ereignis 1 tritt ein Warten auf Ereignis 1 Warteschlange Ereignis n Ereignis n tritt ein Warten auf Ereignis n RW-Systemarchitektur Kap. 7

29 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

30 Prozesszustände terminiert aktiv bereit bereit / ausgel. blockiert neu
Zulassung Zuteilung Timeout Freigabe blockiert Warte auf Ereignis Ereignis tritt ein neu block. / ausgel. aktivieren auslagern RW-Systemarchitektur Kap. 7

31 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

32 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. RW-Systemarchitektur Kap. 7


Herunterladen ppt "Kapitel 7 Prozesse und Threads"

Ähnliche Präsentationen


Google-Anzeigen