it-swarm.com.de

Wie startet sich ein Computer neu?

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?

487
Seth Carnegie

tl; dr: 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:

Soft Power und wie es funktioniert

In den alten Tagen (nun, okay, für einen College-Studenten wie mich waren die 90er Jahre lange her) hatten wir AT (Advanced Technology) Motherboards mit AT Power Management. Das AT Energiesystem war sehr, sehr einfach. Der Netzschalter an Ihrem Computer war ein Hardware-Wechselschalter (wahrscheinlich auf der Rückseite des Gehäuses), und Ihr 120-VAC-Eingang wurde direkt durchgeschaltet. Es hat die Stromversorgung Ihres Netzteils physisch ein- und ausgeschaltet, und als sich dieser Schalter in der Position "Off" befand, war alles in Ihrem Computer vollständig leer (dies machte die CMOS - Batterie sehr wichtig, da es ohne sie keine Stromversorgung gab um die Hardware-Uhr am Laufen zu halten). Da es sich bei dem Netzschalter um einen physischen Mechanismus handelte, gab es keine Möglichkeit, die Software ein- und auszuschalten. In Windows wurde die berühmte Meldung "Es ist jetzt sicher, den Computer auszuschalten" angezeigt, da das Betriebssystem den Netzschalter nicht betätigen konnte, obwohl alles geparkt und zum Ausschalten bereit war. Diese Konfiguration wurde manchmal als hard power bezeichnet, da es sich nur um Hardware handelt.

Heutzutage sind die Dinge anders, aufgrund der Wunder von ATX Motherboards und ATX Leistung (das ist Advanced Technology eXtended, wenn Sie den Überblick behalten). Zusammen mit einer Reihe anderer Fortschritte (Mini-DIN PS/2, wer?) Brachte ATX soft power . Soft Power bedeutet, dass die Stromversorgung des Computers über Software gesteuert werden kann. Dies brachte einige wichtige Änderungen mit sich:

  • Standby-Stromversorgung: Möglicherweise wurde ein "5V SB" - oder "5V Standby" -Anschluss in den Steckerbelegungen des Netzteils angezeigt. Das Standby-Netzteil ist eine 5-V-Leitung zu Ihrem Motherboard, die immer eingeschaltet ist, auch wenn der Computer ausgeschaltet ist. Aus diesem Grund ist es wichtig, einen Netzschalter (falls vorhanden) zu entfernen oder auszuschalten, wenn Sie moderne Computer warten. Selbst wenn er ausgeschaltet ist, kann der 5-V-SB kurzgeschlossen und das Motherboard beschädigt werden. Dies ist auch der Grund, warum CMOS -Batterien nicht mehr so ​​wichtig sind - die 5-V-SB wird verwendet, um die CMOS -Batterie zu ersetzen, wenn das Netzteil mit Netzstrom versorgt wird, sodass nur die CMOS -Batterie verwendet wird Wird verwendet, wenn Sie den Computer vollständig vom Stromnetz trennen. Mit der 5V SB-Leitung können wichtige Komponenten Ihres Computers (vor allem das BIOS und die Netzwerkadapter) weiterhin einfache Software ausführen, auch wenn der Computer ausgeschaltet ist.
  • Intelligente Stromversorgungssteuerung. Wenn Sie sich eine Pinbelegung für den Motherboard-Anschluss (P1) Ihres Netzteils ansehen, werden Sie zwei Pins bemerken, die normalerweise mit PS_ON und PS_RDY gekennzeichnet sind. Diese stehen für "Power Supply On" und "Power Supply Ready". Wenn Sie experimentieren möchten, nehmen Sie ein Netzteil, das nicht an einen Computer angeschlossen ist, und schließen Sie eine Masseleitung (eines der schwarzen Kabel) vorsichtig an die PS_ON-Leitung (das grüne Kabel) an. Die Stromversorgung wird sichtbar eingeschaltet, und der Lüfter dreht sich. Die Komponenten des Motherboards, die mit +5 V SB betrieben werden, schalten Ihre Stromversorgung ein und aus, indem Sie die Stromversorgung an den PS_ON-Pin anschließen. Da das Aufladen einiger Kondensatoren und anderer Komponenten im Netzteil einen Moment dauert, sind die Spannungen an den Hauptausgängen des Netzteils möglicherweise nicht sofort nach dem Einschalten des Netzteils stabil. Hierfür ist der PS_RDY-Pin vorgesehen. Er leuchtet auf, wenn die interne Logik des Netzteils feststellt, dass das Netzteil "betriebsbereit" ist und eine stabile Stromversorgung bereitstellt. Das Motherboard wartet, bis PS_RDY eingeschaltet ist, um mit dem Booten fortzufahren.

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 Zeit festlegen, zu der der Computer täglich gestartet werden soll), und USB- und FireWire-Geräte können einen Startvorgang auslösen, obwohl mir keine Implementierung davon bekannt ist.

Grundlegendes zur Leistungssteuerung

