Vorlesung Betriebssysteme WS 2010, fbi.h-da.de Threads and Scheduling Jürgen Saala
1. Threads 2. Scheduling 2
1. Threads 3 Prozesse mit je 1 Adressraum 1 Ausführungsfaden d.h. Unabhängiger Adressraum mit Zugriffsschutz 3
Threads sind parallel ausführbare Folgen von Instruktionen innerhalb eines Prozesses, in gemeinsamen Adressraum. Jeder Thread besitzt einen eigenen Programmzähler, einen eigenen Stack für lokale Daten und eine eigene Kopie der Prozessorregister. 4
gelten für alle Threads des Prozesses gemeinsam 5
Thread vs. Process 6
Vorteile von Threads gegenüber Processes Zugriff auf Daten anderer Threads des gleichen Process möglich Geschwindigkeit: Schnelles Create/Destroy, da lightweight Schneller Wechsel zwischen Threads, da kein Context-Switch 50.000 Thread bzw. Process creations. Zeit in Sekunden 7
8
9
10
Pop-up-Threads Threads nur bei Bedarf erzeugen (und zerstören). 11
User-Level-Threads Threads sind vollständig in einer Bibliothek implementiert, die im Speicherbereich des Benutzers abläuft. Betriebssystem braucht Threads nicht zu unterstützen. Laufzeitaufwand ist klein, da sie direkt und nicht als Systemaufruf über einen Software-Interrupt aufgerufen wird. Verschiedene Threads eines Prozesses können nicht auf unterschiedlichen Prozessoren laufen. 12
Kernel-Level-Threads Betriebssystem unterstützt Threads. Es werden Betriebssystemaufrufe zum Erzeugen von Threads verwendet. Verschiedene Threads eines Prozesses können auf unterschiedlichen Prozessoren laufen. 13
Kernel-Level-Threads sind langsamer als User-Level-Threads, da mit Systemaufrufen gearbeitet werden muss. Umschalten in Kernel-Mode ist nötig. schneller als User-Level-Threads, da ein blockierender Thread durch 14 den Kern gestoppt und ein anderer Thread oder Prozess gestartet werden kann.
Ein Prozess kann die Vorteile von Kernel-Level- Threads mit den Vorteilen von User-Level-Threads kombinieren. 15
Standardisierung von Threads - POSIX Betriebssystem-Unabhängigkeit durch IEEE 1003.1c 16
2. Scheduling Welcher Prozess/Thread darf wann mit welchem Prozessor arbeiten? Das entscheidet der Scheduler unter Verwendung verschiedener Schedulingstrategien. 17
Nicht jeder Prozess ist gleich. Prozesse haben unterschiedliche Anforderungen. 18
Schedulingstrategien nonpreemptive (nicht-unterbrechend) Prozess läuft solange bis er blockiert (bspw. warten auf I/O). preemptive (unterbrechend) Prozess wird nach bestimmter Zeit gestoppt. Timerinterrupt nötig Es gibt 3 Umgebungen mit grundlegend unterschiedlichen Schedulingstrategien: Batch (Stapelverarbeitung) Interactive (Interaktivität) Real time (Echtzeit) 19
Kennzahlen fairness policy enforcement balance throughput turnaround time CPU utilization response time proportionality meeting deadlines predictability 20
First-Come First-Served Batch Systems a single linked list keeps track of all ready processes Wenn ein Process blocked, kommt der nächste in der Liste dran und der blocked process muss sich ganz hinten anstellen. 21
Shortest Job First Batch Systems Ähnlich: shortest remaining time next non-preemptive preemptive 22
Round-Robin Scheduling Interactive Systems Jeder Prozess erhält ein time interval quantum. Nach Ablauf der Zeit oder bei Ausführen einer blocking operation: context switch 23
Priority Scheduling mit Multiple Queues Interactive Systems Prozesse innerhalb einer priority class: Round-Robin Weitere Strategieren: a) Verdopplung des Quantums b) zusätzlich ggf. priority class vermindern 24
Shortest Process Next Interactive Systems Bei interaktiven Systemen: - wait for command - execute command - wait for command - execute Vorhersage der Laufzeit des folgenden Befehls/Process durch Ermittlung des weighted average (gewichteter Durchschnittswert) der bisherigen Laufzeiten. Dabei werden Laufzeiten älterer Prozesse weniger gewichtet: Aging 25
Guaranteed Scheduling Interactive Systems Das Betriebssystem merkt sich bei jedem Prozess die genutzte CPU time. Jeder Prozess bekommt im Vorraus einen definierten Anteil der CPU (in Form von CPU time) zugeteilt. 26
Lottery Scheduling Interactive Systems All processes are equal, but some processes are more equal (frei nach George Orwell) Betriebssystem hat Lose für verschiedene Systemresourcen. Wichtige Prozesse erhalten mehr Lose als unwichtige Prozesse. Anzahl der Lose kann dynamisch verändert werden. Prozesse können Lose an andere Prozesse verschenken. Zufall bringt Fairness. 27
Fair-Share Scheduling Interactive Systems Bindung eines Anteils einer CPU an den Process-Owner bzw. User, anstelle des Prozesses selbst. Einer User, der mehrere Prozesse laufen lässt, erhält für die Summe aller seiner Prozesse den gleichen Anteil an CPU Resourcen wie ein anderer User mit nur einem Prozess. 28
Scheduling in Real-Time Systems Klassifizieren von Prozessen bzw. events: periodic in regelmäßigen Zeitabständen auftretend aperiodic unvorhersehbar auftretend Static Scheduling Scheduling Strategie wird im Vorraus festgelegt, da die auftretenden events bekannt sind. Dynamic Scheduling Strategie wird zur Laufzeit angepasst in Abhängigkeit der näherrückenden variablen deadlines einzelner events. 29
Policy versus Mechanism Real-Time Systems scheduling mechanism (Mechanismus bzw. Algorithmus) liegt im Kernel des Betriebssystems (bspw. priority-scheduling) scheduling policy sind Parameter die den scheduling mechanism beeinflussen. So kann ein User-Prozess die Priorität der Ausführung seiner Kind-Prozesse mittels Änderung der scheduling policy steuern, ohne selbst das Scheduling durchführen zu müssen. 30
Thread Scheduling User-level Threads 50 ms process quantum, 5 ms thread runtime 31
Thread Scheduling Kernel-level Threads 32
Quellen: Tanenbaum, Andrew S.: Moderne Betriebssysteme, 3. Auflage, Prentice Hall, 2009 Richard McDougall, Solaris Internals, 2 nd edition, Prentice Hall, 2007 http://www.sws.bfh.ch/~fischli/publikationen/threads/index.html http://docs.hp.com/en/5965-4642/ch01s05.html https://computing.llnl.gov/tutorials/pthreads/ 33