Vorlesung Betriebssysteme 3. ?· Unter Linux werden alle lauffähigen Prozesses in einer runqueue ...…

Embed Size (px)

Text of Vorlesung Betriebssysteme 3. ?· Unter Linux werden alle lauffähigen Prozesses in einer runqueue...

  • 1Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    Vorlesung Betriebssysteme3. Prozesse

  • 2Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    bersicht

    1. Ziel diese Kapitels2. Prozessmodell3. Systemaufrufe fr Prozesse4. Threads5. Scheduling6. Scheduling mit besonderen Zielen

  • 3Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    1. Ziel dieses KapitelsEin Prozess kann als die Abstraktion eines Programms, das von einem Prozessor ausgefhrt wird, angesehen werden. Hier wird behandelt, was Prozesse sind und wie sie in Betriebssystemen implementiert werden, inklusive Scheduling.

    Relevante Abschnitte im Buch [1] Abschnitte 1.5.1 und 1.6 Abschnitte 2.1, 2.2 und 2.5 Abschnitt 8.1.4

    Zustzlich: Real-Time Scheduling

    Literatur-Hinweise:[2] Albrecht Achilles: Betriebssysteme, Springer[3] Wolfgang Mauerer: LINUX Kernelarchitektur - Konzepte, Strukturen und

    Algorithmen von Kernel 2.6, Hanser

  • 4Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. ProzessmodellUm zu verstehen, wie unterschiedliche Aktivitten scheinbar gleichzeitig ablaufen, braucht man ein Modell eines ablaufenden Programms.Ein (sequentieller) Prozess ist ein sich in Ausfhrung befindendes (sequentielles) Programm zusammen mit:

    dem aktuellen Wert des Programmzhler, den Registerinhalten, den Werten der Variablen, dem Stack und dem Zustand der geffneten Dateien und Netzverbindungen. den Programmdaten Speicherinformationen

    Konzeptionell besitzt jeder Prozess seinen eigenen Prozessor - in der Praxis wird aber immer der reale Prozessor zwischen den Prozessen hin- und hergeschaltet. Da dies die Illusion erweckt, dass die Prozesse gleichzeitig ablaufen, spricht man auch von Quasi-Parallelitt.

  • 5Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. ProzessmodellBeim Mehrprogrammbetrieb mit 4 Programmen (A,B,C,D) ergeben sich damit folgende Sichtweisen:

    Ein Scheduling-Algorithmus entscheidet, wann die Arbeit eines Prozesses unterbrochen und ein anderer Prozess bedient wird.

    real ist zu jedem Zeitpunkt nur ein sequentielles

    Programm aktivD

    C

    B

    A

    DCA

    ein HW Programm-zhler A

    C B

    Konzeptionell4 Programmzhler:

    4 unabhngige Prozesse

    B

    Arbeitsspeicher mit 4 Programmen

    D

  • 6Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. Prozessmodell2.1 Erzeugen & Beenden

    Es gibt vier Mglichkeiten, einen Prozess zu erzeugen:1. Beim Systemstart (Initialisierung)2. Durch einen anderen Prozess (Systemaufruf z.B. fork)3. Interaktiv durch den Benutzer4. Per Stapelverarbeitung (Batch Job)

    Analog dazu knnen Prozesse beendet werden durch:5. Normales Beenden (freiwillig)6. Aufgrund eines Fehlers (freiwillig)7. Aufgrund eines schweren Fehlers (unfreiwillig)8. Durch einen anderen Prozess (unfreiwillig)

  • 7Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. ProzessmodellProzess-Hierarchie Durch das Erzeugen von neuen Prozessen (Kindern), ausgehend von einem

    Erzeuger-Prozess (Vater), entsteht eine Baumstruktur von Prozessen. Dabei ist es in vielen Fllen nicht erforderlich, dass der Vater auf das Terminieren der Kinder wartet, z.B. wenn eine Suchanfrage ber das Internet gestellt wird und die Antwort lange auf sich warten lsst.

    Beispiel fr einen Baum:

    a

    b c

    d e f g

    h i j

  • 8Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. Prozessmodell2.3 ProzesszustndeEine Aufgabe des Betriebssystems ist das Multiplexen des physischen Prozessors. Diese Aufgabe bernimmt der Scheduler zusammen mit dem Dispatcher.

    Prozesse knnen sich in verschiedenen Zustnden befinden. Diese Zustnde bilden eine Entscheidungsgrundlage fr die Auswahl eines geeigneten Kandidaten bei einem Prozesswechsel:

    1. rechnend (running)der Prozessor ist dem Prozess zugeteilt

    2. bereit (ready)der Prozess ist ausfhrbar, aber ein anderer Prozess ist gerade rechnend

    3. blockiert (waiting)der Prozess kann nicht ausgefhrt werden, da er auf ein externes Ereignis wartet (z.B. liegen bestimmte Eingabedaten noch nicht vor).

  • 9Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. ProzessmodellDabei knnen folgende Zustandsbergnge auftreten:

    rechnend

    blockiert bereit

    1: Prozess wartet auf externes Ereignis2: Scheduler whlt anderen Prozess aus, da die Zeitscheibe des Prozesses abgelaufen ist3: Scheduler whlt diesen Prozess aus4: externes Ereignis ist eingetreten5: ein neuer Prozess wird erzeugt6: der Prozess terminiert

    12

    3

    4

    6

    5

  • 10Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. ProzessmodellIn der Praxis jedoch werden die Zustnde feiner unterteilt, so dass auch durchaus zwischen mehr Zustnden unterschieden wird (z.B. der theoretische Zustand blockiert (Wartezustand) kann in einem realen Betriebssystem durch zwei Zustnde, nmlich warten_auf_ein_Zeitereignis und warten_auf_Ein/Ausgabe abgebildet sein).Linux kennt insgesamt 5 Prozesszustnde:1. TASK_RUNNING

    Unter Linux werden alle lauffhigen Prozesses in einer runqueue genannten Liste eingehngt. Aus dieser Liste whlt der Scheduler den nchsten aktiven Rechenprozess aus (damit entspricht der Zustand TASK_RUNNING dem oben erwhnten Zustand bereit).

    2. TASK_INTERRUPTIBLEIn diesem Wartezustand kann der Prozess durch Signale oder durch das Ablaufen eines Timers unterbrochen und wieder in den Zustand TASK_RUNNING berfhrt werden.

  • 11Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. Prozessmodell3. TASK_UNINTERRUPTIBLE

    Dies ist ebenfalls ein Wartezustand. Im Unterschied zu TASK_INTERRUPTIBLE kann der Task jedoch nur durch ein wake_up wieder in den Zustand TASK_RUNNING berfhrt werden.

    4. TASK_ZOMBIEDer Task mit diesem Zustand gilt zwar als beendet, aber der zugehrige Vater-Prozess hat bisher noch nicht den Prozess-Status abgeholt.

    5. TASK_STOPPEDDer Task wurde angehalten, entweder durch ein entsprechendes Signal oder durch ptrace. Der Systemcall ptrace ermglicht einem Vater-Prozess das Debugging des Kind-Prozesses.

  • 12Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. ProzessmodellUnter Linux existiert der Zustand rechnend nicht explizit. Der Zustand

    bereit ist unter Linux der Zustand RUNNING, der Zustand blockiert wird ber INTERRUPTIBLE und

    UNINTERRUPTIBLE abgebildet. Die Zustnde ZOMBIE und STOPPED beschreiben, dass ein Prozess

    nicht (mehr) aktiv ist.Folgende Prozessbergnge sind mglich:

    running

    uninterruptibleinterruptiblestopped zombie

    current

    fork/clone

    exitexit

    wait

    sleepsleep

    wakeupwakeupsignal

    scheduler

  • 13Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. Prozessmodell2.4 Implementierung von Prozessen

    Das o.g. Prozessmodell wird in einem Betriebssystem durch eine Prozesstabelle realisiert, die fr jeden Prozess einen Eintrag (Process Control Block (PCB)) enthlt. Der PCB stellt alle Informationen bereit, die fr den Ablauf eines Prozesses notwendig sind.

    Je nach Betriebssystem variieren diese Felder. In Unix kann man sich einige der Felder der Prozesstabelle mit dem Shell-Kommando ps ansehen:

    $ ps -o "%p %r %c %x %t %G %P %U %z" PID PGID COMMAND TIME ELAPSED GROUP PPID USER VSZ 4334 4334 bash 00:00:00 05:59:24 users 4325 peter 401214103 14103 ps 00:00:00 49710-06:28:08 users 4334 peter 2160$

  • 14Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. ProzessmodellBeispiel: Unter Linux werden Prozesse mithilfe der Struktur task_struct verwaltet (definiert in /usr/src/linux-headers-/include/linux/sched.h). Die ca. 80 Eintrge beinhalten Information ber [2, 3]:

    Identitt (PID), Zeiger auf Eltern und andere verwandte Prozesse Priorittskennzahlen, Zeit (z.B. Rechenzeit) den belegten Speicher den Prozess-Status Benutzer- und Gruppenkennzahlen, Ausfhrungsrechte verwendete Dateien anstehende Signale verwendetes Binrformat enthaltene Threads Beschrnkung bzgl. Ressourcen-Verbrauch (struct rlimit)

  • 15Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    2. ProzessmodellBei einem Prozesswechsel (Context Switch) muss vorbereitet werden, einen Prozess spter wieder anlaufen lassen zu knnen, wenn er einmal suspendiert wurde. Dabei werden in der Regel recht komplexe Vorgnge in Gang gesetzt, die dafr zu sorgen haben,

    dass alle bentigten Laufzeit-Daten (Register inkl. PC und Stack) des laufenden Prozesses gesichert werden und

    dass der neue Prozess an exakt an der Stelle weiter machen kann, an der er zuvor unterbrochen wurde (durch das Laden eben dieser Daten).

    Beispiel: Unter Linux wird dies in der Quelldatei kernel/sched.c umgesetzt: eine Funktion schedule()ruft eine Funktion context_switch auf.

  • 16Peter Altenbernd Prozesse Betriebssysteme WS 2010/11 Hochschule Darmstadt

    3. Systemaufrufe fr Prozesse3.1 Prozessverwaltung Ein Prozess besitzt einen Adressraum, in dem er abluft. Der Prozessraum ist

    in mehrere Teile (Segmente) aufgeteilt.

    Heap

    Daten

    Text-segment 0000

    FFFF Der Programmcode befindet sich im Textsegment.Im Datensegment sind globale Objekte abgelegt, dann folgt der Heap fr dynamische Objekte.Der Stack ist zur Speicherung lokaler Objekte und fr Rcksprungadressen bei Rekursionen ntig.

    Stack

  • 17