Pregunta ¿Cómo se reinicia una computadora?


¿Cómo puede una computadora reiniciarse? Después de que se apaga, ¿cómo se dice que vuelva a encenderse? ¿Qué tipo de software es capaz de hacer esto?


482


origen


@ jer.salamon: En realidad, son caminos completamente diferentes. Apagar invoca una rutina ACPI que envía una señal a la fuente de alimentación ATX que apaga los rieles de voltaje principal. - Ignacio Vazquez-Abrams
Esto se controla a través del BIOS: si la memoria sirve, las palabras clave de interés son APM y APIC. - pst
Nunca realmente se "apaga" en un reinicio. - Moab
No hay preguntas estúpidas. No, quizás haya, pero creo que este es realmente muy interesante. Presentado como un pregunta del candidato de la semana. - slhck
Solía ​​teletrabajar en un servidor remoto que básicamente era solo una PC sin pantalla o teclado en el centro de datos de la compañía. Mi servidor normalmente nunca se apagaba, pero a veces lo reiniciaba usando WinXP Start-> TurnOffComputer-> Restart, para solucionar inestabilidades causadas por probar mi propio código. A menudo trabajaba en momentos de mi elección, cuando el centro de datos no estaba tripulado. Era muy tedioso lo que accidentalmente seleccioné Apagar como la opción final, y tuvo que esperar hasta dos días más tarde para que un operador vaya y presione en cambiar para mí! - FumbleFingers


Respuestas:


tl; dr: los estados de energía en su computadora están controlados por una implementación de ACPI (configuración avanzada e interfaz de potencia). Al final de un proceso de cierre, 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 restablecimiento, y luego sigue el proceso de arranque. La placa base nunca se apaga, solo restablece varios componentes y luego se comporta como si acabara de presionar el botón de encendido.

Larga y divagable pero (en mi opinión) respuesta más interesante:

Soft Power y cómo funciona

En los viejos tiempos (bueno, está bien, para un estudiante universitario como yo los años 90 era hace mucho tiempo), teníamos motherboards AT (Tecnología avanzada) con Potencia AT administración. El sistema de potencia AT fue muy, muy simple. El botón de encendido en su computadora era un conmutador de hardware (probablemente en la parte posterior de la caja) y su entrada de 120va pasó por allí. Fusionó físicamente el suministro de energía, 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 suministro de energía para mantener el hardware). tic de reloj). Debido a que el interruptor de encendido era un mecanismo físico, no había una forma de software para encender y apagar el dispositivo. Windows mostraría el famoso mensaje "Ahora es seguro apagar la computadora" porque, aunque todo estaba aparcado y listo para apagarse, no fue posible para el sistema operativo activar el interruptor de encendido. Esta configuración a veces se denomina poder duroporque todo es hardware

Hoy en día las cosas son diferentes, debido a las maravillas de las motherboards ATX y Potencia ATX (Eso es tecnología avanzada eXtended si estás haciendo un seguimiento). Junto con una serie de otros avances (mini-DIN PS / 2, ¿alguien?), ATX trajo Poder suave. Poder suave significa que la potencia de la computadora puede controlarse mediante software. Esto trajo algunos cambios de importación:

  • Energía en espera: es posible que haya visto un conector "5v SB" o "5v en espera" etiquetado en los pines de la fuente de alimentación. los fuente de alimentación de reserva hay una línea de 5v en su placa base que está siempre encendida, incluso cuando la computadora está apagada. Es por esto que es importante desenchufar o apagar un interruptor duro de la fuente de alimentación (si está presente) cuando da servicio a computadoras modernas, porque incluso cuando está apagado, podría cortocircuitar el SB 5v y dañar la placa base. Esta es también la razón por la que las baterías CMOS ya no son tan importantes: el 5v SB se usa para reemplazar la batería CMOS siempre que la fuente de alimentación tenga alimentación de red, por lo que la batería CMOS solo se usa cuando desenchufa la computadora por completo. La línea 5v SB permite que los componentes de su computadora (más importante, el BIOS y los adaptadores de red) continúen funcionando con software simple incluso cuando la computadora está apagada.
  • Control inteligente de la fuente de alimentación. Si observa un pinout para el conector de la placa base (P1) de su fuente de alimentación, notará que hay dos pines etiquetados normalmente PS_ON y PS_RDY. Estos significan "suministro de energía encendido" y "suministro de energía listo". Si desea experimentar, tome una fuente de alimentación que no esté en una computadora, conéctela y cortocircuite cuidadosamente una línea de tierra (uno de los cables negros) con la línea PS_ON (el cable verde). La fuente de alimentación se encenderá visiblemente, con el ventilador girando hacia arriba. Los componentes de la placa base que sale de + 5v SB realmente encienden y apagan la fuente de alimentación al conectar la energía al pin PS_ON. Debido a que hay algunos condensadores y otros componentes en la fuente de alimentación que tardan un momento en cargarse, es posible que los voltajes de las salidas principales de la fuente de alimentación no sean estables inmediatamente después de que se encienda la PSU. Para esto está el pin PS_RDY, se enciende cuando la lógica interna de la fuente de alimentación determina que la fuente de alimentación está "lista" y proporcionará una potencia estable. La placa base espera hasta que PS_RDY esté encendido para continuar el arranque.

