Comment un ordinateur peut-il redémarrer tout seul? Une fois éteint, comment se dit-il de se rallumer? Quel type de logiciel est ce qui peut faire ça?
Comment un ordinateur peut-il redémarrer tout seul? Une fois éteint, comment se dit-il de se rallumer? Quel type de logiciel est ce qui peut faire ça?
Réponses:
tl; dr: les états d'alimentation de votre ordinateur sont contrôlés par une implémentation d'ACPI (configuration avancée et interface d'alimentation). À la fin du processus d'arrêt, votre système d'exploitation définit une commande ACPI indiquant que l'ordinateur doit redémarrer. En réponse, la carte mère réinitialise tous les composants à l'aide de leurs commandes ou lignes de réinitialisation respectives, puis suit le processus d'amorçage. La carte mère ne s'éteint jamais, elle réinitialise différents composants, puis se comporte comme si le bouton d'alimentation venait juste d'être appuyé.
Réponse longue et décousue mais (à mon avis) plus intéressante:
Dans les temps anciens (bon d'accord, pour un étudiant comme moi, il y a très longtemps dans les années 90), nous avions des cartes mères AT (Advanced Technology) avec alimentation ATla gestion. Le système d'alimentation AT était très, très simple. Le bouton d’alimentation de votre ordinateur était une bascule matérielle (probablement située à l’arrière du boîtier) et votre entrée 120vac le traversait. Cela allumait et éteignait physiquement votre alimentation, et lorsque cet interrupteur était en position Off, tout dans votre ordinateur était complètement à plat (cela rendait la pile CMOS très importante, car sans elle, il n'y avait pas d'alimentation pour conserver le matériel tic-tac d'horloge). Parce que l'interrupteur d'alimentation était un mécanisme physique, il n'existait aucun moyen logiciel d'allumer et d'éteindre l'alimentation. Windows affiche le fameux message "Vous pouvez maintenant éteindre votre ordinateur en toute sécurité" car, bien que tout soit parqué et prêt à être éteint, il était impossible pour le système d'exploitation d'inverser le commutateur d'alimentation. Cette configuration a parfois été appeléepuissance dure , parce que c'est tout le matériel.
De nos jours, les choses sont différentes, à cause des merveilles des cartes mères ATX et de l' alimentation ATX (c'est Advanced Technology eXtended si vous faites le suivi). Parallèlement à plusieurs autres avancées (mini-DIN PS / 2, ça vous tente?), ATX a apporté la puissance douce . Soft power signifie que l'alimentation de l'ordinateur peut être contrôlée par logiciel. Cela a entraîné quelques modifications d'importation:
Votre interrupteur d'alimentation ne met donc plus l'ordinateur "sous tension". Au lieu de cela, il est connecté aux contrôleurs de base de votre carte mère, qui détectent que le bouton a été enfoncé et exécutent un certain nombre d'étapes pour préparer le système, notamment en allumant PS_ON pour que l'alimentation soit disponible. Le bouton d'alimentation n'est pas le seul moyen de déclencher le processus de démarrage, les périphériques de votre bus d'extension peuvent également le faire. Cela est important car vos cartes réseau Ethernet restent activées lorsque votre ordinateur est éteint et recherchent un paquet très spécifique, souvent appelé "paquet magique". S'ils détectent ce paquet adressé à leur adresse MAC, ils déclencheront le processus de démarrage. Voici comment fonctionne "Wake-on-LAN" (WL). L’horloge peut également lancer un démarrage (la plupart des BIOS vous permettent de définir une heure de démarrage de l’ordinateur chaque jour),
Eh bien, j’explique le soft power à la fois parce que j’estime que c’est intéressant (c’est toujours une raison essentielle pour expliquer les choses) et parce que cela vous permet de comprendre comment l’alimentation et l’état de marche / arrêt de votre ordinateur sont tous contrôlés par logiciel. Dans la plupart des ordinateurs actuels, ce système logiciel est une implémentation de l' interface de configuration avancée et de l'alimentation, ou ACPI . ACPI est un système normalisé et unifié permettant à un logiciel de contrôler le système d'alimentation de votre ordinateur. Vous avez peut-être entendu parler des états d'alimentation ACPI. Le mécanisme de base du contrôle de l'alimentation est constitué de ces "états d'alimentation", votre système d'exploitation bascule entre les modes d'alimentation en se préparant au basculement (processus d'arrêt / mise en veille prolongée qui se produisent avant la mise hors tension réelle), puis en commandant à la carte mère de passer en mode d'alimentation. . Les états de puissance ressemblent à ceci:
Vous remarquerez que le redémarrage n'est pas l'un de ces états. Alors, que se passe-t-il lorsque votre ordinateur redémarre? La réponse peut être surprenante, car du point de vue de la gestion de l’énergie, ce n’est presque rien . Il y a une commande de réinitialisation ACPI. Lorsque vous demandez à votre système d'exploitation de redémarrer l'ordinateur, celui-ci suit son processus d'arrêt normal (arrête tous vos processus, effectue un peu de maintenance, démonte vos systèmes de fichiers, etc.), puis effectue la dernière étape au lieu d'envoyer la machine à l'état d'alimentation. G2 (comme si vous aviez simplement dit à Arrêter), la commande de réinitialisation est définie. C'est ce que l'on appelle généralement le "registre de réinitialisation", car comme la plupart des interfaces ACPI, il s'agit simplement d'une adresse sur laquelle une valeur spécifique doit être écrite pour demander une réinitialisation. Je citerai la spécification 2.0 sur ce qu'il fait:
Le mécanisme de réinitialisation ACPI facultatif spécifie un mécanisme standard fournissant une réinitialisation complète du système. Une fois mis en œuvre, ce mécanisme doit réinitialiser l’ensemble du système. Cela inclut les processeurs, la logique principale, tous les bus et tous les périphériques. Du point de vue de l'OSPM, l'affirmation du mécanisme de réinitialisation est l'équivalent logique du cycle d'alimentation de la machine. Après avoir pris le contrôle après une réinitialisation, OSPM effectuera les actions de la même manière qu’un démarrage à froid.
Ainsi, lorsque le registre de réinitialisation est défini, quelques événements se produisent en séquence.
L’effet final de ces deux étapes (qui se divisent en beaucoup d’autres étapes) est qu’il ressemble à tout, tout comme l’ordinateur qui vient d’être démarré, mais le courant est resté allumé. Cela signifie moins de temps d’arrêt et de démarrage (car il n’est pas nécessaire d’attendre que l’alimentation soit prête), et surtout, le démarrage du démarrage est provoqué par l’arrêt du système d’exploitation. Cela signifie qu'un autre déclencheur de démarrage n'a pas besoin d'être utilisé (WoL, etc.) et vous permet d'utiliser le redémarrage comme moyen efficace de réinitialiser le système à distance, lorsque vous ne disposez pas d'un moyen de déclencher le démarrage.
C'était une longue réponse. Mais bon, j'espère que vous en savez plus sur la gestion de l'alimentation des ordinateurs maintenant. J'ai certainement appris certaines choses en recherchant cela.
Voici un point de départ:
Les puces ne s'éteignent généralement pas puis s'allument. Au lieu de cela, il y a une ligne de réinitialisation qui amène le processeur à l'état de réinitialisation lorsque, normalement, toute la mémoire est effacée et que le processeur semble avoir été mis sous tension. Tant que cette broche est maintenue haute (ou basse, selon le processeur), le processeur est réinitialisé. Une fois que la broche est relâchée, il continuera à s’amorcer normalement, comme si elle avait été activée pour la première fois. Le fait est qu’il n’ya pas de courant coupé.
Alors, comment cette échelle s’adapte-t-elle à des systèmes plus volumineux tels que les PC modernes? Les ordinateurs modernes sont fabriqués à partir d’ordinateurs qui sont parfois fabriqués à partir d’ordinateurs eux-mêmes. Ainsi, lorsque vous configurez l'ordinateur pour qu'il se réinitialise, les "ordinateurs" qui le font commenceront à enregistrer leurs états (si la réinitialisation est contrôlée) ou tout simplement à retirer leurs broches de réinitialisation.
Certains processeurs et microcontrôleurs (qui sont des ordinateurs autonomes miniatures, ayant généralement 20 ans de retard sur les ordinateurs de bureau modernes) peuvent se réinitialiser à l'aide de commutateurs internes. Comme je l'ai dit, une fois que le signal qui génère la réinitialisation a disparu, l'ordinateur démarre. Donc, la prémisse dans la question n'est pas complètement correcte. L'ordinateur ne sait pas quand allumer. En sachant quand il doit être "éteint" ou en réinitialisation et quand le signal qui le maintient est parti, il s'allume.
Ce comportement peut paraître étrange sur un ordinateur moderne qui peut être configuré pour s’allumer à une heure précise ou sur le réseau, etc. Comme je l'ai dit, les ordinateurs sont faits d'ordinateurs. Ainsi, même si le processeur principal est éteint, de nombreuses autres puces et microcontrôleurs peuvent être utilisés. Le cas le plus évident est l’horloge temps réel qui est souvent alimentée par batterie. Il peut ensuite allumer d'autres puces qui en allumeront d'autres et la réaction en chaîne continuera jusqu'à ce que tout l'ordinateur soit allumé. Sur les ordinateurs actuels, il existe une ligne d'alimentation appelée +5 VDC Standby Voltage. Il fournit environ 50 mW d’alimentation à divers appareils allumés lorsque l’ordinateur est "éteint".
Petit détail: la broche de réinitialisation du processeur Intel 386 EX correspond au numéro de broche 110.
Sur Intel i7-900, c'est le numéro de terrain AL39.
J'espère que quelqu'un sera en mesure de fournir une réponse qui expliquera comment les choses fonctionnent du point de vue du haut niveau, car c'est un système assez compliqué.
Cet article de blog décrit comment Linux déclenche un redémarrage.
Extrait:
Linux propose différentes méthodes pour réinitialiser un x86. Certains d'entre eux sont en 32 bits seulement et je vais donc simplement les ignorer, car honnêtement, que faites-vous de votre vie? En outre, ils sont horribles. Donc, cela nous laisse avec cinq d'entre eux.
kbd - redémarre via le contrôleur de clavier. Le PC IBM d'origine avait la ligne de réinitialisation du processeur liée au contrôleur de clavier. L'écriture de la valeur magique appropriée impulse la ligne et la machine est réinitialisée. Tout cela est très simple, à l'exception du fait que les machines modernes ne disposent pas de contrôleurs de clavier (ils font en fait partie du contrôleur intégré) et que même les machines plus modernes ne prétendent même pas avoir de contrôleur de clavier. Maintenant, les contrôleurs intégrés exécutent un logiciel. Et, comme nous le savons tous, les logiciels sont affreux. Mais, pire, le logiciel du contrôleur intégré a été écrit par les auteurs du BIOS. Il est donc clair que toute prétention que cela fonctionne jamais est une sorte de fiction élaborée. Certaines machines sont très difficiles en ce qui concerne le matériel dans l'état exact dans lequel Windows serait programmé. Certaines machines fonctionnent 9 fois sur 10, puis se verrouillent en raison d’un problème de synchronisation particulier. Et les autres ne fonctionnent tout simplement pas du tout. Hourra!
triple - tentative de générer une triple faute. Ceci est fait en chargeant une table de descripteur d'interruption vide puis en appelant int (3). L'interruption échoue (il n'y a pas d'IDT), le gestionnaire d'erreurs échoue (il n'y a pas d'IDT) et la CPU entre dans une condition qui, en théorie, devrait alors déclencher une réinitialisation. Sauf que cela ne semble pas être une obligation et que cela ne fonctionne tout simplement pas sur un tas de machines.
pci - pas réellement pci. L'accès à l'espace de configuration PCI traditionnel est obtenu en écrivant une valeur de 32 bits sur le port io 0xcf8 pour identifier le bus, le périphérique, la fonction et le registre de configuration. Le port 0xcfc contient alors le registre en question. Mais si vous écrivez la paire appropriée de valeurs magiques dans 0xcf9, la machine redémarrera. Spectaculaire! Et pas standardisé (certainement pas partie de la spécification PCI), donc différents chipsets peuvent avoir des exigences différentes. Booo.
Les services d'exécution efi - EFI fournissent un point d'entrée pour redémarrer la machine. Cela fonctionne généralement même! Tant que les services d'exécution EFI fonctionnent, ce qui peut s'avérer difficile.
acpi - Les versions récentes de la spécification ACPI vous permettent de fournir une adresse (généralement de la mémoire ou de l'espace d'E / S système) et une valeur pour y écrire. L'idée est que l'écriture de la valeur sur l'adresse réinitialise le système. Il s'avère que cela échoue souvent. Il est également impossible de représenter la méthode de redémarrage PCI via ACPI, car la méthode de redémarrage PCI requiert une paire de valeurs et ACPI ne vous en donne qu'une.
Il bloque un emplacement d'E / S qui tire vers le bas une ligne de données qui indique au processeur qu'il doit arrêter sa tâche et commencer à exécuter du code à partir d'un certain emplacement du BIOS.
Auparavant, avant la gestion de l'alimentation, les ordinateurs pouvaient toujours redémarrer eux-mêmes, bien sûr. (Quelqu'un se souvient du moment où un programme gelé vous obligeait à utiliser Ctrl + Alt + Suppr pour redémarrer l'ordinateur?)
Sur mon ancien 486, la commande du langage d'assemblage JMP FFFF:0000
(c.-à-d. Définir le pointeur d'instructions de la CPU sur cette adresse) ferait redémarrer tout l'ordinateur. En d'autres termes, FFFF: 0000 adresse un emplacement dans le BIOS qui contient des instructions sur ce que l'ordinateur doit faire lors du premier démarrage. Je soupçonne que l'épingle de réinitialisation décrite dans la réponse d'AndrejaKo, ou les boutons de réinitialisation des jours précédant la gestion de l'alimentation, forceraient également le pointeur d'instruction à la même adresse.
Une recherche sur Google pour JMP FFFF: 0000 révèle de nombreuses pages intéressantes à ce sujet.
Il y a aussi une chose nommée le chien de garde. Cet appareil sert d'interrupteur d'homme mort. L'ordinateur doit signaler chaque minute au chien de garde qu'il est toujours en vie. Lorsque l'ordinateur tombe en panne, par exemple en se heurtant à une boucle sans fin, il ne parvient pas à signaler au chien de garde qu'il fonctionne toujours comme prévu. Le chien de garde procédera alors à une réinitialisation matérielle. Cela a été démontré dans la série télévisée populaire du terminateur, où un robot a été assommé par une surtension haute tension. il se réinitialiserait dans 2 minutes.
De retour sur l'ancien IBM PC-1, le contrôleur de clavier, curieusement, gérait le redémarrage. IBM a intégré un petit microprocesseur pour gérer le clavier, ainsi que des lignes d’entrée / sortie de secours; ils ont donc utilisé l’une des lignes pour piloter la ligne de réinitialisation de la CPU principale. Une commande envoyée au contrôleur du clavier entraînerait la réinitialisation de la CPU comme si l'alimentation venait juste d'être allumée.
J'imagine que cette tradition a perduré bien longtemps dans l'ère "AT" et qu'il peut en rester des vestiges dans l'ACPI aujourd'hui.
Ajouté: Il y a un détail intéressant sur le schéma de réinitialisation ci-dessus. Au début de la séquence de démarrage, le code recherchait un modèle particulier dans la RAM qui aurait pu être défini par le code précédemment exécuté. Si ce code était présent, certains des diagnostics POST (auto-test à la mise sous tension) ont été ignorés. Le motif ne serait présent que sur un démarrage "chaud".