¿Cómo puede reiniciarse una computadora? Después de apagarlo, ¿cómo se dice que vuelva a encenderse? ¿Qué tipo de software es el que puede hacer esto?
¿Cómo puede reiniciarse una computadora? Después de apagarlo, ¿cómo se dice que vuelva a encenderse? ¿Qué tipo de software es el que puede hacer esto?
Respuestas:
tl; dr: los estados de energía en su computadora son controlados por una implementación de ACPI (configuración avanzada e interfaz de energía). Al final de un proceso de apagado, su sistema operativo establece un comando ACPI que indica que la computadora debe reiniciarse. En respuesta, la placa base restablece todos los componentes utilizando sus respectivos comandos o líneas de reinicio, y luego sigue el proceso de arranque. La placa base nunca se apaga, solo restablece varios componentes y luego se comporta como si el botón de encendido hubiera sido presionado.
Larga y divagante pero (en mi opinión) respuesta más interesante:
En los viejos tiempos (bueno, está bien, para un estudiante universitario como yo, los años 90 fue hace mucho tiempo), teníamos placas base AT (tecnología avanzada) con potencia ATadministración. El sistema de energía AT era muy, muy simple. El botón de encendido en su computadora era una palanca de hardware (probablemente en la parte posterior de la caja) y su entrada de 120vac lo atravesó. Encendió y apagó físicamente la fuente de alimentación, y cuando este interruptor estaba en la posición de apagado, todo en su computadora estaba completamente muerto (esto hizo que la batería CMOS fuera muy importante, porque sin ella no había fuente de alimentación para mantener el hardware tictac del reloj). Debido a que el interruptor de encendido era un mecanismo físico, no había forma de software de encender y apagar el dispositivo. Windows mostraría el famoso mensaje "Ahora es seguro apagar la computadora" porque, aunque todo estaba estacionado y listo para apagarse, no era posible que el sistema operativo encendiera el interruptor de encendido. Esta configuración a veces se denominabapoder duro , porque es todo hardware.
Hoy en día las cosas son diferentes, debido a las maravillas de las placas base ATX y la potencia ATX (eso es tecnología avanzada extendida si está haciendo un seguimiento). Junto con una serie de otros avances (mini-DIN PS / 2, ¿alguien?), ATX trajo poder suave . El poder blando significa que el software puede controlar la energía de la computadora. Esto trajo algunos cambios de importación:
Por lo tanto, su interruptor de encendido ya no "enciende" la computadora. En cambio, está conectado a los controladores básicos de la placa base, que detectan que se ha presionado el botón y ejecutan una serie de pasos para preparar el sistema, incluida la iluminación de PS_ON para que haya energía disponible. El botón de encendido no es la única forma de activar el proceso de inicio, los dispositivos en su bus de expansión también pueden hacerlo. Esto es importante porque sus adaptadores de red ethernet realmente permanecen encendidos cuando su computadora está apagada y buscan un paquete muy específico, a menudo denominado "paquete mágico". Si detectan este paquete dirigido a su dirección MAC, activarán el proceso de inicio. Así es como funciona "Wake-on-LAN" (WoL). El reloj también puede iniciar un arranque (la mayoría de los BIOS le permiten establecer una hora en la que la computadora debe arrancar cada día),
Bueno, explico lo de Soft Power tanto porque creo que es interesante (siempre es una razón clave por la que explico cosas) como porque te permite comprender cómo el software controla la potencia y el estado de funcionamiento / apagado de tu computadora. En la mayoría de las computadoras actuales, este sistema de software es una implementación de la Interfaz avanzada de configuración y energía, o ACPI . ACPI es un sistema estandarizado y unificado que permite que el software controle el sistema de alimentación de su computadora. Es posible que haya oído hablar de los estados de energía de ACPI. El mecanismo básico de control de energía es estos "estados de energía", su sistema operativo cambia a través de los modos de energía preparándose para el interruptor (los procesos de apagado / hibernación que ocurren antes de que la energía se desconecte), y luego ordena a la placa base que cambie los estados de energía . Los estados de poder se ven así:
Notarás que reiniciar no es uno de estos estados. Entonces, ¿qué sucede realmente cuando su computadora se reinicia? La respuesta puede ser sorprendente, porque desde una perspectiva de administración de energía no es casi nada . Hay un comando de reinicio ACPI. Cuando le dice a su sistema operativo que reinicie, sigue su proceso de apagado normal (detiene todos sus procesos, realiza un poco de mantenimiento, desmonta sus sistemas de archivos, etc.), y luego como un paso final, en lugar de enviar la máquina al estado de encendido G2 (como lo haría si simplemente le hubiera dicho que se apagara) establece el comando Restablecer. Esto generalmente se conoce como el "registro de reinicio", porque como la mayoría de la interfaz ACPI, es solo una dirección en la que se debe escribir un valor específico para solicitar un reinicio. Citaré la especificación 2.0 sobre lo que hace:
El mecanismo de reinicio ACPI opcional especifica un mecanismo estándar que proporciona un reinicio completo del sistema. Cuando se implementa, este mecanismo debe restablecer todo el sistema. Esto incluye procesadores, lógica central, todos los buses y todos los periféricos. Desde una perspectiva OSPM, afirmar que el mecanismo de reinicio es el equivalente lógico a un ciclo de energía de la máquina. Al obtener el control después de un reinicio, OSPM realizará acciones de manera similar a un arranque en frío.
Entonces, cuando se establece el registro de reinicio, suceden algunas cosas en secuencia.
El efecto final de estos dos pasos (que en realidad se desglosan en muchos más pasos) es que se ve todo como la computadora que acaba de arrancar, pero el poder estaba en todo momento. Esto significa menos tiempo requerido para apagar y arrancar (ya que no tiene que esperar a que la fuente de alimentación esté lista) y, lo que es más importante, permite que el arranque del sistema operativo inicie el arranque. Esto significa que no es necesario usar otro activador de inicio (WoL, etc.) y le permite usar Reiniciar como una forma efectiva de restablecer el sistema de forma remota, cuando no tiene una forma de activar el inicio.
Esa fue una respuesta larga. Pero bueno, espero que ahora sepa más sobre la administración de energía de la computadora. Ciertamente aprendí algunas cosas investigando esto.
Aquí hay un punto de partida:
Los chips generalmente no se apagan y luego se encienden. En cambio, hay una línea de reinicio que pondrá al procesador en el llamado estado de reinicio cuando generalmente se borra toda la memoria y el procesador parece que acaba de encenderse. Mientras ese pin se mantiene alto (o bajo, dependiendo del procesador), el procesador se reinicia. Una vez que se suelta el pin, continuará arrancando normalmente, como si estuviera encendido por primera vez. El punto de esto es que no hay corte de energía en sí mismo.
Entonces, ¿cómo se escala a sistemas más grandes como las PC modernas? Bueno, las computadoras modernas están hechas de computadoras que a veces están hechas de computadoras. Entonces, cuando configuras la computadora para reiniciar, las "computadoras" que hacen que la computadora comience a guardar sus estados (si el reinicio está controlado), o simplemente tienen sus pines de reinicio retirados.
Algunos procesadores y microcontroladores (que son computadoras autónomas en miniatura, generalmente 20 años detrás de las computadoras de escritorio modernas) pueden reiniciarse mediante interruptores internos. Como dije, una vez que la señal que genera el restablecimiento desaparezca, la computadora se iniciará. Entonces la premisa en la pregunta no es completamente correcta. La computadora no sabe cuándo encender. En saber cuándo debe estar "apagado" o en reinicio y cuando la señal que lo mantiene allí se ha ido, se encenderá.
Este comportamiento puede parecer extraño en una computadora moderna que se puede configurar para que se encienda en un momento específico o a través de la red, etc. Como dije, las computadoras están hechas de computadoras. Entonces, si bien el procesador principal puede estar apagado, podría haber muchos otros chips y microcontroladores dentro de los cuales están encendidos. El caso más obvio es el reloj en tiempo real que a menudo funciona con batería. Luego puede encender otros chips que encenderán otros chips y la reacción en cadena continuará hasta que toda la computadora esté encendida. En las computadoras de hoy, hay una línea de PSU llamada +5 VDC Standby Voltage. Proporciona alrededor de 50 mW de potencia a varios dispositivos que están encendidos cuando la computadora está "apagada".
Un poco de curiosidad: restablecer el pin en el procesador Intel 386 EX es el pin número 110.
En Intel i7-900 es el número de tierra AL39.
Espero que alguien pueda proporcionar una respuesta que explique cómo funcionan las cosas desde el punto de vista de alto nivel, ya que es un sistema bastante complicado.
Esta publicación de blog describe cómo Linux desencadena un reinicio.
Extracto:
Linux tiene muchas formas diferentes de restablecer un x86. Algunos de ellos son solo de 32 bits, así que los voy a ignorar porque, sinceramente, ¿qué estás haciendo con tu vida? Además, son horribles. Entonces, eso nos deja con cinco de ellos.
kbd - reiniciar a través del controlador del teclado. La PC original de IBM tenía la línea de reinicio de la CPU vinculada al controlador del teclado. Escribir el valor mágico apropiado pulsa la línea y la máquina se reinicia. Todo esto es muy sencillo, excepto por el hecho de que las máquinas modernas no tienen controladores de teclado (en realidad son parte del controlador integrado) e incluso las máquinas más modernas ni siquiera fingen tener un controlador de teclado. Ahora, los controladores integrados ejecutan software. Y, como todos sabemos, el software es terrible. Pero, lo que es peor, el software en el controlador incorporado ha sido escrito por autores de BIOS. Claramente, cualquier pretensión de que esto funcione es algún tipo de ficción elaborada. Algunas máquinas son muy exigentes con el hardware en el estado exacto que Windows programaría. Algunas máquinas funcionan 9 de cada 10 veces y luego se bloquean debido a algún problema de sincronización extraño. Y otros simplemente no funcionan en absoluto. ¡Hurra!
triple: intento de generar una triple falla. Esto se hace cargando una tabla de descriptores de interrupción vacía y luego llamando a int (3). La interrupción falla (no hay IDT), el controlador de fallas falla (no hay IDT) y la CPU entra en una condición que, en teoría, debería desencadenar un reinicio. Excepto que no parece ser un requisito que esto suceda y simplemente no funciona en un montón de máquinas.
pci - en realidad no pci. El acceso al espacio de configuración PCI tradicional se logra escribiendo un valor de 32 bits en el puerto io 0xcf8 para identificar el bus, dispositivo, función y registro de configuración. El puerto 0xcfc contiene el registro en cuestión. Pero si escribe el par apropiado de valores mágicos en 0xcf9, la máquina se reiniciará. ¡Espectacular! Y no está estandarizado de ninguna manera (ciertamente no es parte de la especificación PCI), por lo que diferentes conjuntos de chips pueden tener diferentes requisitos. Booo
Los servicios de tiempo de ejecución efi - EFI proporcionan un punto de entrada para reiniciar la máquina. Por lo general, incluso funciona! Siempre y cuando los servicios de tiempo de ejecución de EFI funcionen, lo que puede ser difícil.
acpi: las versiones recientes de la especificación ACPI le permiten proporcionar una dirección (generalmente memoria o espacio de E / S del sistema) y un valor para escribir allí. La idea es que escribir el valor en la dirección restablece el sistema. Resulta que hacerlo a menudo falla. También es imposible representar el método de reinicio de PCI a través de ACPI, porque el método de reinicio de PCI requiere un par de valores y ACPI solo le da uno.
Se congela una ubicación de E / S que tira una línea de datos baja que le dice a la CPU que debe detener lo que sea que esté haciendo y comenzar a ejecutar código desde una determinada ubicación en el BIOS.
En los viejos tiempos antes de la administración de energía, las computadoras aún podían reiniciarse, por supuesto. (¿Alguien recuerda cuándo un programa congelado significaba que tenía que usar Ctrl + Alt + Supr para reiniciar la computadora?)
En mi viejo 486, el comando de lenguaje ensamblador JMP FFFF:0000
(es decir, establecer el puntero de instrucción de la CPU en dicha dirección) haría que toda la computadora se reiniciara. En otras palabras, FFFF: 0000 se dirige a una ubicación en el BIOS que tiene instrucciones sobre lo que la computadora debe hacer cuando se inicia por primera vez. Sospecho que el Pin de reinicio descrito por la respuesta de AndrejaKo, o los botones de reinicio en los días previos a la administración de energía, también obligaría al Puntero de instrucción a la misma dirección.
Una búsqueda en Google de JMP FFFF: 0000 revela muchas páginas interesantes sobre esto.
También hay una cosa llamada el perro guardián. Este dispositivo sirve como interruptor de un hombre muerto. La computadora tiene que indicarle al perro guardián cada minuto que todavía está vivo. Cuando la computadora falla, por ejemplo, al ejecutar un bucle sin fin, no podrá indicarle al watchdog que aún se está ejecutando según lo previsto, en cuyo caso el watchdog realizará un reinicio de hardware. Esto se demostró en la popular serie de televisión del terminador, donde un robot fue noqueado por una sobretensión de alto voltaje. se reiniciaría en 2 minutos.
De vuelta en el viejo IBM PC-1, el controlador de teclado, curiosamente, manejó el reinicio. IBM incorporó un pequeño microprocesador para manejar el teclado, y tenía algunas líneas de E / S de repuesto, por lo que utilizaron una de las líneas para controlar la línea de reinicio de la CPU principal. Un comando enviado al controlador del teclado daría como resultado que la CPU se reinicie como si la energía se hubiera encendido.
Supongo que esta tradición continuó bien en la era "AT", y puede haber vestigios de que permanezca en ACPI hoy.
Agregado: hay un detalle interesante sobre el esquema de reinicio anterior. Durante la primera secuencia de arranque, el código buscó un patrón particular en la RAM que podría haber sido establecido por el código que se ejecutaba anteriormente. Si este código estaba presente, se omitieron algunos de los diagnósticos POST (autocomprobación de encendido). El patrón solo estaría presente en una bota "cálida".