Entonces, 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 la energía esté disponible. El botón de encendido no es la única manera 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 en realidad 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, desencadenarán el proceso de inicio. Así es como funciona "Wake-on-LAN" (WoL). El reloj también puede iniciar un arranque (la mayoría del BIOS le permite establecer el tiempo que la computadora debe arrancar cada día), y los dispositivos USB y FireWire pueden disparar un arranque, aunque no conozco ninguna implementación de esto.

Entender el control de potencia

Bueno, explico la cosa de Soft Power tanto porque creo que es interesante (siempre una razón clave por la que explico cosas) y porque te permite entender cómo el poder y el estado de funcionamiento / apagado de tu computadora están controlados por software. En la mayoría de las computadoras actuales, este sistema de software es una implementación de Configuración avanzada e interfaz de alimentación, o ACPI. ACPI es un sistema estandarizado y unificado que permite que el software controle el sistema de energía de su computadora. Es posible que haya oído hablar de la Estados de energía ACPI. El mecanismo básico de control de potencia son estos "estados de energía", su sistema operativo cambia a través de modos de energía preparándose para el interruptor (los procesos de apagado / hibernación que ocurren antes de que la corriente realmente se desconecte) y luego ordena a la placa base que cambie los estados de energía . Los estados de poder se ven así:

  • G0: Trabajando (el estado "encendido" de su computadora)
  • G1: Dormir (los estados en espera de su computadora, divididos en los subestados S)
    • S1: la alimentación de la CPU y la RAM permanece activa, pero la CPU no está ejecutando las instrucciones. Los dispositivos periféricos están apagados.
    • S2: CPU apagada, RAM mantenida
    • S3: todos los componentes están apagados, excepto la memoria RAM y los dispositivos que activarán un currículum (teclado). Cuando le dice a su sistema operativo que "Duerma", detendrá los procesos y luego ingresará a este modo.
    • S4: Hibernación. Absolutamente todo está apagado. Cuando le dice a su sistema operativo que hiberne, detiene los procesos, guarda el contenido de la RAM en el disco y luego ingresa a este modo.
  • G2: Soft Off. este es el estado "apagado" de su computadora. La energía está apagada para todo excepto para los dispositivos que pueden desencadenar un arranque.
  • G3: Mecánico apagado.

Cómo realmente ocurre el restablecimiento

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 es casi nada. Ahi esta 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 paso final, en lugar de enviar la máquina al estado de encendido G2 (como lo haría si simplemente le hubieras dicho que se apague) establece el comando Restablecer. Esto generalmente se conoce como el "Registro de restablecimiento", porque al igual que la mayoría de la interfaz de ACPI, es solo una dirección en la que se debe escribir un valor específico para solicitar un restablecimiento. 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 reiniciar todo el sistema. Esto incluye procesadores, lógica central, todos los buses y todos los periféricos. Desde una perspectiva de OSPM, afirmar el mecanismo de reinicio es el equivalente lógico de apagar y encender la máquina. Al obtener el control después de un reinicio, OSPM realizará acciones de la misma manera que un arranque en frío.

