Befindet sich ein Betriebssystem nach jedem Zeitabschnitt / Quantum?

1088
Celeritas

Tritt das Betriebssystem im Rahmen der Prozessplanung nach jedem Ende von Slice / Quantum ein? Wenn zum Beispiel der Computer im Leerlauf war und 4 Aufgaben angekommen waren: t1, t2, t3 und t4, und sie wurden mit dem First-Come-First-Serv-Dienst geplant, würden wir normalerweise annehmen, dass t1, t2, t3, t4 in der CPU sind Ist das nicht eine Vereinfachung? Weil es t1, OS, t2, OS, t3 OS t4 ist, was tatsächlich passieren würde? Wenn es wahr ist, interveniert das Betriebssystem nach jedem Zeitabschnitt (aka Quantum), ist das nicht sehr ineffizient?

0

2 Antworten auf die Frage

1
psusi

Nicht unbedingt. Normalerweise senkt der Scheduler die dynamische Priorität einer Task, nachdem das Quantum abgelaufen ist. Wenn es sich jedoch immer noch um die Task mit der höchsten Priorität handelt, erhält sie eine andere. In der Regel ja, wenn die Task lange genug gelaufen ist, übernimmt das Betriebssystem und wechselt zu einem anderen. Warum sollte das ineffizient sein?

Weil (korrigieren Sie mich, dass ich falsch liege), nehmen die meisten Aufgaben mehrere Umdrehungen in der CPU vor. Das heißt, x-mal, wenn das Betriebssystem für jede Aufgabe eine Berechnung durchführen muss, was viele gibt. Zum Beispiel gibt es 5 Aufgaben, und im Durchschnitt dauert jeder Vorgang 4 Zeitscheiben, dh das Betriebssystem ist etwa 4x5-mal intervenierend. Ich kann mich irren, ich denke, so habe ich es mir vorgestellt. Celeritas vor 10 Jahren 0
@Celeritas, es kann nur eine Task auf einer bestimmten CPU ausgeführt werden und die Zeit, die erforderlich ist, um die Priorität der Task anzupassen und zu überprüfen, ob eine Priorität mit höherer Priorität sehr klein ist (z. B. 10.000 oder mehr als 100.000 Mal) im Vergleich zu der Länge des Quantens. psusi vor 10 Jahren 1
richtig also, wenn das Quantum lächerlich klein ist, werden die Dinge durch den Austausch von Aufgaben und das Prüfen ihrer Prioritäten möglicherweise weniger effizient? Celeritas vor 10 Jahren 0
@Celeritas, es gibt kein Tauschen und Quanten sind nicht lächerlich kurz;) psusi vor 10 Jahren 0
0
Wandering Logic

Ich glaube, dass in modernen Betriebssystemen die Zeitscheiben eine variable Länge haben. Der Scheduler wird aufgerufen, nachdem alle Interrupts (Tastatur, Maus, Touchscreen, Netzwerk, Datentransfer abgeschlossen, ...) sowie die Timer-Interrupts gewartet wurden.

Grob gesagt, der Scheduler ist so konzipiert, dass er den gleitenden Durchschnitt der Zeiten zwischen Aufrufen eines Prozesses, der ein System blockiert, schätzt. Bevor der Scheduler dem Prozess X die Kontrolle gibt, stellt er einen Zeitgeber auf, der zu einem Zeitpunkt gerade etwas länger als der gleitende Durchschnitt des Prozesses X unterbrochen wird. Wenn der Scheduler die Zeit bis zum nächsten blockierenden Systemaufruf gut erraten hat, wird ein großer Teil der Prozesse die CPU tatsächlich freiwillig freigeben, indem er einen Systemaufruf blockiert.

Das Ziel ist, interaktive Prozesse zu veranlassen, ein wenig Rechenarbeit zu leisten, einen Aufruf des blockierenden Systems auszuführen, um Daten von einem langsamen Gerät anzufordern, und dann umgeplant werden, sobald die Daten zurückgegeben werden. Wenn der Scheduler sich für die Planung zwischen zwei Prozessen entscheiden muss, werden alle anderen Faktoren, die gleich sind, den Prozess begünstigen, der das Blockieren von Systemaufrufen häufiger durchführt. Dadurch wird die Anzahl der gleichzeitigen Sperren von E / A-Anforderungen maximiert, wodurch der Gesamtdurchsatz des Systems verbessert wird.

Was ist ein Sperranruf? Celeritas vor 10 Jahren 0
Der Scheduler wird nach jedem Interrupt nicht aufgerufen. das hätte zu viel Aufwand. Es wird auch nicht über die Zeit zwischen dem Blockieren von Anrufen geraten; Der Scheduler überprüft nur kurz, ob das Quantum bei jedem Timer-Interrupt abgelaufen ist. psusi vor 10 Jahren 0
@Celeritas, Blockieren bedeutet, dass die Task in den Ruhezustand versetzt wird, während sie auf etwas wartet, z. B. Festplatten-E / A, sodass stattdessen andere Tasks ausgeführt werden können. psusi vor 10 Jahren 0
@psusi Was ist der Unterschied zwischen Schlafen und Blockieren? Oder gibt es kein Wort wie Schlafen und die Leute sagen "blockieren"? Celeritas vor 10 Jahren 0
@Celeritas, Sleeping ist der Zustand, in dem sich die Task befindet, und das Blockieren ist, was ein Systemaufruf ausführt, wenn er die Task in den Ruhezustand versetzt. psusi vor 10 Jahren 0