Questão Como um computador é reiniciado?


Como um computador pode se reiniciar? Depois disso, como se diz para voltar? Que tipo de software é que pode fazer isso?


482


origem


@ jer.salamon: Eles são caminhos completamente diferentes. Desligar chama uma rotina ACPI que envia um sinal para a fonte de alimentação ATX que desliga os trilhos de tensão principais. - Ignacio Vazquez-Abrams
Isto é controlado através do BIOS - se a memória serve, palavras-chave de interesse são APM e APIC - pst
Ele nunca se torna "desligado" em um reinício. - Moab
Não há perguntas idiotas. Não, talvez haja, mas acho que isso é realmente muito interessante. Apresentado como um pergunta da semana candidato. - slhck
Eu costumava teletrabalhar em um servidor remoto que era basicamente apenas um PC sem tela ou teclado no datacenter da empresa. Meu servidor nunca estava normalmente desligado, mas às vezes eu o reiniciava usando o WinXP Start-> TurnOffComputer-> Restart, para resolver as instabilidades causadas pelo teste do meu próprio código. Muitas vezes eu trabalhava nas horas que eu preferia, quando o datacenter não era gerenciado. isso foi muito cansativo o que eu acidentalmente selecionado Desligar como a opção final, e teve que esperar até dois dias depois para um operador ir e pressionar o em mude para mim! - FumbleFingers


Respostas:


tl; dr: estados de energia em seu computador são controlados por uma implementação de ACPI (configuração avançada e interface de energia). No final de um processo de desligamento, o sistema operacional define um comando ACPI indicando que o computador deve ser reinicializado. Em resposta, a placa-mãe redefine todos os componentes usando seus respectivos comandos ou linhas de reinicialização e, em seguida, segue o processo de bootstrap. A placa-mãe nunca se desliga, apenas restaura vários componentes e se comporta como se o botão de força tivesse acabado de ser pressionado.

Longa e desconexa, mas (na minha opinião) resposta mais interessante:

Soft Power e como funciona

Antigamente (bem, tudo bem, para um estudante universitário como eu, os anos 90 foram há muito tempo), nós tínhamos placas-mãe AT (Advanced Technology) com AT poder gestão. O sistema de energia AT era muito simples. O botão liga / desliga do seu computador era uma chave de hardware (provavelmente na parte de trás do gabinete) e sua entrada de 120vac passou por ele. Ele fisicamente ligou e desligou a energia da sua fonte de alimentação, e quando esta chave estava na posição Off tudo no seu computador estava completamente inoperante (isso tornou a bateria CMOS muito importante, porque sem ela não havia fonte de alimentação para manter o hardware relógio correndo). Como o interruptor de energia era um mecanismo físico, não havia nenhum meio de ligar e desligar o software. O Windows mostraria a famosa mensagem "Agora é seguro desligar o computador" porque, embora tudo estivesse estacionado e pronto para ser desligado, não era possível que o sistema operacional mudasse a chave de energia. Esta configuração foi por vezes referida como Poder forteporque é tudo hardware.

