505 votes

Comment un ordinateur redémarre-t-il ?

Comment un ordinateur peut-il redémarrer lui-même ? Une fois qu'il est éteint, comment lui indique-t-il de se rallumer ? Quel est le type de logiciel qui peut faire cela ?

0 votes

Je suis assez familier avec le processus de redémarrage de bas niveau, mais j'ai du mal à comprendre exactement ce que vous voulez et à le formuler pour vous. Pouvez-vous être plus précis ?

1 votes

@Brian si vous cherchez plus de détails, j'aimerais savoir ce que le système d'exploitation dit au bios pour que ce soit un reboot plutôt qu'un arrêt.

8 votes

@jer.salamon : Ce sont en fait des chemins complètement différents. La mise hors tension invoque une routine ACPI qui envoie un signal à l'alimentation ATX qui coupe les rails de tension principale.

611voto

jcrawfordor Points 15851

tl;dr : Les états d'alimentation de votre ordinateur sont contrôlés par une implémentation de l'ACPI (advanced configuration and power interface). À la fin d'un 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 réellement, elle ne fait que réinitialiser divers composants et se comporte ensuite comme si le bouton d'alimentation venait d'être enfoncé.

Réponse longue et décousue mais (à mon avis) plus intéressante :

Le soft power et son fonctionnement

Autrefois (bon, d'accord, pour un étudiant comme moi, les années 90, c'était il y a longtemps), nous avions des cartes mères AT (Advanced Technology) dotées de Puissance AT 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 à l'arrière du boîtier) et votre entrée de 120Vac passait directement par là. Il activait et désactivait physiquement l'alimentation de votre bloc d'alimentation, et lorsque cet interrupteur était en position "Off", tout dans votre ordinateur était complètement mort (ce qui rendait la batterie CMOS très importante, car sans elle, il n'y avait pas d'alimentation pour faire fonctionner l'horloge matérielle). Comme l'interrupteur d'alimentation était un mécanisme physique, il n'existait aucun moyen logiciel d'allumer et d'éteindre l'ordinateur. Windows affichait le fameux message "Vous pouvez maintenant éteindre votre ordinateur en toute sécurité" parce que, bien que tout soit parqué et prêt à être éteint, il n'était pas possible pour le système d'exploitation d'actionner réellement l'interrupteur d'alimentation. Cette configuration était parfois appelée force dure parce que c'est du matériel.

