2013-08-02 12 views
8

Ich habe zuerst gelernt, wie Computer in Bezug auf eine primitive einzelne gespeicherte Programmmaschine arbeiten.Wie läuft eine CPU im Leerlauf (oder läuft unter 100%)?

Jetzt lerne ich über Multitasking-Betriebssysteme, Terminplanung, Kontextwechsel usw. Ich denke, ich habe ein ziemlich gutes Verständnis von allem, bis auf eine Sache. Ich habe mir immer eine CPU als etwas vorgestellt, das gerade nonstop vorwärts fährt. Es weiß immer, wohin es als nächstes geht (Programmzähler), und es geht ad infinitum zu dieser Anweisung usw.

Offensichtlich ist dies nicht der Fall, da meine Desktop-CPU nicht immer mit 100% läuft. Wie schaltet sich die CPU ab oder drosselt sich selbst, und welche Rolle spielt das Betriebssystem dabei? Ich nehme an, irgendwo gibt es eine Eingabe in der CPU, die es ermöglicht, das System auszuschalten ... und das OS kann dies einstellen, wenn es nichts zu planen hat, aber die nächste logische Frage ist, wie es wieder startet? Ich vermute, entweder eines von zwei Dingen:

  • Es schaltet sich nie ganz nach unten, läuft nur auf einem sehr niedrigen Frequenz wartet der Scheduler zu bekommen beschäftigt wieder
  • Es schaltet komplett ab, sondern wird durch Interrupts aufgeweckt

Ich suchte überall nach Informationen darüber und kam ziemlich leer aus. Jede Einsicht würde sehr geschätzt werden.

Antwort

3

Die Antwort ist, dass hängt von der Hardware, dem Betriebssystem und der Art ab, wie das Betriebssystem konfiguriert wurde.

Und es könnte eine oder beide der Strategien, die Sie vorgeschlagen haben, beinhalten.

Eine weitere Möglichkeit für Computer, die auf der x86-Architektur basieren, besteht darin, dass x86 über eine HLT instruction verfügt, die den Kern anhält, bis er einen externen Interrupt empfängt. Die Task "Idle" könnte HLT einfach in einer engen Schleife ausführen.

+0

Danke Stephen, und danke für den Link! –

2

Gehen Sie einfach zum Task-Manager, Registerkarte Leistung, und beobachten Sie die CPU-Nutzung, während Sie absolut nichts auf Ihrem Computer tun. es hört nie auf zu schwanken. Wenn ein Betriebssystem wie Windows läuft, wird die CPU IMMER funktionieren, sie wird niemals komplett heruntergefahren.

Wenn Ihr Monitor ein Bild anzeigt, benötigt Ihre CPU eine Funktion, die es ermöglicht, alles anzuzeigen. etc.

Alles läuft durch die CPU, genau wie dein Gehirn, es steuert alles. ohne sie würde nichts funktionieren.

1

Wenn über die x86-Architektur gesprochen wird, wenn ein Betriebssystem nichts zu tun hat, kann es den HLT-Befehl verwenden. HLT-Befehl stoppt die CPU bis zum nächsten Interrupt. Weitere Informationen finden Sie unter http://en.m.wikipedia.org/wiki/HLT.

Andere Architekturen haben ähnliche Anweisungen, um CPU Ruhe zu geben.

+0

Danke, ich mag deine Antwort von Stephen schlug dich um eine Minute. :-) –

1

Einige CPUs haben eine 'Warte auf Interrupt'-Anweisung, die es der CPU erlaubt, die Ausführung von Befehlen zu stoppen, wenn nichts zu tun ist, und sie wird nicht wieder aufleuchten, bis ein Interrupt-Ereignis eintritt. Dies ist besonders nützlich in Mikrocontrollern, wo sie lange Zeit warten können, bis etwas passiert.

  • Intel = HLT (Halt)
  • ARM = WFI (Warten auf Interrupt)

Manchmal ist ein 'busy wait' auch verwendet wird, in dem der CPU in einem kleinen Schleife 'Leerlauf' sitzt und nach Dingen suchen, die man machen kann. In diesem Fall führt die CPU noch Anweisungen aus, das Betriebssystem befindet sich jedoch im Leerlaufzustand. Es ist nicht so effizient wie mit einem HLT.

Moderne CPUs können auch ihren Stromverbrauch anpassen und Taktraten reduzieren oder Teile der CPU, die nicht verwendet werden, herunterfahren. Auf diese Weise kann der Energieverbrauch während eines aktiven Ruhezustands geringer als während der aktiven Verarbeitung sein, obwohl die Kern-CPU noch läuft und Anweisungen ausführt.