Hoje em dia as coisas são diferentes, por causa das maravilhas das placas-mãe ATX e Potência ATX (que é Advanced Technology eXtended se você está acompanhando). Juntamente com uma série de outros avanços (mini-DIN PS / 2, alguém?), ATX trouxe poder suave. Soft power significa que a energia do computador pode ser controlada por software. Isso trouxe algumas mudanças de importação:

  • Energia de espera: você pode ter visto um conector "5v SB" ou "5v standby" rotulado nas pinagens da fonte de alimentação. o fonte de alimentação em standby é uma linha de 5v para a sua placa-mãe que está sempre ligada, mesmo quando o computador está desligado. É por isso que é importante desconectar ou desligar um hard switch da PSU (se houver) ao fazer manutenção em computadores modernos, porque, mesmo quando está desligado, você pode encurtar o 5v SB e danificar a placa-mãe. É também por isso que as baterias CMOS não são mais tão importantes - o 5v SB é usado para substituir a bateria CMOS sempre que a fonte de alimentação tiver energia elétrica, portanto a bateria CMOS é usada apenas quando você desconecta o computador completamente. A linha 5v SB permite que os componentes do seu computador (principalmente o BIOS e os adaptadores de rede) continuem executando algum software simples mesmo quando o computador está desligado.
  • Controle inteligente de fornecimento de energia. Se você olhar para uma pinagem para o conector da placa-mãe da sua fonte de alimentação (P1), você notará dois pinos tipicamente rotulados PS_ON e PS_RDY. Estes significam "fonte de alimentação ligada" e "fonte de alimentação pronta". Se você gosta de experimentar, pegue uma fonte de alimentação que não esteja em um computador, conecte-a e cuidadosamente encurte uma linha de aterramento (um dos fios pretos) para a linha PS_ON (o fio verde). A fonte de alimentação ficará visivelmente ligada, com o ventilador girando. Os componentes da placa-mãe que estão funcionando fora de + 5v SB realmente ligam e desligam a fonte de alimentação conectando a energia ao pino PS_ON. Como há alguns capacitores e outros componentes na fonte de energia que levam um tempo para carregar, as tensões das saídas principais da fonte de alimentação podem não ser estáveis ​​imediatamente após a PSU ser ligada. É para isso que o pino PS_RDY serve, quando a lógica interna da fonte de alimentação determina que a fonte de alimentação está "pronta" e fornecerá energia estável. A placa-mãe aguarda até que o PS_RDY esteja ligado para continuar a inicialização.

Então, o seu interruptor de energia não "liga" o computador. Em vez disso, ele é conectado aos controladores básicos da sua placa-mãe, que detectam que o botão foi pressionado e executam uma série de etapas para preparar o sistema, incluindo a iluminação de PS_ON para que a energia esteja disponível. O botão de energia não é a única maneira de acionar o processo de inicialização, os dispositivos no seu barramento de expansão também podem fazê-lo. Isso é importante porque os adaptadores de rede Ethernet permanecem ligados quando o computador está desligado e procuram por um pacote muito específico, geralmente chamado de "Pacote Mágico". Se eles detectarem esse pacote endereçado ao seu endereço MAC, eles irão acionar o processo de inicialização. É assim que funciona o "Wake-on-LAN" (WoL). O relógio também pode iniciar uma inicialização (a maioria dos BIOS permite que você defina um tempo que o computador deve inicializar a cada dia), e os dispositivos USB e FireWire podem acionar uma inicialização, embora eu não saiba de nenhuma implementação disso.

Entendendo o Controle de Potência

Bem, eu explico o Soft Power tanto porque eu acho interessante (sempre uma razão chave que eu explico as coisas) e porque ele permite que você entenda como a potência e o estado de funcionamento / desligamento do seu computador são todos controlados pelo software. Na maioria dos computadores atuais, esse sistema de software é uma implementação do Configuração avançada e interface de energia ou ACPI. O ACPI é um sistema padronizado e unificado que permite ao software controlar o sistema de energia do seu computador. Você pode ter ouvido falar do Estados de energia ACPI. O mecanismo básico de controle de energia são esses "estados de energia", seu sistema operacional alterna os modos de energia preparando-se para o comutador (os processos de desligamento / hibernação que ocorrem antes de a energia ser realmente desligada) e comandando a placa-mãe para alternar os estados de energia . Os estados de energia são assim:

  • G0: Trabalhando (o estado "on" do seu computador)
  • G1: Sleeping (estados de espera do seu computador, divididos nos subestados S)
    • S1: energia para CPU e RAM permanece ligada, mas a CPU não está executando instruções. Dispositivos periféricos estão desligados.
    • S2: CPU desligada, RAM mantida
    • S3: Todos os componentes desligados, exceto para RAM e dispositivos que acionam um currículo (teclado). Quando você diz ao seu SO para "Sleep", ele interrompe os processos e entra nesse modo.
    • S4: Hibernação. Absolutamente tudo está desligado. Quando você informa seu sistema operacional para o Hibernate, ele interrompe processos, salva o conteúdo da RAM no disco e entra nesse modo.
  • G2: Soft Off. este é o estado "off" do seu computador. A energia é desligada para tudo, exceto para dispositivos que podem acionar uma inicialização.
  • G3: Mecânico desligado.