Entonces, cuando se establece el registro de restablecimiento, algunas cosas ocurren en secuencia.

  • Toda la lógica se reinicia. Esto significa enviar los respectivos comandos de reinicio a varios bits de hardware, incluida la CPU, el controlador de memoria, los controladores periféricos, etc. En la mayoría de los casos, esto simplemente significa encender un cable RST físico, como mostró AndrejaKo arriba.
  • La computadora es entonces bootstrapped. Esta es la parte "realizar acciones de manera similar a un arranque en frío". La placa base realiza los mismos pasos que si la fuente de alimentación acabara de estar lista después de presionar el botón de encendido.

El efecto final de estos dos pasos (que en realidad se dividen en muchos más) es que se ve todo igual que la computadora que acaba de arrancar, pero el poder fue en realidad todo el tiempo. Esto significa menos tiempo necesario para apagar y arrancar (ya que no tiene que esperar que la fuente de alimentación esté lista), y lo que es más importante, permite que el inicio del arranque se inicie cuando el sistema operativo se apaga. Esto significa que no es necesario utilizar otro activador de inicio (WoL, etc.), y le permite usar Reiniciar como una forma efectiva de reiniciar el sistema de forma remota, cuando no tiene una manera de desencadenar el inicio.


Esa fue una respuesta larga. Pero bueno, ojalá sepa más sobre la administración de energía de la computadora ahora. Ciertamente aprendí algunas cosas investigando esto.


595



+1. Respuesta muy informativa y útil. Solo un punto: PS_ON está activo bajo, es decir, se cambió a 0V en lugar de a + 5VSB para encender las salidas principales. - MikeJ-UK
Para dispositivos USB que desencadenan un arranque, algunos BIOS tienen una opción para activar la computadora haciendo doble clic o presionando la tecla. Además, algunos teclados Mac tienen botones de encendido (una tradición que se remonta hasta el original). - Stuart P. Bentley
Gran respuesta, ciertamente aprendí mucho. Sin embargo, queda una pregunta: desde el punto de vista de la placa base, ¿cuál es la diferencia entre los estados S4 y G2? El sistema operativo guarda la RAM en el disco, por lo que S4 suena como "apagado suave" para el hardware. - EMP
Creo que S4 es funcionalmente equivalente a G2, pero la diferencia se almacena. Algunos BIOS parecen hacer un "POST rápido" cuando se inicia desde S4 pero un POST completo cuando se comienza desde G2. No creo que haya ninguna razón para esto, sin embargo, aparte de eso, la gente quiere que el currículum S4 sea rápido. - jcrawfordor
Eso es en realidad un poco simplista; hay (muchas) formas distintas de ACPI para reiniciar la computadora y, a veces, ACPI solo no funciona: superuser.com/questions/294681/... - Tobu


Aquí hay un punto de partida:

Las fichas generalmente no se apagan y luego se encienden. En cambio, hay una línea de restablecimiento que llevará al procesador al 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 está en reinicio. Una vez que se libera el pin, continuará arrancando normalmente, como si se hubiera encendido por primera vez. El objetivo de esto es que no hay corte de energía en sí mismo.

Entonces, ¿cómo se escala esto en sistemas más grandes como las PC modernas? Las computadoras bien modernas están hechas de computadoras que a veces están hechas de computadoras. Por lo tanto, cuando configura la computadora para reiniciar, las "computadoras" que hacen que la computadora comiencen a guardar sus estados (si se controla el reinicio), o simplemente tienen sus pernos de reinicio extraídos.

Algunos procesadores y microcontroladores (que son computadoras autocontenidas en miniatura, usualmente 20 años atrás de las computadoras de escritorio modernas) pueden restablecerse usando interruptores internos. Como dije, una vez que la señal que genera el reinicio se va, la computadora se iniciará. Entonces la premisa en la pregunta no es completamente correcta. La computadora no sabe cuándo encenderse. Para saber cuándo tiene que estar "apagado" o en reinicio y cuando la señal que lo mantiene allí se va, se encenderá.

