# Übungsaufgabe zum CPU Scheduling



## nikva (18. Jul 2020)

Hallo, da bald die Prüfungen anstehen schaue ich mir ein paar Übungsaufgaben an und bin dabei auf folgende gestoßen:














Nach meiner Auffassung würde doch die CPU, da sie mehr Kerne hat als Threads die anstehen einfach die  Threads parallel bearbeiten(also die ersten beiden Spalten wären komplett zu füllen) und würde dann im dritten Intervall nur noch an Thread 3 arbeiten. Mich verwirrt aber dass betont wird, dass Threads verdrängt werden und dass man allgemein so eine lange Aufgabenstellung für ein vermeintlich so kleines Problem erstellt.

Außerdem würde der zweite Teil der Aufgabe dann keinen Sinn ergeben weil man ja da einfach nur die Gesamtdauer eintragen würde und die Wartezeit am Ende des Prozesses doch ohnehin 0 wäre?
Vielleicht hat ja hier jemand ne Idee wo da der Haken ist


----------



## mihe7 (18. Jul 2020)

nikva hat gesagt.:


> Mich verwirrt aber dass betont wird, dass Threads verdrängt werden


Anders würde es so nicht funktionieren. Du hast Hardwareunterstützung (in der Regel ein Timer), der einen Interrupt auslöst, damit das OS die Kontrolle über den Prozessor erhält. Ohne diesen wäre das OS darauf angewiesen, dass der Prozess die Kontrolle selbst abgibt.


----------



## nikva (18. Jul 2020)

A  X X X
B  X X
C  X X
D X X
E  X X X
F  X X
G X X

Also wird wie hier Jeder Thread wird in einem Kern bearbeitet und da die run-queue leer ist wird auch keiner der Threads verdrängt. Die restwartezeit bei A und E ist dann 0 und bei B,C,D,F,G 100 ms(bis die CPU still steht)?
Die Verweildauer ist dann einfach gleich der Restlaufzeit?


----------



## mihe7 (19. Jul 2020)

Ja, so würde ich das auch sehen.  Allerdings würde ich die Wartezeit auf 0 setzen (der Thread muss ja auf nichts mehr warten, wenn er bereits terminierte).


----------



## nikva (20. Jul 2020)

Auf was genau bezieht sich eigentlich die Wartezeit?`Ist es die Zeit die ein Thread insgesamt in der Warteschlange verbingt oder die zeit die ein Thread bis zum ersten Beabeitungszeitpunkt in der warteschlange verbingt? Ich kann dazu irgendwie keine eindeutige Aussage finden, nehme aber an dass die gesamte zeit die in der queue verbracht wird addiert werden würde?


----------



## mihe7 (20. Jul 2020)

Ich kenn das so, dass die Wartezeit die (Gesamt-)Zeit ist, in der sich der Thread im Zustand "bereit" befindet, also auf Zuteilung der CPU wartet. Bei einem Core würde B als erstes die CPU erhalten, die anderen Prozesse müssten warten. Nach dem ersten Schritt haben wir also bei B eine Wartezeit von 0, bei den anderen eine Wartezeit von 100 ms. Im zweiten Schritt käme D an die Reihe, danach ergäbe sich bezüglich der Wartezeiten folgendes Bild: B = 100, D = 100, A,C,E,F,G = 200. Dann ist die Frage, wie der Scheduler weiterarbeitet.


----------