Como a redefinição realmente acontece

Você notará que a reinicialização não é um desses estados. Então, o que realmente acontece quando o computador é reiniciado? A resposta pode ser surpreendente, porque a partir de uma perspectiva de gerenciamento de energia é quase nada. Há sim um comando de redefinição de ACPI. Quando você informa ao seu sistema operacional para reinicializar, ele segue seu processo de desligamento normal (interrompe todos os seus processos, executa um pouco de manutenção, desmonta seus sistemas de arquivos, etc.) e, em seguida, como uma etapa final, em vez de enviar a máquina ao estado de energia G2 (como seria se você tivesse simplesmente dito para desligar) ele define o comando Reset. Isso geralmente é chamado de "Reset register", porque, como a maioria da interface ACPI, é apenas um endereço para o qual um valor específico deve ser gravado para solicitar uma redefinição. Vou citar a especificação 2.0 sobre o que faz:

O mecanismo de redefinição ACPI opcional especifica um mecanismo padrão que fornece uma reinicialização completa do sistema. Quando implementado, esse mecanismo deve redefinir todo o sistema. Isso inclui processadores, lógica central, todos os barramentos e todos os periféricos. Do ponto de vista do OSPM, afirmar o mecanismo de reconfiguração é o equivalente lógico ao ciclo de energia da máquina. Ao ganhar o controle após uma redefinição, o OSPM executará ações de maneira semelhante a uma inicialização a frio.

Então, quando o registro de reset está definido, algumas coisas acontecem em seqüência.

  • Toda a lógica é redefinida. Isso significa enviar os respectivos comandos de reset para vários bits de hardware, incluindo CPU, controlador de memória, controladores de periféricos, etc. Na maioria dos casos, isso significa simplesmente iluminar um fio físico de RST, como AndrejaKo mostrou acima.
  • O computador é então inicializado. Esta é a parte "executar ações de maneira semelhante a uma inicialização a frio". A placa-mãe executa as mesmas etapas que se a fonte de alimentação tivesse acabado de se tornar pronta após o botão de energia ser pressionado.

O efeito final dessas duas etapas (que realmente se desdobram em mais etapas) é que tudo parece com o computador inicializado, mas a energia na verdade estava ativa o tempo todo. Isso significa menos tempo necessário para desligar e inicializar (já que você não precisa esperar que a fonte de alimentação fique pronta) e, mais importante, permite que a inicialização seja iniciada pelo sistema operacional sendo desligado. Isso significa que outro gatilho de inicialização não precisa ser usado (WoL etc) e permite que você use o Reboot como uma maneira eficaz de reinicializar o sistema remotamente, quando você não tem uma maneira de acionar a inicialização.


Essa foi uma resposta longa. Mas ei, espero que você saiba mais sobre o gerenciamento de energia do computador agora. Eu certamente aprendi algumas coisas pesquisando isso.


595



