Grundlagen der Betriebssysteme

Praktische Einführung mit Virtualisierung

Stefan Bosse

Universität Koblenz - FB Informatik

1 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung ::

Prozesse und Prozessverwaltung

  • Einführung des Prozessmodells

  • Datenstrukturen von Prozessen

  • Multiprozesssysteme und Scheduling (Prozessumschaltung)

2 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Terminologie

Terminologie

Programm
Ausführungsvorschrift für eine Maschine, i.A. eine lineare Liste von Instruktionen.
Prozessor
Physische (oder virtuelle) Ausführungseinheit einer Maschine (Rechner) um Instruktionen auszuführen. Maschineninstruktionen sind Daten- und Kontrollanweisungen, d.h. Berechnung und Kontrollflusssteuerung.
Prozess
Ein Orogramm in Ausführung, entweder im Vordergrund durch einen Prozessor, oder im Hintergrund durch einen Speicherzustand (inkl. Auslagerung auf einen Datenträger).
3 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Terminologie

Terminologie

bsdp Unterscheidung Programm zu Prozess

Allgemein gilt: kommt ein Programm zur Ausführung, dann wird ein neuer Prozess gestartet. Der Prozess belegt Hauptspeicherplatz, Prozessorregister, belegt Rechenzeit und nutzt die Peripherie. Ein bestimmtes Programm kann bei Bedarf auch mehrfach parallel ablaufen. Es liegen dann mehrere Prozesse vor, aber immer noch nur ein Programm.

4 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Terminologie

Terminologie

Threads
Threads sind parallel ablaufende Aktivitäten innerhalb einer gemeinsamen Prozessumgebung. Der Code einzelner Threads ist Teil des bereits geladenen Programms. Jeder Thread gehört damit zu einem bestimmten Prozess.

bsdp Varianten der Software-Parallelität

5 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Terminologie

Terminologie

Nebenläufigkeit
Nebenläufigkeit (concurrency) bedeutet, dass die Software mehrere Programmanweisungen gleichzeitig ausführen kann (abstrakte Parallelität). Parallelität im strikten Sinne bezieht sich hingegen auf die tatsächlich gleichzeitige Ausführung (konkrete Parallelität). Eine weniger strikte Definition der Parallelität schlie0t die Nebenläufigkeit ein, da dies Praxisgebrauch darstellt.
Task
Primär ist diese Bezeichnung bei eingebetteten Systemen (embedded systems) üblich und bezeichnet dort parallel ausgeführte Programmteile. Einige Betriebssysteme benutzen den Begriff Task hingegen als einen Oberbegriff, der Prozesse und Threads umfasst.
6 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Terminologie

Terminologie

Job und Session
Darunter sind voneinander unabhängige und gegenseitig geschützte Anwendungen auf einer Rechneranlage zu verstehen. Eine derartige Anwendung besteht dabei aus einer Gruppe von Prozessen.
Echtzeitbetrieb
Echtzeitbetrieb ist ein Betrieb eines Rechensystems, bei dem Programme zur Verarbeitung anfallender Daten ständig betriebsbereit sind derart, dass die Verarbeitungsergebnisse innerhalb einer vorgegebenen Zeitspanne verfügbar sind. Die Daten können je nach Anwendungsfall nach einer zufälligen zeitlichen Verteilung oder zu vorbestimmten Zeitpunkten auftreten (DIN 44 300).

Man unterscheidet harte und weiche Echtzeitsysteme. Das Überschreiten von Zeitgrenzen (von Prozessen) wird im Softbetrieb toleriert, im Hartbetrieb wird diese als Systemfehler gewertet mit Anhalten der Rechneranlage.

7 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozess

Prozess

Ein Prozess i hat einen Zustand Σi. Ein Prozess in Ausführung ändert seinen Zustand.

  • Der Prozesszustand setzt sich aus zwei Teilzuständen zusammen:
  1. Kontrollzustand γ, gegeben durch den Befehlszähler;
  2. Datenzustand σ, gegeben durch alle Prozessvariablen.
  • Der Prozess ist ein Grundbaustein der Parallelverarbeitung mit einem Betriebssystem.

  • Das Prozessmodell ist daher ein zentrales Konzept moderner Betriebssysteme. Ergänzt wird es durch das Thread-Modell, das für die Parallelisierung innerhalb von Applikationen die optimalere Lösung darstellt.

8 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozess

Prozess

  • Ein Prozess kann sich in drei wesentlichen Zuständen befinden:
  1. Ready: Rechenbereit, aber nicht in Ausführung durch einen Prozessor;
  2. Run: In Ausführung durch einen Prozessor; wesentlich Berechnung;
  3. Wait: Wartend (auf Ereignisse).
  • Das Warten bedeutet i.A. Ein- und Ausgabe, Kommunikation oder die Verzögerung
  • Es gibt zwei Arten um auf Ereignisse zu warten:
  1. Durch wiederholte Abfrage (Polling);
  2. Durch Prozessblockierung (Suspendierung) und Wiederaufnahme (Resume) beim Eintreten des Ereignisses (Interrupt).
9 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Ereignisse

Ereignisse

