dimanche 9 mars 2014

[Os] Comment reboot un ordinateur ?

Une question qui peut revenir pour ceux qui s'intéressent au développement des systèmes d'exploitation, à l'assembleur ou qui veulent simplement comprendre le fonctionnement d'un ordinateur.

D'un point de vue de programmeur, il existe une manière décrite dans le manuel d'intel pour les processeurs x86 pour redémarrer l'ordinateur, il faut pour cela générer une "triple fault".
Une triple fault intervient lorsqu'une interruption est générée et qu'une routine (ISR) n'est pas trouvée pour cette interruption. Pour cela il "suffit" de provoquer en toute conscience l'erreur en chargeant en mémoire une table de descripteurs d'interruption (IDT) vide et en générant manuellement une interrupt en appelant "int", l'interruption échoue et le gestionnaire de faute échoue aussi et le CPU provoque un redémarrage.

Cependant en réalité pour redémarrer, étant donné l'implémentation de l'ACPI (Advanced configuration and power interface) pour gérer l'alimentation, les systèmes d'exploitation envoient simplement une instruction de reboot au gestionnaire, la carte-mère se charge de reboot tous les composants et n'est jamais elle-même éteinte.

Aucun commentaire:

Enregistrer un commentaire