Prozesse und Threads
Begriffe
Programm statischer Code
Prozess Programm im Ausführungs-Kontext
= Programmcode, assoziierte Daten, Execution Context (PCB)
Kontext aktueller Prozess-Zustand, Verwaltungsdaten (Tabellen)
Dispatcher OS-Programm für Process-Switching bei Timeout Interrupt
Trace Ausführungs-Reihenfolge von Instruktionen - Können sich überlappen.
Visualisierung von Trace
Aufgabe des OS
OS allokiert Speicher und baut Datenstrukturen auf für Prozess-Zustand und Speicherbereich.
OS kreiert, beendet und verwaltet Prozessse.
Prozess-Erzeugung
Login von user
OS Service Ausführung
Subroutine call (Process Spawning: Parent erzeugt Child)
Absetzen eines Jobs
Prozess-Beendigung
Logout von user
Service request an OS
Fehler Auftritt (Arithmetic error, IO failure, ...)
Halt- Instruction
Prozess-Verwaltung
Ressourcen-Vergabe
Im kernel mode ist OS zuständig für:
Prozess-Management Erstellen, Beenden, Switchen, Synchronisieren
Speicher-Management Speicherallokation, Swapping
IO-Management Buffer, Allokation von Peripherals und ihre Channels
Supportfunktionen Accounting, Monitoring
____________
Prozess-Zustände
Jede queue, wie ist als PCB-liste / Prozessliste implementiert.
Instruction pointer
eip
bei Prozess.
Ready ready to run
Blocked waiting for event (zB IO response)
Erzeugung von Prozess durch OS:
- Erstellung von process ID
- Eintrag in Prozesstabelle
Prozesse bleiben hier nach Erzeugung wenn Systemlast zu hoch oder
ready
voll.
Beendigung von Prozess durch OS:
- Terminierung von Programm
- Prozessinformationen aus Tabellen verwendet zB Accounting, Debugging
- Administrative Schritte zB logging
- Tabellen-Einträge löschen, Speicher freigeben
Auslagerung in Sekundärspeicher
Auslagerung in Sekundärspeicher
Ursachen für Suspend
Swapping : Arbeitsspeicher zu voll Auslagerung in Sekundärspeicher (IO Operation)
Hintergrundprozess
Problembehaftet
Timing: Periodischer, wiederaufkehrender Prozess
Parent request: Kann wegen Untersuchung, Modifikation, Koordination sein Child suspenden
Process Switch
Umschaltung zwischen Prozessen wenn OS wieder im Besitz der Kontrolle ist durch:
Call / Supervisor Call / System Call
Expliziter Aufruf eines Betriebssystem Services im Prozess zB IO-Operation
Trap
Fehler bei Ausführung von Instruction - Supervisor-Mode um Fehler zu behandeln.
Interrupt
Ursache außerhalb des Prozesses zB key-press (IO-Interrupt)
Interrupt-Behandlungsroutine von OS gewählt
Queuing Model : Eigene Queue für jedes Event auf dass ein Prozess durch Warte-Ereignis blockieren und warten kann.
____________
Prozessverwaltung
Die Verwaltung von Prozessen und Ressourcen braucht eigene Datenstrukturen.
Diese Tabellen müssen nicht unbedingt einander referenzieren.
Memory Table Physischer Bereich im Arbeitsspeicher und Sekundärspeicher
IO Table Peripherals und ihre Zustände, Buffer
File Table Dateien und ihre Zustände, Buffer
Primary Process Table Globale Prozesstabelle - mit pointer zu process image
Process Image
Im Virtual Memory - muss nicht zusammenhängend sein.
OS braucht Teile davon für Prozessverwaltung.
Private User Address Space User Programm (nicht modifizierbar)
Shared Address Space User Data (modifizierbar) : Variablen, modifizierbare Programme
User Stack Für User Programme
Process Control Block PCB Execution Context
Process Control Block PCB
Teil von Process-Image.
Gesamter Kontext von Prozess - steht OS zur Verfügung.
Process ID(Identifizierung)
Index aus Primary Process Table
Benutzer ID (process owner)
Parent Process ID (parent process) - Damit zb Child-processes ohne parents geschlossen werden
Processor State Information(Steuerinformation)
Damit man nach einer Unterbrechung dort fortsetzen kann wo man war.
Registerinhalte
Kontroll-Register (Befehlszähler / instruction pointer)
Status-Register (Program status word PSW): Flags, Statepointer
Stack pointer
Process Control Information(Prozesskontrolle)
Informationen über Rechte, Priorität, Privilegien, Ressourcen die gebraucht werden für Scheduler:
Aktueller Zustand
Priorität
Ereignis auf das der Prozess wartet
Interprozesskommunikation IPC
Privileges
Memory management (pointer zu segment / page tabellen)
Ressourcen (elapsed CPU-Time und benutzte Ressourcen)
Pointer aud andere Prozesse
auf Parents
um Queues (PCB Listen) zu implementieren.
Execution Modes
Datenstrukturen (PCB Listen) müssen vor unerlaubten Zugriffen geschützt werden.
CPU unterstützt durch mindestens 2 Modi (als mode-bits gesetzt)
User mode Für Benutzerprogramme
Privileged mode Für OS um auf bestimmte Speicherbereiche zuzugreifen.
bzw system / kernel / supervisor / control mode
____________
OS Designs
Mode-Switch notwendig für OS Routinen aber nicht Process-Switch - Abhängig von OS design.
Mode Switch Änderung von Execution Mode
Process Switch Änderung von Process
- Process Switch (rot) - Kontrolle von user process (grün) wird an OS übergeben
- Mode switch - zu privileged mode
- Kontext wird abgespeichert (grau)
-
Optionaler Process Switch
(2 Wege - orange)
- OS Programm als Subroutine ausgeführt
- OS Programm als neuer Prozess ausgeführt
- Alter Zustand / Kontext aus user process wieder hergestellt (grau)
1) OS Ausführung in User Prozessen
Kein Process-Switch
OS als Ansammlung an Subroutinen die vom User aufgerufen werden.
Fast alle OS-Routinen laufen im Kontext der Benutzerprozesse ausgeführt.
Erweiterung vom Process Image
Private User Address Space User-Programm (unveränderlich)
Shared Address Space User Data (modifizierbar): Variables, Callstack + OS-Code und Daten
User Stack Stack für User Programme
System / Kernel Stack Stack für privileged mode (nicht von Prozess manipuliert)
Process Control Block PCB Execution Context
2) Nonprocess Kernel
Process-Switch
Gesamter OS strikt getrennte im Kernel mit höheren Privilegien, eigenem Speicherbereich + Stack.
Nur Benutzerprogramm Prozess genannt.
3) Prozessbasiertes OS
Process-Switch
OS als Ansammlung von getrennten Systemprozessen mit höhrer Priorität.
Kernel (≠ Prozess) genützt für Basis-Services:
Process Switching
Basic memory management
Interprocess Communication IPC (Nachtichtenaustausch und Kontrolle)
Interrupts und IO
Beispiel: Mikrokernel Architektur
Kernel minimalistisch - nur aller nötigsten Services - Restlichen OS features als optionale libraries.
Hat Basis-Services (siehe Prozessbasiertes OS)
Eigenschaften:
Einheitliches Interface
Einfach anzupassen, flexibel, erweiterbar
Portabel
Klein und Übersichtlich
Kernel Architekturen
Monolithic OS (eher alt - no Compartmentalization)
großer Block - Menge von Routinen die sich gegenseitig aufrufen
Layered OS (modern - has Compartmentalization)
Modularisiert, klare Grenzen zwischen Funktionalitäten
Hierarchische Struktur, das meiste im Kernel mode ausgeführt
____________
Threads
Prozesse = Ressourcen-Verwaltung + Ausführungszustände + Dispatching
Entkopplung / Seperation of concerns mit Threads:
- Process / Task (Ressourcen-Verwaltung)
Virtueller Addressraum (mit Process Image)
Speicherschutz
Files, IO
- Thread / Lightweight process (Dispatching, Ausführungszustände)
schnelleres Erzeugen und Umschalten als bei Prozessen.
Ausführungszustand
Running, Ready, Blocked - je nach Implementierung.
Aber suspend nicht für einzelne Threads möglich, sondern nur für Prozess.
Kontext wenn nicht gerade laufend
User Stack, Kernel Stack
thread-lokale statische und lokale Variable
Zugriff auf Prozessspeicher und Ressourcen
Multi-Threading
PCB von Process angepasst: Tabelle mit pointern zu allen threads.
Alle Threads haben greifen auf selben user address space zu.
Wenn Prozess terminiert - terminieren alle Threads.
Vorteile von Threads
Bessere performance als Prozesse
Kein Mode-Switch für Erzeugung, Termination und Switching.
Alle Threads haben die gleichen Ressourcen:
Inter-Thread-Kommunikation ohne Kernel möglich - aber: benötigt Synchronisation
Anwendungen von Threads
Applikationen bei denen sonst mehrere Prozesse auf dieselbe Ressource zugreifen würden wie zB:
File Server in LAN
Ein Thread für jeden Request
Spreedsheet Programm wie Excel
Für jede UI Komponente ein Thread
User-Level Threads (ULT)
Prozess ruft thread-library auf.
Threads für den Kernel unsichrbar.
Thread library code implementiert alles
implementiert
- Erzeugung und Terminierung
- Daten-, Nachrichtenaustausch zwischen Threads
- Thread Scheduling
- Sichern und Herstellen von Thread Kontexten
Thread-Switching im User-mode.
Vorteil gegenüber KLT
Scheduler kann an Applikation angepasst werden
Nachteil gegenüber KLT
Threads können nicht auf mehrere Prozessoren aufgeteilt werden
Kernel-Level Thread (KLT)
Kernel Thread API, keine library.
Thread scheduling / management durch Kernel.
Auch für OS services eingesetzt.
Vorteil gegenüber ULT
Einzelne Threads können blockiert werden.
Gleichzeitiges Schedulen mehrerer Threads eines einzelnen Prozesses mit Multicore möglich.
Nachteil gegenüber ULT
Mehr Overhead: Thread switching innerhalb eines Prozesses über den Kernel bedeutet 2 Mode switches (kernel → user → kernel)