+1. Resposta muito informativa e útil. Apenas um ponto - PS_ON está ativo baixo, ou seja, comutado para 0V em vez de + 5VSB para ativar as saídas principais. - MikeJ-UK
Para dispositivos USB que acionam uma inicialização, alguns BIOS têm a opção de ativar o computador com um clique duplo ou com a tecla pressionada. Além disso, alguns teclados do Mac têm botões Power (uma tradição que remonta ao original). - Stuart P. Bentley
Grande resposta, eu certamente aprendi muito. Uma pergunta permanece: do ponto de vista da placa-mãe, qual é a diferença entre os estados S4 e G2? Salvar RAM no disco é feito pelo SO, então o S4 soa como "soft off" para o hardware. - EMP
Eu acredito que S4 é funcionalmente equivalente a G2, mas a diferença é armazenada. Alguns BIOS parecem fazer um "POST rápido" ao iniciar a partir do S4, mas um POST completo ao iniciar a partir do G2. Eu não acho que haja qualquer razão para isso, além de outras pessoas quererem que o S4 continue rápido. - jcrawfordor
Isso é realmente um pouco simplista; existem (muitas) maneiras não-ACPI de reiniciar o computador e, por vezes, a ACPI sozinha não funciona: superuser.com/questions/294681/… - Tobu


Aqui está um ponto de partida:

Chips geralmente não desligam e depois ligam. Em vez disso, há uma linha de reset que trará o processador no chamado estado de reset quando, geralmente, toda a memória é limpa e o processador parece ter sido ligado. Enquanto esse pino é mantido alto (ou baixo, dependendo do processador), o processador está em redefinição. Uma vez que o pino é liberado, ele continuará inicializando normalmente, como se estivesse ligado pela primeira vez. O ponto disto é que não há poder de corte em si.

Então, como isso se adapta a sistemas maiores, como PCs modernos? Computadores bem modernos são feitos de computadores que às vezes são feitos de computadores. Assim, quando você configura o computador para redefinir, "computadores" que fazem o computador começar a salvar seus estados (se a redefinição for controlada) ou apenas os pinos de reinicialização serão puxados.

Alguns processadores e microcontroladores (que são computadores independentes em miniatura, geralmente 20 anos atrás dos computadores desktop modernos) podem se redefinir usando switches internos. Como eu disse, uma vez que o sinal que gera a reinicialização se foi, o computador será inicializado. Portanto, a premissa da questão não está completamente correta. O computador não sabe quando ligar. Em saber quando ele precisa estar "desligado" ou em reset e quando o sinal que o mantém lá se foi, ele irá ligar.

Esse comportamento pode parecer estranho no computador moderno, que pode ser configurado para ser ativado em um horário específico ou pela rede e assim por diante. Como eu disse, os computadores são feitos de computadores. Assim, enquanto o processador principal pode estar desligado, pode haver vários outros chips e microcontroladores dentro dos quais estão ligados. O caso mais óbvio é o relógio em tempo real, que geralmente é alimentado por bateria. Ele pode então ligar outros chips que ativarão outros chips e a reação em cadeia ocorrerá até que todo o computador esteja ligado. Nos computadores de hoje, há uma linha de PSU chamada +5 VDC Standby Voltage. Ele fornece cerca de 50 mW de energia para vários dispositivos que estão ligados quando o computador está "desligado".

Um pouco de trivia: O pino de reinicialização no processador Intel 386 EX é o pino número 110.

386EX datasheet figure 2

Na Intel i7-900 é o número de terra AL39.

Espero que alguém seja capaz de fornecer uma resposta que explique como as coisas funcionam do ponto de vista de alto nível, já que é um sistema bastante complicado.


79



Nossa, resposta completa. - Seth Carnegie
@Seth Carnegie Não é tão bom assim. Acabei de tocar o material de baixo nível que é verdadeiro para a maioria dos computadores, desde o da geladeira até o PC. Eu nem sequer mencionei o ACPI, APM e outros sistemas de energia modernos ou como em antigos PCs Intel 8042 microcontrolador que controlam o teclado poderia redefinir o processador, como funciona o POST, redefinir vetores e muitas outras coisas. - AndrejaKo
@netvope Muito para imaginar, eu diria. Você provavelmente tem pelo menos um no seu mouse, um no teclado, mais de 10 para as partes mais básicas da placa-mãe (mesmo se levarmos em conta "chipsets" altamente integrados), talvez um na fonte de alimentação, pelo menos um em cada unidade (mais provável 2-3), vários em cada cartão de expansão ... Os monitores são um negócio sério também e minha impressora agora tem mais RAM do que meu primeiro computador de mesa. - AndrejaKo
Falando sobre memória, os caches de alguns novos HDDs e CPUs agora são maiores que a RAM do primeiro computador que usei. Agora podemos correr Windows 95 totalmente no cache L2 e manter toda a partição do sistema no cache da unidade! - netvope