De nos jours, les choses sont différentes, grâce aux merveilles des cartes mères ATX et des Alimentation ATX (c'est Advanced Technology eXtended si vous êtes attentifs). En plus d'un certain nombre d'autres avancées (mini-DIN PS/2, quelqu'un ?), ATX a apporté puissance douce . Le soft power signifie que l'alimentation de l'ordinateur peut être contrôlée par un logiciel. Cela a entraîné quelques changements en matière d'importation :

  • Alimentation de secours : vous avez peut-être vu un connecteur "5v SB" ou "5v standby" étiqueté dans les broches de l'alimentation. Le site alimentation de secours est une ligne de 5v vers votre carte mère qui est toujours allumée, même lorsque l'ordinateur est éteint. C'est pourquoi il est important de débrancher ou d'éteindre l'interrupteur du bloc d'alimentation (s'il est présent) lors de l'entretien des ordinateurs modernes, car même s'il est éteint, vous pouvez potentiellement court-circuiter le SB 5v et endommager la carte mère. C'est également la raison pour laquelle les batteries CMOS ne sont plus vraiment aussi importantes - le 5v SB est utilisé pour remplacer la batterie CMOS chaque fois que l'alimentation est alimentée par le secteur, de sorte que la batterie CMOS n'est utilisée que lorsque vous débranchez complètement l'ordinateur. La ligne 5v SB permet surtout aux composants de votre ordinateur (surtout le BIOS et les adaptateurs réseau) de continuer à exécuter certains logiciels simples même lorsque l'ordinateur est éteint.
  • Contrôle intelligent de l'alimentation électrique. Si vous regardez le brochage du connecteur de la carte mère (P1) de votre alimentation, vous remarquerez deux broches généralement étiquetées comme suit PS_ONPS_RDY . Ils signifient "alimentation en marche" et "alimentation prête". Si vous aimez expérimenter, prenez une alimentation qui n'est pas dans un ordinateur, branchez-la et court-circuitez soigneusement une ligne de terre (un des fils noirs) à la ligne PS_ON (le fil vert). L'alimentation s'allumera visiblement et le ventilateur tournera. Les composants de la carte mère qui fonctionnent à partir du +5v SB allument et éteignent votre alimentation en connectant le courant à la broche PS_ON. Comme certains condensateurs et autres composants de l'alimentation prennent un certain temps à se charger, les tensions des sorties principales de l'alimentation peuvent ne pas être stables immédiatement après la mise sous tension de l'alimentation. C'est à cela que sert la broche PS_RDY, elle s'allume lorsque la logique interne de l'alimentation détermine que l'alimentation est "prête" et qu'elle fournira une alimentation stable. La carte mère attend que PS_RDY soit activée pour poursuivre le démarrage.

Ainsi, votre interrupteur d'alimentation ne permet plus d'allumer l'ordinateur. Il est plutôt 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, y compris l'allumage de 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. Ceci est important car vos adaptateurs de réseau Ethernet restent en fait allumés 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éclenchent le processus de démarrage. C'est ainsi que fonctionne le "Wake-on-LAN" (WoL). L'horloge peut également déclencher un démarrage (la plupart des BIOS vous permettent de définir une heure à laquelle l'ordinateur doit démarrer chaque jour), et les périphériques USB et FireWire peuvent déclencher un démarrage, bien que je n'aie pas connaissance d'une mise en œuvre de cette fonction.

Comprendre la maîtrise du pouvoir

J'explique la question de l'alimentation douce à la fois parce que je la trouve intéressante (c'est toujours la raison principale pour laquelle j'explique les choses) et parce qu'elle vous permet de comprendre comment l'alimentation et l'état de marche/arrêt de votre ordinateur sont tous contrôlés par un logiciel. Dans la plupart des ordinateurs actuels, ce système logiciel est une implémentation de l'algorithme de contrôle de l'alimentation. Interface de configuration et d'alimentation avancée, ou ACPI . L'ACPI est un système standardisé et unifié permettant aux logiciels de contrôler le système d'alimentation de votre ordinateur. Vous avez peut-être déjà entendu parler de l États d'alimentation ACPI . Le mécanisme de base de la gestion de l'alimentation est constitué de ces "états d'alimentation". Votre système d'exploitation passe d'un mode d'alimentation à l'autre en se préparant au changement (les processus d'arrêt/hibernation qui se produisent avant la coupure effective de l'alimentation), puis en commandant à la carte mère de changer d'état d'alimentation. Les états d'alimentation se présentent comme suit :

  • G0 : Fonctionnement (état "allumé" de votre ordinateur)
  • G1 : Sommeil (les états de veille de votre ordinateur, divisés en états S)
    • S1 : l'alimentation de l'unité centrale et de la mémoire vive est maintenue, mais l'unité centrale n'exécute pas d'instructions. Les périphériques sont hors tension.
    • S2 : CPU hors tension, RAM maintenue
    • S3 : Tous les composants sont hors tension, à l'exception de la RAM et des périphériques qui déclenchent une reprise (clavier). Lorsque vous demandez à votre système d'exploitation de "dormir", il arrête les processus et entre ensuite dans ce mode.
    • S4 : Hibernation. Absolument tout est éteint. Lorsque vous demandez à votre système d'exploitation d'effectuer une mise en veille prolongée, il arrête les processus, enregistre le contenu de la mémoire vive sur le disque, puis entre dans ce mode.
  • G2 : Soft Off. Il s'agit de l'état "éteint" de votre ordinateur. L'alimentation est coupée pour tout, sauf pour les périphériques qui peuvent déclencher un démarrage.
  • G3 : Arrêt mécanique.

Comment se passe la réinitialisation

Vous remarquerez que le redémarrage ne fait pas partie de ces états. Alors, que se passe-t-il réellement lorsque votre ordinateur redémarre ? La réponse peut être surprenante, car du point de vue de la gestion de l'énergie, il s'agit de presque rien . Il y a une commande de réinitialisation ACPI . Lorsque vous demandez à votre système d'exploitation de redémarrer, il suit son processus d'arrêt normal (il arrête tous vos processus, effectue un peu de maintenance, démonte vos systèmes de fichiers, etc.), puis, comme étape finale, au lieu d'envoyer la machine à l'état d'alimentation G2 (comme il l'aurait fait si vous lui aviez simplement demandé de s'arrêter), il définit la commande Reset. Cette commande est généralement appelée "registre de réinitialisation", car comme la plupart de l'interface ACPI, il s'agit simplement d'une adresse à laquelle il faut écrire une valeur spécifique pour demander une réinitialisation. Je vais citer la spécification 2.0 sur ce qu'il fait :

Le mécanisme optionnel de réinitialisation ACPI spécifie un mécanisme standard qui fournit une réinitialisation complète du système. Lorsqu'il est mis en œuvre, ce mécanisme doit réinitialiser l'ensemble du système. Cela inclut les processeurs, la logique centrale, tous les bus et tous les périphériques. Du point de vue de l'OSPM, l'activation du mécanisme de réinitialisation est l'équivalent logique de la mise hors tension de la machine. En prenant le contrôle après une réinitialisation, le MPOC effectuera des actions similaires à celles d'un démarrage à froid.

Ainsi, lorsque le registre de réinitialisation est activé, plusieurs choses se produisent en séquence.

  • Toute la logique est réinitialisée. Cela signifie qu'il faut envoyer les commandes de réinitialisation respectives à divers éléments matériels, dont l'unité centrale, le contrôleur de mémoire, les contrôleurs de périphériques, etc. Dans la plupart des cas, cela signifie simplement allumer un fil RST physique, comme AndrejaKo l'a montré ci-dessus.
  • L'ordinateur est ensuite démarré. C'est la partie "effectuer des actions de la même manière qu'un démarrage à froid". La carte mère exécute les mêmes étapes que si l'alimentation électrique venait d'être prête après avoir appuyé sur le bouton d'alimentation.

L'effet final de ces deux étapes (qui se décomposent en beaucoup plus d'étapes) est qu'on a l'impression que l'ordinateur vient de démarrer, mais que l'électricité était allumée pendant tout ce temps. Cela permet de réduire le temps nécessaire à l'arrêt et au démarrage (puisqu'il n'est pas nécessaire d'attendre que l'alimentation soit prête) et, surtout, de lancer le démarrage en arrêtant le système d'exploitation. Cela signifie qu'il n'est pas nécessaire d'utiliser un autre déclencheur de démarrage (WoL etc.), et vous permet d'utiliser Reboot comme un moyen efficace de réinitialiser le système à distance, lorsque vous n'avez pas de 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'énergie des ordinateurs maintenant. J'ai certainement appris des choses en faisant des recherches sur ce sujet.

82voto

AndrejaKo Points 16847

Voici un point de départ :

En général, les puces ne s'éteignent pas pour se rallumer ensuite. Au lieu de cela, il existe une ligne de réinitialisation qui place le processeur dans un état dit de réinitialisation, lorsque 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 en état de réinitialisation. Une fois la broche libérée, il continuera à démarrer normalement, comme s'il avait été allumé pour la première fois. L'intérêt de tout cela est qu'il n'y a pas de coupure de courant proprement dite.

Comment cela peut-il s'appliquer à des systèmes plus importants comme les PC modernes ? Les ordinateurs modernes sont constitués d'ordinateurs qui sont parfois eux-mêmes constitués d'ordinateurs. Ainsi, lorsque vous réglez l'ordinateur pour qu'il se réinitialise, les "ordinateurs" qui le composent commencent à sauvegarder leurs états (si la réinitialisation est contrôlée), ou font simplement tirer leurs broches de réinitialisation.

Certains processeurs et microcontrôleurs (qui sont des ordinateurs miniatures autonomes, généralement 20 ans en arrière par rapport aux 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. L'hypothèse de la question n'est donc pas tout à fait correcte. L'ordinateur ne sait pas quand il doit s'allumer. Il sait quand il doit être "éteint" ou en réinitialisation et lorsque le signal qui le maintient à ce niveau disparaît, il s'allume.

Ce comportement peut sembler étrange sur un ordinateur moderne qui peut être configuré pour s'allumer à un moment précis ou sur un réseau, etc. Comme je l'ai dit, les ordinateurs sont faits d'ordinateurs. Ainsi, alors que le processeur principal peut être éteint, il peut y avoir de nombreuses autres puces et microcontrôleurs à l'intérieur qui sont allumés. Le cas le plus évident est l'horloge en temps réel qui est souvent alimentée par une batterie. Elle peut alors activer d'autres puces qui activeront d'autres puces et la réaction en chaîne se poursuit jusqu'à ce que l'ensemble de l'ordinateur soit allumé. Sur les ordinateurs d'aujourd'hui, il y a une ligne d'alimentation appelée +5 VDC Standby Voltage. Elle fournit environ 50 mW d'énergie à divers appareils qui sont allumés lorsque l'ordinateur est "éteint".

Un peu d'anecdote : La broche de réinitialisation sur le processeur Intel 386 EX est la broche numéro 110.

386EX datasheet figure 2

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é.

28voto

Rashi Points 311

Cet article de blog décrit comment Linux déclenche un redémarrage.

Extrait :

Linux a un tas de façons différentes de réinitialiser un x86. Certaines d'entre elles ne sont disponibles qu'en 32 bits et je vais donc les ignorer car, honnêtement, que faites-vous de votre vie ? Et puis, ils sont horribles. Donc, cela nous laisse avec cinq d'entre elles.

  • kbd - redémarrage via le contrôleur du clavier. Le PC IBM original avait la ligne de réinitialisation du CPU liée au contrôleur de clavier. L'écriture de la valeur magique appropriée envoie une impulsion à la ligne et la machine se réinitialise. Tout ceci est très simple, sauf que les machines modernes n'ont pas de contrôleur de clavier (ils font en fait partie du contrôleur intégré) et que les machines encore plus modernes ne prétendent même pas avoir un contrôleur de clavier. Les contrôleurs embarqués exécutent des logiciels. Et, comme nous le savons tous, les logiciels sont épouvantables. Mais, pire encore, le logiciel du contrôleur intégré a été écrit par des auteurs de BIOS. Il est donc évident que toute prétention à ce que cela fonctionne est une sorte de fiction élaborée. Certaines machines sont très pointilleuses sur le fait que le matériel doit être dans l'état exact que Windows programmerait. Certaines machines fonctionnent 9 fois sur 10 et se bloquent ensuite à cause d'un étrange problème de timing. Et d'autres ne fonctionnent tout simplement pas du tout. Hourra !

  • triple - tentative de générer une faute triple. Ceci est fait en chargeant une table de descripteurs d'interruption vide et en appelant int(3). L'interruption échoue (il n'y a pas d'IDT), le gestionnaire de faute échoue (il n'y a pas d'IDT) et le CPU entre dans une condition qui devrait, en théorie, déclencher une réinitialisation. Sauf qu'il ne semble pas y avoir d'obligation que cela se produise et que cela ne fonctionne pas sur un grand nombre de machines.

  • pci - pas vraiment pci. L'accès traditionnel à l'espace de configuration PCI est réalisé en écrivant une valeur de 32 bits au port d'entrée 0xcf8 pour identifier le bus, le dispositif, la fonction et le registre de configuration. Le port 0xcfc contient alors le registre en question. Mais si vous écrivez la paire de valeurs magiques appropriées sur 0xcf9, la machine redémarre. Spectaculaire ! Et n'est en aucun cas standardisé (ne fait certainement pas partie de la spécification PCI), donc différents chipsets peuvent avoir des exigences différentes. Booo.

  • efi - Les services d'exécution EFI fournissent un point d'entrée pour redémarrer la machine. En général, cela fonctionne même ! Pour autant que les services d'exécution EFI fonctionnent, ce qui n'est pas toujours le cas.

  • acpi - Les versions récentes de la spécification ACPI vous permettent de fournir une adresse (généralement la mémoire ou l'espace d'E/S du système) et une valeur à écrire à cet endroit. L'idée est que l'écriture de la valeur à l'adresse réinitialise le système. Il s'avère que cette opération échoue souvent. Il est également impossible de représenter la méthode de redémarrage PCI via l'ACPI, car la méthode de redémarrage PCI nécessite une paire de valeurs et l'ACPI ne vous en donne qu'une.

10voto

Il frotte un emplacement d'E/S qui tire une ligne de données vers le bas, ce qui indique au CPU qu'il doit arrêter ce qu'il est en train de faire et commencer à exécuter du code à partir d'un certain emplacement dans le BIOS.

10voto

Chad Johnson Points 3792

À l'époque, avant la gestion de l'alimentation, les ordinateurs pouvaient toujours redémarrer eux-mêmes, bien sûr. (Quelqu'un se souvient-il de l'époque où un programme gelé signifiait que vous deviez utiliser Ctrl+Alt+Suppr pour redémarrer l'ordinateur) ?

Sur mon vieux 486, la commande en langage assembleur JMP FFFF:0000 (c'est-à-dire placer le pointeur d'instruction du processeur à cette adresse) entraînerait le redémarrage de 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 de son premier démarrage. Je soupçonne que la broche de réinitialisation décrite dans la réponse d'AndrejaKo, ou les boutons de réinitialisation à l'époque où la gestion de l'alimentation n'existait pas, forcerait également le pointeur d'instruction à la même adresse.

A Recherche google pour JMP FFFF:0000 révèle de nombreuses pages intéressantes à ce sujet.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X