Wie kann sich ein Computer neu starten? Wie sagt es sich, wenn es ausgeschaltet ist, dass es wieder eingeschaltet werden soll? Was für eine Software kann das?
Wie kann sich ein Computer neu starten? Wie sagt es sich, wenn es ausgeschaltet ist, dass es wieder eingeschaltet werden soll? Was für eine Software kann das?
Antworten:
tl; dr: Die Energiezustände in Ihrem Computer werden durch eine Implementierung von ACPI (Advanced Configuration and Power Interface) gesteuert. Am Ende eines Herunterfahrvorgangs legt Ihr Betriebssystem einen ACPI-Befehl fest, der angibt, dass der Computer neu gestartet werden soll. In Reaktion darauf setzt das Motherboard alle Komponenten mit ihren jeweiligen Rücksetzbefehlen oder -zeilen zurück und folgt dann dem Bootstrap-Prozess. Das Motherboard schaltet sich nie aus, sondern setzt nur verschiedene Komponenten zurück und verhält sich dann so, als ob der Netzschalter gerade gedrückt worden wäre.
Lang und weitläufig, aber meiner Meinung nach interessantere Antwort:
In den alten Tagen (na ja, okay, für einen College-Studenten wie mich waren die 90er Jahre lange her) hatten wir AT-Motherboards (Advanced Technology) mit AT-PowerVerwaltung. Das AT-Energiesystem war sehr, sehr einfach. Der Ein- / Ausschalter an Ihrem Computer war ein Hardware-Schalter (wahrscheinlich auf der Rückseite des Gehäuses), und Ihr 120-VAC-Eingang ging direkt hindurch. Es hat die Stromversorgung Ihres Netzteils physisch ein- und ausgeschaltet, und als sich dieser Schalter in der Aus-Position befand, war alles in Ihrem Computer vollständig leer (dies machte die CMOS-Batterie sehr wichtig, da es ohne Stromversorgung kein Netzteil gab, um die Hardware zu halten tickt die Uhr). Da es sich bei dem Netzschalter um einen physischen Mechanismus handelte, gab es keine Software zum Ein- und Ausschalten. Windows zeigte die berühmte Meldung "Es ist jetzt sicher, den Computer auszuschalten" an, da das Betriebssystem den Netzschalter nicht betätigen konnte, obwohl alles geparkt und zum Ausschalten bereit war. Diese Konfiguration wurde manchmal als bezeichnetharte Macht , denn es ist alles Hardware.
Heutzutage sind die Dinge anders, aufgrund der Wunder der ATX-Motherboards und der ATX-Leistung (das ist Advanced Technology eXtended, wenn Sie den Überblick behalten). Zusammen mit einigen anderen Fortschritten (Mini-DIN PS / 2?) Brachte ATX Soft Power . Soft Power bedeutet, dass die Stromversorgung des Computers über Software gesteuert werden kann. Dies brachte einige wichtige Änderungen mit sich:
Ihr Netzschalter "schaltet" den Computer also nicht mehr ein. Stattdessen ist es mit den Basis-Controllern Ihres Motherboards verbunden, die erkennen, dass die Taste gedrückt wurde, und eine Reihe von Schritten ausführen, um das System vorzubereiten, einschließlich des Einschaltens von PS_ON, damit Strom zur Verfügung steht. Der Einschaltknopf ist nicht die einzige Möglichkeit, den Startvorgang auszulösen. Geräte auf Ihrem Erweiterungsbus können dies auch tun. Dies ist wichtig, da Ihre Ethernet-Netzwerkadapter tatsächlich eingeschaltet bleiben, wenn Ihr Computer ausgeschaltet ist, und nach einem sehr spezifischen Paket suchen, das oft als "Magic-Paket" bezeichnet wird. Wenn sie dieses an ihre MAC-Adresse adressierte Paket erkennen, lösen sie den Startvorgang aus. So funktioniert "Wake-on-LAN" (WoL). Die Uhr kann auch einen Startvorgang einleiten (in den meisten BIOS-Versionen können Sie eine Uhrzeit festlegen, zu der der Computer täglich gestartet werden soll).
Nun, ich erkläre die Soft Power-Sache sowohl, weil ich sie interessant finde (immer ein wichtiger Grund, warum ich sie erkläre), als auch, weil Sie so verstehen können, wie die Stromversorgung und der Betriebs- / Ausschaltzustand Ihres Computers durch Software gesteuert werden. Bei den meisten aktuellen Computern ist dieses Softwaresystem eine Implementierung des Advanced Configuration and Power Interface (ACPI) . ACPI ist ein standardisiertes, einheitliches System, mit dem die Software das Stromversorgungssystem Ihres Computers steuern kann. Möglicherweise haben Sie von den ACPI-Energiezuständen gehört. Der grundlegende Mechanismus der Stromversorgungssteuerung sind diese "Stromversorgungszustände". Ihr Betriebssystem wechselt zwischen den Stromversorgungsmodi, indem es den Switch vorbereitet (die Vorgänge zum Herunterfahren / Ruhezustand, die vor dem tatsächlichen Ausschalten des Stroms stattfinden) und dann das Motherboard anweist, den Stromversorgungszustand zu wechseln . Die Leistungszustände sehen folgendermaßen aus:
Sie werden feststellen, dass der Neustart nicht zu diesen Zuständen gehört. Was passiert eigentlich, wenn Ihr Computer neu gestartet wird? Die Antwort mag überraschen, denn aus Sicht der Energieverwaltung ist es so gut wie nichts . Es gibt einen ACPI-Rücksetzbefehl. Wenn Sie das Betriebssystem anweisen, neu zu starten, wird es normal heruntergefahren (alle Prozesse werden gestoppt, einige Wartungsarbeiten werden ausgeführt, die Bereitstellung Ihrer Dateisysteme wird aufgehoben usw.) und anschließend wird der Computer in den Energiesparmodus versetzt G2 (wie es wäre, wenn Sie einfach gesagt hätten, dass es heruntergefahren werden soll) setzt den Reset-Befehl. Dies wird im Allgemeinen als "Reset-Register" bezeichnet, da es sich wie bei den meisten ACPI-Schnittstellen nur um eine Adresse handelt, in die ein bestimmter Wert geschrieben werden muss, um einen Reset anzufordern. Ich zitiere die 2.0-Spezifikation zu den Funktionen:
Der optionale ACPI-Rücksetzmechanismus gibt einen Standardmechanismus an, der ein vollständiges Zurücksetzen des Systems ermöglicht. Wenn dieser Mechanismus implementiert ist, muss er das gesamte System zurücksetzen. Dies umfasst Prozessoren, Kernlogik, alle Busse und alle Peripheriegeräte. Aus OSPM-Sicht ist das Aktivieren des Rücksetzmechanismus das logische Äquivalent zum Aus- und Einschalten der Maschine. Wenn OSPM nach einem Reset die Steuerung übernimmt, führt es Aktionen wie bei einem Kaltstart durch.
Wenn also das Reset-Register gesetzt ist, passieren einige Dinge der Reihe nach.
Der Endeffekt dieser beiden Schritte (die sich tatsächlich in viel mehr Schritte aufteilen) ist, dass alles so aussieht, als würde der Computer gerade gestartet, aber der Strom war tatsächlich die ganze Zeit eingeschaltet. Dies bedeutet weniger Zeit für das Herunterfahren und Hochfahren (da Sie nicht warten müssen, bis das Netzteil betriebsbereit ist), und ermöglicht vor allem, dass der Startvorgang durch das Herunterfahren des Betriebssystems initiiert wird. Dies bedeutet, dass kein weiterer Start-Trigger verwendet werden muss (WoL usw.) und dass Sie mit Reboot das System aus der Ferne zurücksetzen können, wenn Sie keine Möglichkeit haben, den Startvorgang auszulösen.
Das war eine lange Antwort. Aber hey, hoffentlich wissen Sie jetzt mehr über Computer-Power-Management. Ich habe sicher einige Dinge gelernt, die das erforschen.
Hier ist ein Ausgangspunkt:
Chips schalten sich normalerweise nicht aus und dann wieder ein. Stattdessen gibt es eine Reset-Leitung, die den Prozessor in den sogenannten Reset-Zustand versetzt, wenn normalerweise der gesamte Speicher gelöscht wird und der Prozessor so aussieht, als wäre er gerade eingeschaltet worden. Während dieser Pin hoch gehalten wird (oder niedrig, abhängig vom Prozessor), wird der Prozessor zurückgesetzt. Sobald der Pin losgelassen wurde, wird der Startvorgang normal fortgesetzt, als wäre er zum ersten Mal eingeschaltet worden. Der Punkt dabei ist, dass es selbst keinen Stromausfall gibt.
Wie lässt sich das auf größere Systeme wie moderne PCs übertragen? Nun, moderne Computer bestehen aus Computern, die manchmal selbst aus Computern bestehen. Wenn Sie also den Computer auf Zurücksetzen einstellen, werden "Computer", die den Computer veranlassen, ihren Status zu speichern (wenn das Zurücksetzen gesteuert wird), oder nur ihre Rücksetzstifte gezogen.
Einige Prozessoren und Mikrocontroller (kleine eigenständige Computer, die normalerweise 20 Jahre hinter den modernen Desktop-Computern zurückliegen) können sich mithilfe interner Schalter zurücksetzen. Wie gesagt, sobald das Signal, das das Zurücksetzen erzeugt, weg ist, startet der Computer. Die Prämisse in der Frage ist also nicht ganz richtig. Der Computer weiß nicht, wann er sich einschalten soll. Wenn bekannt ist, wann es "aus" oder "zurückgesetzt" sein muss und wenn das Signal, das es dort hält, weg ist, wird es eingeschaltet.
Dieses Verhalten kann auf modernen Computern, die zu einer bestimmten Zeit oder über ein Netzwerk usw. eingeschaltet werden können, seltsam aussehen. Wie gesagt, Computer bestehen aus Computern. Während der Hauptprozessor ausgeschaltet sein kann, können sich zahlreiche andere Chips und Mikrocontroller darin befinden, die eingeschaltet sind. Der offensichtlichste Fall ist die Echtzeituhr, die häufig batteriebetrieben ist. Es kann dann andere Chips einschalten, wodurch andere Chips eingeschaltet werden, und die Kettenreaktion wird fortgesetzt, bis der gesamte Computer eingeschaltet ist. Auf heutigen Computern gibt es eine Netzteilleitung mit der Bezeichnung +5 VDC Standby-Spannung. Es versorgt verschiedene Geräte, die eingeschaltet sind, wenn der Computer ausgeschaltet ist, mit ca. 50 mW Strom.
Ein bisschen Trivia: Der Reset-Pin des Intel 386 EX-Prozessors hat die Pin-Nummer 110.
Auf Intel i7-900 ist es die Landnummer AL39.
Ich hoffe, dass jemand in der Lage sein wird, eine Antwort zu geben, die erklärt, wie die Dinge aus der Sicht der höheren Ebene funktionieren, da es sich um ein recht kompliziertes System handelt.
Dieser Blog-Beitrag beschreibt, wie Linux einen Neustart auslöst.
Auszug:
Linux bietet verschiedene Möglichkeiten, um einen x86 zurückzusetzen. Einige von ihnen sind nur 32-Bit und deshalb werde ich sie einfach ignorieren, weil ehrlich gesagt genau das, was Sie mit Ihrem Leben machen. Sie sind auch schrecklich. So, das lässt uns mit fünf von ihnen.
kbd - Neustart über den Tastaturcontroller. Auf dem ursprünglichen IBM PC war die CPU-Reset-Leitung mit dem Tastaturcontroller verbunden. Durch Schreiben des entsprechenden magischen Werts wird die Linie gepulst und die Maschine zurückgesetzt. Dies ist alles sehr einfach, mit Ausnahme der Tatsache, dass moderne Maschinen keine Tastatur-Controller haben (sie sind tatsächlich Teil des eingebetteten Controllers) und noch modernere Maschinen nicht einmal so tun, als hätten sie einen Tastatur-Controller. Jetzt führen Embedded-Controller Software aus. Und wie wir alle wissen, ist Software schrecklich. Schlimmer noch, die Software auf dem Embedded-Controller wurde von BIOS-Autoren geschrieben. So klar, dass jeder Vorwand, dass dies jemals funktioniert, eine Art ausgefeilte Fiktion ist. Einige Computer sind sehr wählerisch in Bezug auf Hardware, die sich genau in dem Zustand befindet, den Windows programmieren würde. Einige Maschinen arbeiten 9-mal von 10 und blockieren dann aufgrund eines ungeraden Timing-Problems. Und andere funktionieren einfach überhaupt nicht. Hurra!
Dreifach - Versuch, einen Dreifachfehler zu erzeugen. Dazu wird eine leere Interrupt-Deskriptor-Tabelle geladen und anschließend int (3) aufgerufen. Der Interrupt schlägt fehl (es gibt keinen IDT), der Fehlerbehandler schlägt fehl (es gibt keinen IDT) und die CPU tritt in einen Zustand ein, der theoretisch einen Reset auslösen sollte. Es scheint jedoch nicht erforderlich zu sein, dass dies geschieht, und es funktioniert einfach nicht auf einer Reihe von Maschinen.
pci - eigentlich nicht pci. Der herkömmliche Zugriff auf den PCI-Konfigurationsraum wird durch Schreiben eines 32-Bit-Werts in den Io-Port 0xcf8 erreicht, um den Bus, das Gerät, die Funktion und das Konfigurationsregister zu identifizieren. Port 0xcfc enthält dann das betreffende Register. Wenn Sie jedoch das entsprechende Paar magischer Werte in 0xcf9 schreiben, wird der Computer neu gestartet. Spektakulär! Und in keiner Weise standardisiert (sicherlich nicht Teil der PCI-Spezifikation), so dass unterschiedliche Chipsätze unterschiedliche Anforderungen haben können. Booo.
Die Laufzeitdienste von efi - EFI bieten einen Einstiegspunkt für den Neustart des Computers. Es funktioniert normalerweise sogar! Solange die EFI-Laufzeitservices überhaupt funktionieren, kann dies sehr aufwändig sein.
acpi - In neueren Versionen der ACPI-Spezifikation können Sie eine Adresse (normalerweise Speicher- oder System-E / A-Bereich) und einen Wert zum Schreiben dort angeben. Die Idee ist, dass das Schreiben des Werts in die Adresse das System zurücksetzt. Es stellt sich heraus, dass dies oft fehlschlägt. Es ist auch unmöglich, die PCI-Neustartmethode über ACPI darzustellen, da für die PCI-Neustartmethode ein Wertepaar erforderlich ist und ACPI Ihnen nur einen gibt.
Es frobt einen E / A-Speicherort, der eine Datenleitung nach unten zieht und der CPU mitteilt, dass sie anhalten und Code von einem bestimmten Speicherort im BIOS ausführen soll.
In früheren Zeiten vor der Energieverwaltung konnten sich die Computer natürlich immer noch selbst neu starten. (Weiß noch jemand, wann ein eingefrorenes Programm bedeutete, dass Sie Strg + Alt + Entf verwenden mussten, um den Computer neu zu starten?)
Auf meinem alten 486 würde der Assembler-Befehl JMP FFFF:0000
(dh, der Befehlszeiger der CPU wird auf diese Adresse gesetzt) den gesamten Computer neu starten. Mit anderen Worten, FFFF: 0000 adressiert einen Speicherort im BIOS, der Anweisungen dazu enthält, was der Computer beim ersten Start tun soll. Ich vermute, dass der in der Antwort von AndrejaKo beschriebene Reset-Pin oder die Reset-Buttons in den Tagen vor dem Power-Management den Instruction Pointer ebenfalls auf dieselbe Adresse zwingen würden.
Eine Google-Suche nach JMP FFFF: 0000 enthüllt viele interessante Seiten dazu.
Es gibt auch eine Sache namens Watchdog. Dieses Gerät dient als Totmannschalter. Der Computer muss dem Watchdog jede Minute signalisieren, dass er noch am Leben ist. Wenn der Computer abstürzt, z. B. wenn er in eine Endlosschleife gerät, signalisiert er dem Watchdog nicht, dass er noch wie vorgesehen ausgeführt wird. In diesem Fall führt der Watchdog einen Hardware-Reset durch. Dies wurde in der beliebten TV-Serie des Terminators demonstriert, bei der ein Roboter durch einen Hochspannungsstoß ausgeschaltet wurde. es würde sich in 2 Minuten selbst zurücksetzen.
Zurück auf dem alten IBM PC-1 handhabte der Tastaturcontroller seltsamerweise einen Neustart. IBM baute einen kleinen Mikroprozessor für die Tastatur ein und verfügte über einige freie E / A-Leitungen. Daher verwendeten sie eine der Leitungen, um die Rücksetzleitung der Haupt-CPU anzusteuern. Ein an die Tastatursteuerung gesendeter Befehl würde dazu führen, dass die CPU zurückgesetzt wird, als ob die Stromversorgung gerade eingeschaltet worden wäre.
Ich gehe davon aus, dass diese Tradition bis weit in die "AT" -Ära hinein fortgesetzt wurde, und es kann Spuren davon geben, die heute in ACPI verblieben sind.
Hinzugefügt: Es gibt ein interessantes Detail zum obigen Reset-Schema. Während der frühen Startsequenz suchte der Code nach einem bestimmten Muster im RAM, das möglicherweise durch den zuvor ausgeführten Code festgelegt wurde. Wenn dieser Code vorhanden war, wurden einige der POST-Diagnosen (Selbsttest beim Einschalten) übersprungen. Das Muster wäre nur bei einem "warmen" Start vorhanden.