Esta postagem do blog descreve como o Linux aciona uma reinicialização.

Excerto:

O Linux tem várias formas diferentes de redefinir um x86. Alguns deles são de 32 bits e por isso vou ignorá-los, porque honestamente o que você está fazendo com a sua vida. Além disso, eles são horríveis. Então, isso nos deixa com cinco deles.

  • kbd - reinicia através do controlador de teclado. O IBM PC original tinha a linha de reinicialização da CPU ligada ao controlador de teclado. Escrever o valor mágico apropriado pulsa a linha e a máquina é reinicializada. Tudo isso é muito simples, exceto pelo fato de que as máquinas modernas não têm controladores de teclado (na verdade são parte do controlador embarcado) e até máquinas mais modernas nem fingem ter um controlador de teclado. Agora, os controladores incorporados executam o software. E, como todos sabemos, o software é terrível. Mas, pior, o software no controlador incorporado foi escrito por autores do BIOS. Então, claramente, qualquer pretensão de que isso funcione é algum tipo de ficção elaborada. Algumas máquinas são muito exigentes quanto ao hardware estar no estado exato que o Windows iria programar. Algumas máquinas trabalham 9 vezes em 10 e depois travam devido a algum problema de temporização estranho. E outros simplesmente não funcionam. Viva!

  • triplo - tenta gerar uma falha tripla. Isso é feito carregando uma tabela de descritor de interrupção vazia e chamando int (3). A interrupção falha (não há IDT), o manipulador de falhas falha (não há IDT) e a CPU entra em uma condição que, em teoria, deveria desencadear uma reinicialização. Exceto que não parece haver uma exigência de que isso aconteça e simplesmente não funciona em um monte de máquinas.

  • pci - na verdade não pci. O acesso tradicional ao espaço de configuração PCI é obtido gravando um valor de 32 bits para a porta io 0xcf8 para identificar o registro de barramento, dispositivo, função e configuração. Porta 0xcfc, em seguida, contém o registro em questão. Mas se você escrever o par de valores mágicos apropriados em 0xcf9, a máquina será reinicializada. Espetacular! E não padronizado de forma alguma (certamente não faz parte da especificação PCI), portanto chipsets diferentes podem ter requisitos diferentes. Booo

  • efi - Os serviços de tempo de execução da EFI fornecem um ponto de entrada para reinicializar a máquina. Geralmente funciona mesmo! Enquanto os serviços de tempo de execução da EFI estiverem funcionando, o que pode ser um alongamento.

  • acpi - As versões recentes da especificação da ACPI permitem que você forneça um endereço (normalmente memória ou espaço de E / S do sistema) e um valor para gravar lá. A ideia é que escrever o valor no endereço redefine o sistema. Acontece que isso muitas vezes falha. Também é impossível representar o método de reinicialização do PCI via ACPI, porque o método de reinicialização do PCI requer um par de valores e a ACPI fornece apenas um.


27



Isso é relevante, mas a resposta seria mais útil se você colocar um trecho da informação da outra página aqui. - calvinf
tl; dr existem muitas maneiras de reiniciar; algumas placas são quebradas mal o suficiente fingir ser janelas, uma heurística que envolve algumas tentativas e dormir um pouco, é o único caminho. - Tobu


Ele mostra uma localização de E / S que puxa uma linha de dados baixa, o que diz à CPU que deve parar o que está fazendo e começar a executar o código a partir de um determinado local no BIOS.


10



