Übungsaufgabe zum CPU Scheduling

nikva

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


kDD1CmD.png

6fnS8QN.png




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 :D
 

mihe7

Top Contributor
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

Bekanntes Mitglied
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?
 
Zuletzt bearbeitet:

mihe7

Top Contributor
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

Bekanntes Mitglied
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

Top Contributor
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.
 

Neue Themen


Oben