Thread-Zustände Linux vs Windows


2

Linux hat: bereit, blockiert, läuft, beendet.

Windows hat: Bereit, Zurückgestellt bereit, Standby, Laufen, Warten, Beendet, Initialisiert.

Warum hat Windows so viele Zustände? Welchen Vorteil bietet diese zusätzliche Komplexität?


Dies ist eine Frage zu Windows, keine Frage zur Wissenschaft. Möglicherweise steckt dahinter eine wissenschaftliche Frage (warum solche Zustände nützlich sind), aber dazu müsste man wissen, wie diese Zustände verwendet werden.
Gilles

kurze antwort ... terminplanung. Da Windows über mehr Status verfügt, kann es eine differenziertere Planung von Threads durchführen, die auf ihrer Fähigkeit basiert, zu einem bestimmten Zeitpunkt ausgeführt zu werden. Es hat keinen Sinn, einen Prozess in einer Wartezeit anzugeben, genauso wenig wie es Sinn macht, einen Thread in einem initialisierten Zustand anzuhalten. Dies ist ein immens komplexes Thema, und es gab viele Debatten und Auseinandersetzungen darüber, wie Linux Thread-Scheduling durchführt (siehe die Con Kolivas-Kontroverse), was Ihnen einen gewissen Kontext geben könnte. Das TLDR ist Standard Linux ist für Serverlasten optimiert und Windows ist für die Desktop-Reaktionsfähigkeit.
Frank Thomas

Vielen Dank für Ihre Antwort @FrankThomas. Ich habe heute über das Thema gelesen und brauchte eine Anleitung, warum sie so viele Staaten ausgewählt haben.
Nickolouse

Antworten:


4

Ein laufender Thread ist der Thread, der derzeit auf einem Prozessor ausgeführt wird. Der Lauf Faden wird aus der Liste der ausgewählten Bereit - Threads für diesen Prozessor, die Fäden sind , die gut sind vertauscht zu werden in auszuführen. Das Standby - Gewinde ist der Bereit - Thread, wird zur Zeit ausgewählt , um den ausgelagert werden Laufzustand als nächsten auf diesem Prozessor. Dies kann sich jedoch ändern, wenn ein Thread mit höherer Priorität bereit ist, bevor die Änderung vorgenommen wird.

Deferred Ready ist ein globaler Status, der angibt, dass der Thread auf einem beliebigen Prozessor ausgeführt werden kann. Dies kann beispielsweise für eine CPU verwendet werden, um einen Thread mit hoher Priorität auf einer anderen CPU zu planen.

Threads, die nicht zur Ausführung bereit sind, erhalten den Status, der durch den Grund bestimmt wird, aus dem sie nicht ausgeführt werden können:

  • Threads werden während der Erstellung in den Status " Initialisiert" versetzt .
  • Threads können auf ein Ereignis warten , z. B. auf eine Synchronisierung oder einen E / A-Abschluss, oder sie können gezwungen sein, zu warten, wenn sie auf Speicher zugreifen, der auf die Festplatte ausgelagert ist. Sobald das Ereignis signalisiert wurde oder das Timeout abgelaufen ist, kann der Thread erneut ausgeführt werden.
  • Threads werden in den Übergangszustand versetzt, da ihr Kernel-Stack ausgelagert wurde. Diese Threads können erst ausgeführt werden, wenn ihr Kernel-Stack wieder verfügbar ist.
  • Fäden , die ausgetreten sind , werden in platziert Terminated - Zustand , bis das System gereinigt wird.

Bildbeschreibung hier eingeben

Es sollte beachtet werden, dass Thread-Zustände vollständig von Planungsprioritäten getrennt sind, die die Reihenfolge bestimmen, in der Threads zur Ausführung ausgewählt werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.