... e esse local é especificado no código que é passado para a chamada do sistema de reinicialização? - Knight Samar
@Knight Samar: Não; a localização de E / S é geralmente uma constante de arquitetura, que o kernel conhece. Você pode ver isto, por exemplo no código de reinicialização do Linux, como arch / x86 / kernel / reboot.c. - sleske
Alguém tem um bom recurso para ler mais sobre esse assunto? - matthias krull
@ mugen.kenichi e tudo, um amigo me deu isso para se referir howstuffworks.com/bios.htm/printable - Knight Samar
Eu sugiro superuser.com/a/347115/38062 . - JdeBP


Antigamente, antes do gerenciamento de energia, os computadores ainda podiam se reiniciar, é claro. (Alguém se lembra quando um programa congelado significava que você tinha que usar Ctrl + Alt + Delete para reiniciar o computador?)

No meu antigo 486, o comando assembly JMP FFFF:0000 (isto é, defina o Indicador de instruções da CPU para o endereço mencionado) faria com que todo o computador fosse reiniciado. Em outras palavras, FFFF: 0000 endereços de um local no BIOS que tenha instruções sobre o que o computador deve fazer quando ele é iniciado pela primeira vez. Eu suspeito que o Reset Pin descrito pela resposta de AndrejaKo, ou os botões de reset nos dias de pré-gerenciamento de energia, também forçariam o Indicador de Instrução para o mesmo endereço.

UMA Pesquisa do Google por JMP FFFF: 0000 revela muitas páginas interessantes sobre isso.


10



Você também precisou escrever um valor específico para 0040: 0072 para determinar se era uma inicialização a frio (0x0000) ou a quente (0x1234). - Synetech


Há também uma coisa chamada o cão de guarda. Este dispositivo serve como interruptor de um homem morto. O computador tem que sinalizar para o watchdog a cada minuto que ainda está vivo. Quando o computador falha, por exemplo correndo em um loop infinito, ele não conseguirá sinal para o cão de guarda ainda está funcionando como pretendido, em que ocasião o watchdog executará uma reinicialização de hardware. Isso foi demonstrado na popular série de tv do terminator, onde um robô foi nocauteado por um surto de energia de alta voltagem. ele se redefiniria em 2 minutos.


9



Isso está correto, mas não responde realmente à pergunta. - sleske
Há watchdogs que realmente reiniciarão o computador inteiro? Eu sei que às vezes eles são usados ​​para vários microcontroladores dentro do computador, mas há um em um nível de computador inteiro? Minha experiência pessoal me leva a dizer não, mas algumas evidências a favor ou contra seriam bem-vindas. - AndrejaKo
@AndrejaKo: Eu costumava trabalhar para uma empresa que fazia servidores de comunicação (essencialmente servidores blade com modems conectados a eles). Eles tinham um temporizador de watchdog que estava conectado aos pinos de reset na placa-mãe. O cronômetro era colidido periodicamente por um utilitário de segundo plano rodando na placa-mãe, então se o processador travasse, o watchdog acabaria pressionando o botão reset. Estava ligado a um circuito que fazia a linha telefônica ocupada enquanto a placa-mãe reiniciava. - Robert Harvey


De volta ao antigo IBM PC-1, o controlador de teclado, por incrível que pareça, manipulava a reinicialização. A IBM embutiu um pequeno microprocessador para manipular o teclado, e ele tinha algumas linhas de E / S sobressalentes, então elas usaram uma das linhas para direcionar a linha de reset da CPU principal. Um comando enviado para o controlador de teclado resultaria na reinicialização da CPU como se a energia tivesse acabado de ser ligada.

Eu estou supondo que esta tradição continuou bem na era "AT", e pode haver vestígios dela permanecendo na ACPI hoje.

Adicionado: Há um detalhe interessante sobre o esquema de reset acima. Durante a seqüência inicial de inicialização, o código procurava um padrão específico na RAM que poderia ter sido definido pelo código em execução anteriormente. Se esse código estava presente, alguns dos diagnósticos do POST (autoteste de inicialização) foram ignorados. O padrão só estaria presente em uma inicialização "quente".


4