Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads.

Ähnliche Präsentationen


Präsentation zum Thema: "RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads."—  Präsentation transkript:

1 RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads

2 RW-SystemarchitekturKap. 7 Zerlegung von Aufgaben in Teilaufgaben Ein 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.

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

4 RW-SystemarchitekturKap. 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

5 RW-SystemarchitekturKap. 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!

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

7 RW-SystemarchitekturKap. 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.

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

9 RW-SystemarchitekturKap. 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.

10 RW-SystemarchitekturKap. 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

11 RW-SystemarchitekturKap. 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

12 RW-SystemarchitekturKap. 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

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

14 RW-SystemarchitekturKap. 7 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.

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

16 RW-SystemarchitekturKap. 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

17 RW-SystemarchitekturKap. 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

18 RW-SystemarchitekturKap. 7 Prozess-Terminieren Bedingungen zur Terminierung eines Prozesses Normales Ende (freiwillig) Fehlerausgang (freiwillig) Terminierender Fehler (fatal error) (unfreiwillig) Von einem anderen Prozess terminiert (unfreiwillig)

19 RW-SystemarchitekturKap. 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

20 RW-SystemarchitekturKap. 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:

21 RW-SystemarchitekturKap. 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

22 RW-SystemarchitekturKap. 7 Prozesszustände (3) terminiertaktivbereitneu Zulassung Zuteilung Timeout Freigabe blockiert Warte auf Ereignis Ereignis tritt ein

23 RW-SystemarchitekturKap. 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

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

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

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

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

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

29 RW-SystemarchitekturKap. 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

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

31 RW-SystemarchitekturKap. 7 Prozesse Die Adressräume verschiedener Prozesse sind –getrennt und –geschützt gegen den Zugriff anderer Prozesse –Kommunikation zwischen Prozessen über Nachrichten/Signale

32 RW-SystemarchitekturKap. 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.


Herunterladen ppt "RW-SystemarchitekturKap. 7 Kapitel 7 Prozesse und Threads."

Ähnliche Präsentationen


Google-Anzeigen