Man kann verschiedene Klassen von Ereignissen unterscheiden, die von Prozessen berarbeitet werden:

  1. Daten oder Ereignisse von Kommunikationsgeräten (WIFI/WLAN, Bluetooth, USB, Scanner, Drucker "kein Papier");
  2. Zeitablauf (Verzögerung, Timer);
  3. Synchronisation zwischen Prozessen, z.B. Steuerung einer Warteschlange, Bereistellen von Daten zur Abholung usw.;
  4. Wettbewerbsauflösung durch Sequenzialisierung, d.h., Nutzung geteilter Ressourcen.

Warten auf Ereignisse bedingt das Anhalten des Kontrollflusses eine Prozesses (Prozessblockierung), wenn auch beim Pollingbetrieb nur eine wiedeholende Schleife den Programmfortschritt blockiert.

10 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozesszustände

Prozesszustände

bsbrause (a) Allgemein Prozesszustände und Übergänge (b) Prozesszustände und Übergänge bei UNIX (c) Prozesszustände in Windows NT

11 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozesszustände

Prozesszustände

Die Zustände „bereit“ und „blockiert“ enthalten eine oder mehrere Warteschlangen (Listen), in die die Prozesse mit diesem Zustand eingetragen werden.

  • Der bereit-Zustand ist besonders ausgezeichnet: Alle Prozesse, die Ereignisse erhalten und so entblockt werden, werden zunächst in die bereit-Liste (ready-queue) verschoben und erhalten dann in der Reihenfolge den Prozessor zur Ausführung.
12 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozessmodell

Prozessmodell

  • Das Prozessmodell ist ein zentrales Konzept der meisten Betriebssysteme.
    • Kerneigenschaft dabei ist, dass jeder Prozess virtuell den ganzen Rechner für sich alleine zur Verfügung hat, d.h., er kann den Adressraum frei belegen (abgesehen von reservierten Systembereichen) und kann die Prozessorregister nach Belieben benutzen.
  • Das Prozessmodell realisiert durch die nebenläufige Ausführung mehrerer Prozesse den Mehrprogrammbetrieb.
    • In einem Einprozessorsystem wird eine Aufteilung der Rechenzeit auf mehrere ablaufwillige Prozesse durchgeführt.
    • Es findet dabei ein Zeitmultiplex des Prozessors statt.
    • Dies ergibt für den Benutzer die Illusion der echt parallelen Programmausführung, obwohl zu jedem Zeitpunkt nur immer gerade ein einziges Programm von der CPU abgearbeitet wird.
    • Auf Multiprozessorsystemen ist eine mehrheitlich gleichzeitige Ausführung von Programmen möglich.
13 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozessverwaltung

Prozessverwaltung

  • Die Programme und damit die Prozesse existieren nicht ewig, sondern werden irgendwann erzeugt, in eine Wartschlange eingereiht und auch beendet.
  • Dabei verwalten die Prozesse aus Sicherheitsgründen sich nicht selbst, sondern das Einordnen in die Warteschlangen wird von einer besonderen Instanz des Betriebssystems, dem Scheduler, nach einer Strategie geplant.
  • Bei einigen Betriebssystemen gibt es darüber hinaus eine eigene Instanz, den Dispatcher, der das eigentliche Überführen von einem Zustand in den nächsten bewirkt.

Im Unterschied zu dem Maschinencode werden die Zustandsdaten der Hardware (CPU, FPU, MMU), mit denen der Prozess arbeitet, als Prozesskontext bezeichnet.

14 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozessverwaltung

Prozessverwaltung

  • Der Teil der Daten, der bei einem blockierten Prozess den letzten Zustand der CPU enthält und damit wie ein Abbild der CPU ist, kann als virtueller Prozessor angesehen werden und muss bei einer Umschaltung zu einem anderen Prozess bzw. Kontext (context switch) neu geladen werden.

Die verschiedenen Betriebssysteme differieren in der Zahl der Ereignisse, auf die gewartet werden kann, und der Anzahl und Typen von Warteschlangen, in denen gewartet werden kann. Sie unterscheiden sich auch darin, welche Strategien sie für das Erzeugen und Terminieren von Prozessen sowie die Zuteilung und Einordnung in Wartelisten vorsehen.

15 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozessumschaltung

Prozessumschaltung

  • Synonym für Scheduling oder Prozessmultiplexing

Multiplexing: Die wechselseitige Nutzung einer geteilten Ressource, z.B. eines Funkkanals, Datenbusses, Prozessors, oder des Speichers. Beim Prozessor handelt es sich um Zeitmultiplexing.

Kanalmultiplexing (grün) im Vergleich zum Prozessmultiplexing (rot). Im Grunde werden Daten geschaltet.

16 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozessumschaltung

Prozessumschaltung

Multiprozessorsysteme können als multiple Kommunikationskanäle verstanden werden.

  • Die Prozessumschaltung bewirkt letztlich eine wechselseitige Verarbeitung von Datenströmen.
17 / 73

Stefan Bosse - Grundlagen der Betriebssysteme - Modul P Prozesse und Prozessverwaltung :: Prozessgruppen

Prozessgruppen

Prozesse können einzeln gestartet oder in Gruppen zugeordnet werden.

  • In Unix gibt es die Eltern-Kind Prozessgruppe, unter Windows nicht.
  • Ein Kindprozess wird i.A. als Kopie des Elternprozesses erzeugt (Forking)

Prozessverdoppelung bei fork(). PID: Process Identifier Number (numerischer ganzzahliger Wert der einen Prozess im System eindeutig identifiziert)

Prozessumschaltung