Weist der Windows-Scheduler Threads gleich lange Quanten zu?

2970
Chris Wilson

Ist die Zeitscheibe (Quantum), die der Windows Kernel Dispatcher Threads für jeden Thread die gleiche Länge zuweist, oder basiert die Größe des Quantums auf der Priorität des Threads wie bei Linux?

3

1 Antwort auf die Frage

1
harrymc

Anwendungen mit höherer Priorität haben seit den Tagen von Windows NT ein größeres Quantum, beispielsweise für Vordergrundthreads.

Es sind 32 Prioritätsstufen (0 bis 31) definiert, wobei die Prioritäten 0 bis 15 "normale" Prioritäten sind und die Prioritäten 16 bis 31 weiche Echtzeit-Prioritäten sind, die die Zuweisung von Privilegien erfordern. 0 ist für das Betriebssystem reserviert. Benutzer können 5 dieser Prioritäten auswählen, um sie einer laufenden Anwendung über die Task-Manager-Anwendung oder über Thread-Verwaltungs-APIs zuzuweisen. Der Kernel kann die Prioritätsstufe eines Threads abhängig von seiner E / A- und CPU-Nutzung und davon, ob er interaktiv ist (dh Eingaben von Menschen akzeptieren und auf Eingaben von Menschen antworten), ändern, wodurch die Priorität interaktiver und E / A-gebundener Prozesse erhöht und die von reduziert wird CPU-gebundene Prozesse, um die Reaktionsfähigkeit interaktiver Anwendungen zu erhöhen

In Vista verwendet der Scheduler in modernen Prozessoren Zyklenzählerregister und kann die Anzahl der Zyklen schätzen, die ein Thread pro Taktstrich verwendet. Auf diese Weise kann der Scheduler die CPU-Zeit viel fairer aufteilen. Ein Thread kann nach einer Unterbrechung für eine andere Zeitscheibe ausgeführt werden, während der Scheduler vor Vista davon ausging, dass ein unterbrochener Thread für die gesamte Zeitscheibe ausgeführt wurde. (Dies erhöht indirekt die Priorität eines stark unterbrochenen Threads.) Vista verwendet außerdem einen Prioritätszeitplaner für die E / A-Warteschlange, damit die Defragmentierer und andere derartige Programme die Vordergrundoperationen nicht stören.

Quellen: Wikipedia-Planung, Verbesserungen des Vista-Kernels .

Der zweite Link ist tot, aber er steht unter archive.org noch zur Verfügung: https://web.archive.org/web/20120323170914/http://blog.gabefrost.com/?p=25 ComFreek vor 9 Jahren 1
_ "Seit den Tagen von Windows NT haben Anwendungen mit höherer Priorität ein größeres Quantum, _". Das ist nicht genau. Ein Thread mit höherer Priorität kann Threads mit niedrigerer Priorität vorwegnehmen, erhält jedoch kein längeres Quantum (Zeitfenster), nur weil er eine höhere Priorität hat. Sie sind jedoch in der Nähe von Vordergrund-Threads. Das Standardverhalten bei Client-Betriebssystemen (Nicht-Server-Betriebssystemen) von Windows besteht darin, dass alle Threads in dem Prozess, der das Vordergrundfenster besitzt, Timeslices 3x der normalen Länge erhalten. Aber Priorität ist etwas anderes. Jamie Hanrahan vor 8 Jahren 0
Nicht wahr. Ich zitiere von Microsoft: "Wenn auf einem Client-System ein Fenster in den Vordergrund gebracht wird, haben alle Threads in dem Prozess, der den Thread enthält, der das Vordergrundfenster besitzt, ihre Anzahl verdreifacht". Dies geschieht, wenn Vordergrundaufträge Vorrang haben. Die * Quanteneinheit * ist die gleiche, jedoch nicht die Anzahl der den Prozessthreads zugewiesenen Einheiten als deren Quantum. harrymc vor 7 Jahren 0