Nun, ich erkläre die Soft Power-Sache, weil ich sie interessant finde (immer ein wichtiger Grund, warum ich sie erkläre) und weil Sie so verstehen können, wie die Stromversorgung und der Betriebs-/Ausschaltzustand Ihres Computers durch Software gesteuert werden. In den meisten aktuellen Computern ist dieses Softwaresystem eine Implementierung des Advanced Configuration and Power Interface oder 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 Prozesse zum Herunterfahren/Ruhezustand, die vor dem tatsächlichen Ausschalten der Stromversorgung stattfinden) und das Motherboard dann anweist, den Stromversorgungszustand zu wechseln . Die Leistungszustände sehen folgendermaßen aus:

  • G0: Funktioniert (der Computer ist eingeschaltet)
  • G1: Sleeping (Standby-Status Ihres Computers, aufgeteilt in die Unterzustände S)
    • S1: Stromversorgung der CPU und RAM bleibt eingeschaltet, aber die CPU führt keine Anweisungen aus. Peripheriegeräte sind ausgeschaltet.
    • S2: CPU ausgeschaltet, RAM beibehalten
    • S3: Alle Komponenten außer RAM und Geräte, die eine Wiederaufnahme auslösen (Tastatur), sind ausgeschaltet. Wenn Sie Ihrem Betriebssystem mitteilen, dass es sich im Energiesparmodus befindet, werden die Prozesse gestoppt und dieser Modus aufgerufen.
    • S4: Winterschlaf. Absolut alles ist ausgeschaltet. Wenn Sie Ihr Betriebssystem anweisen, in den Ruhezustand zu wechseln, werden Prozesse angehalten, der Inhalt von RAM wird auf der Festplatte gespeichert und anschließend in diesen Modus gewechselt.
  • G2: Soft Off. Dies ist der Status "Aus" Ihres Computers. Alles außer Geräten, die einen Systemstart auslösen können, ist ausgeschaltet.
  • G3: Mechanisch aus.

Wie das Zurücksetzen tatsächlich geschieht

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 fast nichts . Es gibt einen ACPI-Rücksetzbefehl . Wenn Sie dem Betriebssystem anweisen, neu zu starten, wird es normal heruntergefahren (alle Prozesse werden angehalten, einige Wartungsarbeiten werden ausgeführt, die Bereitstellung Ihrer Dateisysteme wird aufgehoben usw.). 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.

  • Alle Logik wird zurückgesetzt. Dies bedeutet, dass die entsprechenden Rücksetzbefehle an verschiedene Hardwarebits gesendet werden, einschließlich der CPU, des Speichercontrollers, der Peripheriecontroller usw. In den meisten Fällen bedeutet dies einfach, dass eine physische RST-Leitung aufleuchtet, wie AndrejaKo oben gezeigt hat.
  • Der Computer wird dann gebootet. Dies ist der Teil "Aktionen wie bei einem Kaltstart ausführen". Das Motherboard führt die gleichen Schritte aus, als ob das Netzteil erst nach dem Drücken des Netzschalters betriebsbereit wäre.

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 ein anderer Start Trigger nicht verwendet werden muss (WOL usw.) und ermöglicht es Ihnen, Reboot als ein wirksames Mittel zu verwenden, um das System aus der Ferne zurückgesetzt werden, wenn Sie Boot nicht eine Möglichkeit haben, 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.

595
jcrawfordor

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 Reset-Pins 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, wird der Computer hochfahren. 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, merkwürdig 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.

386EX datasheet figure 2

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 eines hohen Niveaus funktionieren, da es ein ziemlich kompliziertes System ist.

80
AndrejaKo

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 jeder Vorwand, dass dies jemals funktioniert, ist eine Art von aufwendiger Fiktion. Einige Computer sind sehr wählerisch in Bezug auf Hardware, die sich in dem Zustand befindet, den Windows programmieren würde. Einige Maschinen arbeiten in 9 von 10 und dann einsperren wegen irgendeines seltsamen Timing-Problem. Und andere einfach überhaupt nicht arbeiten. Hurra!

  • dreifach - Versuch, einen Dreifachfehler zu erzeugen. Dies wird durch Laden eine leere Interrupt-Deskriptortabelle getan und dann int Aufruf (3). 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.

  • efi - EFI Laufzeitdienste bieten einen Einstiegspunkt die Maschine neu zu starten. 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 IO Speicherplatz) und einen Wert angeben, der dort geschrieben werden soll. 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.

27
jabiko

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 setzen Sie den Befehlszeiger der CPU auf diese Adresse) 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 auch den Instruction Pointer an dieselbe Adresse zwingen würden.

Eine Google-Suche nach JMP FFFF: 0000 enthüllt dazu viele interessante Seiten.

10
krubo

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. Wenn er in eine Endlosschleife gerät, kann er dem Watchdog nicht signalisieren, dass er noch wie beabsichtigt läuft. 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.

9
Marcel

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 in RAM nach einem bestimmten Muster, das möglicherweise durch den zuvor ausgeführten Code festgelegt wurde. Wenn dieser Code vorhanden war, wurden einige der Diagnosen für POST (Selbsttest beim Einschalten) übersprungen. Das Muster wäre nur bei einem "warmen" Start vorhanden.

4
Daniel R Hicks