Ich bin ein Neuling auf Linux Kernel. Derzeit habe ich in Idle-Codes untersucht und hatte eine Frage. Wenn der Prozessor keine Funktionen in seiner eigenen Runqueue hat, kann er in den Leerlaufmodus wechseln, spezifische WFI (für Interrupt). (Alles, was ich erwähnte, ist über ARM-Architektur nicht X86. So etwas ist falsch für X86.) Nach dem Bleiben im WFI-Zustand, möglicherweise andere Prozessor (nicht im Leerlauf) ihre Aufgabe zu diesem Leerlauf-Prozessor (nach Lastbalance) zu verbreiten . Zu dieser Zeit macht ein beschäftigt Prozessor Aufgabe imitiert. Aus meiner Sicht sollte der untätige Prozessor bei der Imigration der Task sofort aufwachen, um die Task zu verarbeiten. Recht? Ich konnte jedoch keine Codes finden, die Leerlaufprozessor aufwecken, sondern nur Codes über das Registrieren der Task zur RunQueue des Leerlaufprozessors gefunden haben.Wie aktiviert der Linux-Kernel den Leerlaufprozessor, wenn eine neue Aufgabe erstellt wurde?
Ich würde gerne wissen, welcher Mechanismus hinter Aufwachen Prozessor steht, wenn neue Aufgabe gegeben wird. Oder es einfach Aufgabe von einer Warteschlange auf andere zu verschieben, als es sein, bis durch aufgeweckt einige unvorhersehbare IRQ?
Bitte zeigen Sie mir die Wahrheit :)
Dies ist für Thread aufwachen, nicht für CPU-Wakeup. Das PF_WAKE_UP_IDLE-Flag ist im Linux-Kernel 3.18 und höher nicht vorhanden. – Zhifei