SkillGridInformatik durch Machen lernen

Prozesse und Threads

Was ein Prozess wirklich ist, wie er sich von einem Thread unterscheidet und was beim CPU-Wechsel passiert.

11 Min. · 35 XP

Ein Programm auf der Platte ist nur eine Folge von Bytes. Ein Prozess ist dieses Programm in Ausführung: eigener Speicher, eigene Dateideskriptoren, eigener Platz in der CPU-Warteschlange. Zwei Kopien desselben Programms sind zwei getrennte Prozesse, die zufällig denselben Code teilen.

Ein Prozess ist selten einfach „läuft“. Er ist bereit (wartet auf CPU), laufend (gerade auf einem Kern) oder blockiert (wartet auf I/O oder eine Sperre). Den größten Teil seines Lebens verbringt ein Prozess bereit oder blockiert, nicht laufend.

ReadyRunningWaitingTerminatedscheduler picks itneeds I/OI/O donetime slice overexit()

Das Betriebssystem verfolgt jeden Prozess über einen Prozesskontrollblock: Kennung, Zustand, Speicheranfang, offene Dateien und gesicherte CPU-Register. Für den Kernel ist der Prozesskontrollblock der Prozess.

/* PCB — то, что ОС помнит о процессе, пока он не на CPU. */
struct pcb {
  int   pid;             /* кто это                     */
  int   state;           /* READY / RUNNING / WAITING    */
  void *page_table;      /* где лежит его память        */
  struct regs saved;     /* PC, SP — где он остановился */
  int   open_files[16];  /* что он открыл               */
};

Praxis

  1. Bringe die Prozesszustände in die Reihenfolge, die ein Programm typischerweise durchläuft.

    Hinweise
    • Ein Prozess läuft nicht sofort nach seiner Erzeugung.
    • Auf einen Plattenlesevorgang zu warten ist nicht dasselbe wie auf die CPU zu warten.

    12 XP

  2. Zwei Threads eines Prozesses erhöhen denselben Zähler ohne Sperre. Was ist das wahrscheinlichste Ergebnis?

    Hinweise
    • Überlege, was zwischen dem Lesen des Werts und dem Zurückschreiben passiert.
    • Der Scheduler kann Threads zwischen zwei beliebigen Befehlen umschalten.

    12 XP

  3. Erkläre, warum ein Kontextwechsel Aufwand bedeutet und wann das Betriebssystem ihn zwingend zahlen muss.

    Hinweise
    • Frage dich, welche Nutzarbeit während des Wechsels selbst geschieht.
    • Ein blockierender I/O-Aufruf kann die CPU nicht halten.

    15 XP