Este comportamiento puede parecer extraño en una computadora moderna que se puede configurar para que se encienda a una hora específica o a través de la red, y así sucesivamente. Como dije, las computadoras están hechas de computadoras. Entonces, aunque el procesador principal puede estar apagado, podría haber muchas otras microplaquetas y microcontroladores dentro que estén encendidos. El caso más obvio es el reloj en tiempo real que a menudo funciona con batería. Luego puede encender otras fichas que activarán otras y la reacción en cadena continuará hasta que toda la computadora esté encendida. En las computadoras de hoy en día, hay una línea de fuente de alimentación 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 trivia: Restablecer el pin en el procesador Intel 386 EX es el pin número 110.

386EX datasheet figure 2

En Intel i7-900 es el número de tierra AL39.

Espero que alguien pueda dar una respuesta que explique cómo funcionan las cosas desde el punto de vista de alto nivel, ya que es un sistema bastante complicado.


79



Guau, respuesta completa. - Seth Carnegie
@Seth Carnegie No es tan bueno. Acabo de tocar las cosas de bajo nivel que son verdad para la mayoría de las computadoras, desde la nevera hasta la PC. Ni siquiera mencioné el ACPI, APM y otros sistemas de alimentación modernos o cómo en las PCs viejas el microcontrolador Intel 8042 cuyo controlador el teclado podía reiniciar el procesador, cómo funciona el POST, restablecer vectores y muchas otras cosas. - AndrejaKo
@netvope Demasiado para imaginar, diría yo. Probablemente tenga al menos uno en su mouse, uno en el teclado, más de 10 para las partes más básicas de la placa base (incluso si tenemos en cuenta los "chipsets" altamente integrados), tal vez uno en la unidad de fuente de alimentación, al menos uno en cada disco (más probablemente 2-3), varios en cada tarjeta de expansión ... Los monitores también son un asunto serio y mi impresora ahora tiene más RAM que mi primera computadora de escritorio. - AndrejaKo
Hablando de memoria, los cachés de algunos discos duros nuevos y CPU son ahora más grandes que la memoria RAM de la primera computadora que he usado. Ahora podemos correr Windows 95 completamente en la caché L2 y mantener toda la partición del sistema en la memoria caché de la unidad. - netvope


Esta publicación de blog describe cómo Linux desencadena un reinicio.

Extracto:

Linux tiene varias formas diferentes de restablecer un x86. Algunos de ellos solo son de 32 bits, así que los ignoraré porque, sinceramente, ¿qué haces con tu vida? Además, son horribles. Entonces, eso nos deja con cinco de ellos.

  • kbd - reiniciar a través del controlador de teclado. La PC original de IBM tenía la línea de restablecimiento de CPU atada al controlador del teclado. Escribir el valor mágico apropiado impulsa 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 pretenden 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 del controlador integrado ha sido escrito por autores de BIOS. Así que, claramente, cualquier pretensión de que esto funcione alguna vez es una especie 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 veces de cada 10 y luego se bloquean debido a un problema de tiempo extraño. Y otros simplemente no funcionan en absoluto. ¡Hurra!

  • triple - intento de generar una falla triple. Esto se hace cargando una tabla de descriptor de interrupción vacía y luego llamando a int (3). La interrupción falla (no hay IDT), falla el manejador de fallas (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 muchas máquinas.

  • pci - no en realidad pci. El acceso tradicional al espacio de configuración PCI se logra escribiendo un valor de 32 bits en el puerto 0xcf8 para identificar el bus, el dispositivo, la función y el 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 forma parte de la especificación PCI), por lo que diferentes conjuntos de chips pueden tener diferentes requisitos. Booo.

  • efi: los servicios de tiempo de ejecución de 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 estén funcionando, lo que puede ser un gran esfuerzo.

  • acpi: las versiones recientes de la especificación ACPI le permiten proporcionar una dirección (generalmente memoria o espacio de IO 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 PCI a través de ACPI, porque el método de reinicio de PCI requiere un par de valores y ACPI solo le ofrece uno.


27



Esto es relevante, pero la respuesta sería más útil si pones aquí un extracto de la información de la otra página. - calvinf
tl; dr hay muchas maneras de reiniciar; algunos tableros se rompen lo suficiente como para pretender ser ventanas, una heurística que implica unos pocos intentos y que duerme un poco, es la única forma. - Tobu


Bloquea una ubicación de E / S que tira de 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 el código desde una ubicación determinada en el BIOS.


10



... y esa ubicación se especifica en el código que se pasa a la llamada al sistema de reinicio? - Knight Samar
@Knight Samar: No; la ubicación de E / S generalmente es una constante de arquitectura, que el kernel conoce. Puedes ver esto, p. en el código de reinicio de Linux, como arch / x86 / kernel / reboot.c. - sleske
¿Alguien tiene un buen recurso para seguir leyendo sobre este asunto? - matthias krull
@ mugen.kenichi y todo, un amigo me dio esto para referirme howstuffworks.com/bios.htm/pintable - Knight Samar
yo sugiero superuser.com/a/347115/38062 . - JdeBP


En los viejos tiempos antes de la administración de energía, las computadoras todavía podían reiniciarse, por supuesto. (¿Alguien recuerda cuando un programa congelado significaba que tenía que usar Ctrl + Alt + Eliminar 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) provocaría que toda la computadora se reiniciara. En otras palabras, FFFF: 0000 aborda una ubicación en el BIOS que tiene instrucciones sobre lo que debe hacer la computadora cuando comienza. 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 forzarían al Puntero de Instrucción a la misma dirección.

UN Búsqueda de Google para JMP FFFF: 0000 revela muchas páginas interesantes sobre esto.


10



También necesita escribir un valor específico en 0040: 0072 para determinar si fue un arranque frío (0x0000) o cálido (0x1234). - Synetech


También hay algo llamado el perro guardián. Este dispositivo sirve como un interruptor de hombre muerto. La computadora tiene que indicarle al perro guardián cada minuto que diga que todavía está vivo. Cuando la computadora falla, p. al correr en un ciclo sin fin, no podrá señal al perro guardián, todavía se está ejecutando según lo previsto, en qué ocasión el perro guardián realizará un restablecimiento 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.


9



Esto es correcto, pero realmente no responde la pregunta. - sleske
¿Hay perros guardianes que reiniciarán toda la computadora? Sé que a veces se usan para varios microcontroladores dentro de la computadora, pero ¿hay uno en toda la computadora? Mi experiencia personal me lleva a decir que no, pero algunas pruebas a favor o en contra serían bienvenidas. - AndrejaKo
@AndrejaKo: Solía ​​trabajar para una empresa que hacía servidores de comunicación (esencialmente servidores blade con módems conectados a ellos). Tenían un temporizador de vigilancia que estaba conectado a los pines de reinicio en la placa base. El temporizador fue golpeado periódicamente por una utilidad de fondo que se ejecuta en la placa base, por lo que si el procesador se colgara, el perro guardián presionaría el botón de reinicio. Estaba vinculado a un circuito que hizo que la línea telefónica ocupada mientras la placa madre se reinició. - Robert Harvey


De vuelta en el viejo PC-1 de IBM, el controlador del teclado, curiosamente, manejó el reinicio. IBM incrustó un pequeño microprocesador para manejar el teclado, y tenía algunas líneas de E / S de repuesto, por lo que usaron una de las líneas para controlar la línea de restablecimiento de la CPU principal. Un comando enviado al controlador del teclado provocaría el reinicio de la CPU como si acabara de encenderse.

Supongo que esta tradición continuó hasta bien entrada 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 secuencia de inicio temprano, el código buscaba 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, algunos de los diagnósticos POST (autoprueba de encendido) se saltaron. El patrón solo estaría presente en un arranque "cálido".


4