Was ist der Algorithmus hinter sleep()?

Nun, es gibt etwas, was ich mich immer gefragt: wie ist sleep() implementiert ?

Wenn es ist alles über die Verwendung einer API vom OS, dann ist, wie die API gemacht ?

Macht alles einkochen, mit speziellen Maschinen-code auf der CPU ? Nicht, dass die CPU Sie benötigen eine spezielle co-Prozessoren oder anderen gizmo, ohne die Sie nicht haben kann sleep() ?

Die bekannteste Inkarnation von sleep() ist in C (um genauer zu sein, in den Bibliotheken, die mit C-Compilern wie dem GNU libc), obwohl fast jede Sprache hat heute seine Entsprechung, aber die Umsetzung des Schlafes in einigen Sprachen (denken Sie an die Bash), ist nicht das, was wir suchen, in dieser Frage...

EDIT: Nach der Lektüre einige der Antworten, sehe ich, dass der Prozess in einer wait-queue. Von dort aus kann ich denke, zwei alternativen, entweder

  1. ein timer ist so eingestellt, dass der kernel weckt den Prozess rechtzeitig, oder
  2. wenn der kernel erlaubt eine Zeitscheibe, es fragt die Uhr, um zu prüfen, ob es Zeit zu wecken, ein Prozess.

Antworten erwähnen nur die alternative 1. Daher Frage ich: wie funktioniert das timer-Verhalten ? Wenn es ein einfaches unterbrechen, damit der kernel wake den Prozess, wie kann das kernel-Fragen Sie den timer auf "wake me up in 140 Millisekunden, so kann ich den Prozess in den Status "wird ausgeführt" ?

InformationsquelleAutor Leonel | 2008-10-06
Schreibe einen Kommentar