<< 5.1 Prozesskonzept | Index | 5.3 Scheduling >>


5.2 Thread-Konzept

Threads?

  • leichtgewichtiger Prozess
    • Ermöglicht einen Prozess mit mehreren parallelen Kontrollflüssen
    • Beschrieben im Thread-Control-Block, ähnlich dem PCB (aber deutlich kleiner als dieser, weil weniger Informationen nötig)
  • Threads eines Prozesses:
    • haben eigene Identität (Thread-ID)
    • haben eigenen Programmzähler (PC)
    • haben eigenen Stack und Register
    • haben eigenen Zustand (analog zu Prozessen)
    • teilen sich den Adressraum und Ressourcen
      • Kein Schutz der einzelnen Stacks vor Stack-Overflow

Thread-Modelle

  • Dispatcher-Worker
    • Unterschiedliche Thread-Klassen
    • Eine Klasse nimmt Anfragen an und verteilt sie
    • Eine Klasse arbeitet die Anfragen ab
  • Team
    • Gleichberechtigte Threads verarbeiten (evtl. unterschiedliche) Anfragen an den Prozess
  • Pipeline
    • Mehrere Arbeitsschritte notwendig, jeder Thread erledigt einen Arbeitsschritt und gibt Zwischenergebnisse an nächsten weiter
    • Hoher Grad an Parallelität

Thread-Implementierung

  • User-level Threads
    • Thread-Verwaltung läuft komplett im Userland ab (durch ein Laufzeit-System)
    • Kernel sieht und verwaltet nur einen Prozess
    • Vorteile:
      • Kein Kernel-Einsprung zum Threadwechsel nötig, effiziente Verwaltung
      • Keine Voraussetzungen seitens des Betriebssystems nötig
    • Nachteile:
      • Doppeltes Scheduling: Kernel -> Prozess, Prozess -> Thread
      • Blockierender System-Call? eines Threads blockiert den ganzen Prozess inkl. aller anderen Threads
      • Scheduling des Kernels greift nicht pro Thread (Monopolisierung möglich)
  • Kernel-level Threads
    • Alle Threads werden global vom Kernel verwaltet
    • Operationen zur Thread-Verwaltung werden als System-Calls? angeboten
    • Vorteile:
      • Bei blockierendem System-Call eines Threads wechsel auf anderen Thread des Prozesses => sehr effizient
      • Keine Monopolisierung möglich
    • Nachteile:
      • Mehr Overhead (Kernel-Einsprung)
      • Setzt Unterstützung durch Betriebssystem voraus
  • Hybride Implementierung
    • Mehrere Kernel-level Threads verwalten mehrere User-level Threads

Nach oben

Zuletzt geändert am 14 März 2005 18:38 Uhr von chrschn