5.4 & 5.5 - Thread Scheduling & Multiprocessor Scheduling (p.209, 211)

Thread Scheduling

  • Kernel threads worden door het OS zelf gescheduled.
  • User threads worden via een kernel-level thread gescheduled.
    • Dit kan worden gedaan via een Lightweight Process (LWP)
    • In essentie is dit een scheduler van de threads in een kernel thread in het OS.
  • Process Contention Scope = Competitie voor CPU tijd tussen threads van hetzelfde process.
    • Voor Many-to-One en Many-to-Many models (zie H4, Multithreading Models).
    • Meestal gaat het thread met het hoogste prioriteit voor.
    • Huidige thread gaat voor een thread met een hogere prioriteit.
    • Gebruikt door Linux/Windows XP
  • System Contention Scope = Competitie voor CPU tijd tussen ALLE threads in het OS.
    • Voor One-to-One models.

Multiprocessor Scheduling

  • Load Sharing = Verdelen van werk over meerdere processoren.
  • Push migration = Het weggeven van een process op een drukke processor naar een rustige processor.
  • Pull migration = Het aantrekken van een process op een rustige processor van een drukke processor.
  • Homogeneous processors = Identieke processoren qua functionaliteit.
  • Asymmetric multiprocessing = Processoren die verschillen in wat ze uitvoeren (ex. een processor voert alleen user code uit oa).
  • Symmetric multiprocessing (SMP) = Elke processor voert zijn eigen scheduling uit.
    • Kan via een gedeelde ready queue, of een ready queue voor elk processor.
    • Geimplementeerd in meeste nieuwe OSen.
  • Processor affinity = Hoe graag een process wil blijven in dezelfde processor.
    • Migreren tussen processoren kan een zware taak zijn voor het systeem, omdat de caches opnieuw moeten worden gebouwd 1.
    • De main-memory architectuur van het systeem kan de processor affiniteit vermakkelijken of vermoeilijken.
      • Het kan zijn dat een processor sneller bij een gedeelte van het geheugen kan komen dan een andere processor.
  • Soft affinity = Wanneer een OS in de regel probeert om de processen op dezelfde processor te houden, wanneer dat gewenst is door een process.
  • Hard affinity = Wanneer een OS zorgt dat de processen op dezelfde processor worden gehouden, wanneer dat gewenst is door een process.
  • Processor Sets = (solaris) Lijst van welke processen op welke processoren mogen worden uitgevoerd.
  • Multicode processor = Meerdere processoren op dezelfde fysieke chip.
  • Memory stall = Het wachten van de processor totdat het benodigde geheugen beschikbaar komt.
  • Coarse-grained multithreading = Een thread wordt uitgevoerd tot een long-latency (lang durend) event als een memory stall voorkomt.
    • Hierdoor wisselt de processor van thread, wat heel kostbaar is omdat de processing pipeline moet worden geleegd en opnieuw geladen.
  • Fine-grained multithreading (interleaved) = Betere wisseling tussen threads door te wisselen aan het einde van een instructie-cyclus.
    • Ook is er vaak logica voor deze threadwissel, wat de kosten van deze actie omlaag brengt.
  • Virtualisatie deelt de processor vaak nog verder op (1 core wordt 4 cores oa) waardoor scheduling nog inefficienter wordt.
1. Er wordt gepraat over de cache per processor of core. Bij een wissel moet er dus opnieuw allerlei cache misses worden verholpen. ↩

results matching ""

    No results matching ""