Como um computador é reiniciado?


490

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


8
@ jer.salamon: Na verdade, são caminhos completamente diferentes. O desligamento 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

13
Isso é controlado pelo BIOS - se a memória servir, as palavras-chave de interesse são APM e APIC
pst

118
Ele realmente nunca "desliga" em uma reinicialização.
Moab,

10
Não há perguntas idiotas. Não, talvez haja - mas acho que essa é realmente muito interessante. Apresentado como uma pergunta do candidato da semana .
slhck

4
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 WinXP Start-> TurnOffComputer-> Restart, para resolver as instabilidades causadas pelo teste do meu próprio código. Eu costumava trabalhar em momentos de minha própria escolha, quando o centro de dados não era tripulado. Foi muito cansativo o que eu selecionei acidentalmente como Desligar como opção final, e tive que esperar até dois dias depois para um operador ir e pressionar o interruptor on para mim!
FumbleFingers

Respostas:


598

Os estados de energia no computador são controlados por uma implementação do 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 reiniciar. Em resposta, a placa-mãe redefine todos os componentes usando seus respectivos comandos ou linhas de redefinição e segue o processo de autoinicialização. A placa-mãe nunca se desliga, ela apenas redefine vários componentes e se comporta como se o botão Liga / Desliga tivesse sido pressionado.

Resposta longa e divagar, mas (na minha opinião) mais interessante:

Soft Power e como funciona

Antigamente (bem, tudo bem, para um estudante universitário como eu nos anos 90 foi há muito tempo), tínhamos placas-mãe AT (Advanced Technology) com alimentação ATgestão. O sistema de energia AT era muito, muito simples. O botão liga / desliga do seu computador era uma alternância de hardware (provavelmente na parte traseira do gabinete) e sua entrada de 120Vca passou por ele. Ele ligou e desligou fisicamente a fonte de alimentação e, quando este interruptor estava na posição Off, tudo no seu computador estava completamente morto (isso tornava a bateria do CMOS muito importante, porque sem ela não havia fonte de alimentação para manter o hardware relógio correndo). Como o botão liga / desliga era um mecanismo físico, não havia uma maneira de ligar e desligar a energia. O Windows mostraria a famosa mensagem "Agora é seguro desligar o computador" porque, embora tudo estivesse estacionado e pronto para desligar, não era possível para o sistema operacional ligar o interruptor. Essa configuração às vezes era chamada depoder duro , porque é todo hardware.

Hoje em dia as coisas são diferentes, devido às maravilhas das placas-mãe ATX e do poder ATX (que é a Advanced Technology eXtended se você estiver acompanhando). Juntamente com vários outros avanços (mini-DIN PS / 2, alguém?), A ATX trouxe uma força branda . Energia suave significa que a energia do computador pode ser controlada por software. Isso trouxe algumas alterações de importação:

  • Energia em espera: você pode ter visto um conector "5v SB" ou "5v standby" rotulado nas pinagens da fonte de alimentação. A fonte de alimentação em esperaé uma linha de 5v da sua placa-mãe que está sempre ligada, mesmo quando o computador está desligado. É por isso que é importante desconectar ou desligar um comutador rígido da PSU (se presente) ao fazer a manutenção de computadores modernos, porque mesmo quando está desligado, você pode potencialmente causar um curto-circuito no 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 SB de 5v é usado para substituir a bateria CMOS sempre que a fonte de alimentação tem energia principal; 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 da fonte de alimentação. Se você olhar para a pinagem para motherboard sua fonte de alimentação (P1) conector, você notará dois pinos normalmente rotulado PS_ON e PS_RDY. Eles representam "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 encoste cuidadosamente uma linha de aterramento (um dos fios pretos) à linha PS_ON (o fio verde). A fonte de alimentação liga-se visivelmente, com o ventilador girando. Os componentes da placa-mãe com +5v SB ligam e desligam sua fonte de alimentação conectando a alimentação ao pino PS_ON. Como existem alguns capacitores e outros componentes na fonte de alimentação que demoram um momento para carregar, as tensões das saídas principais da fonte de alimentação podem não ser estáveis ​​imediatamente após a fonte de alimentação ser ligada. É para isso que serve o pino PS_RDY, ele acende quando a lógica interna da fonte de alimentação determina que a fonte de alimentação está "pronta" e fornecerá energia estável.

Portanto, o interruptor não liga mais 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 várias etapas para preparar o sistema, incluindo a iluminação do PS_ON para que a energia esteja disponível. O botão liga / desliga não é a única maneira de acionar o processo de inicialização; os dispositivos no 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 um pacote muito específico, geralmente chamado de "pacote mágico". Se eles detectarem esse pacote endereçado ao endereço MAC, eles acionarão o processo de inicialização. É assim que o "Wake-on-LAN" (WoL) funciona. O relógio também pode iniciar uma inicialização (a maioria dos BIOS permite definir um horário em que o computador deve inicializar todos os dias),

Entendendo o controle de energia

Bem, eu explico a questão do Soft Power, porque acho interessante (sempre um motivo importante para explicar as coisas) e porque permite que você entenda como o estado de energia e funcionamento do computador são todos controlados por software. Na maioria dos computadores atuais, esse sistema de software é uma implementação da Advanced Configuration and Power Interface, ou ACPI . O ACPI é um sistema unificado e padronizado, permitindo que o software controle o sistema de energia do seu computador. Você pode ter ouvido falar dos estados de energia da ACPI. O mecanismo básico de controle de energia são esses "estados de energia", o sistema operacional alterna entre os modos de energia, preparando-se para a mudança (os processos de desligamento / hibernação que ocorrem antes do desligamento da energia) e comandando a placa-mãe para mudar os estados de energia . Os estados de energia são assim:

  • G0: Trabalhando (o estado "ligado" do computador)
  • G1: Em suspensão (estados de espera do seu computador, divididos em subestados S)
    • S1: a energia da CPU e da RAM permanece ligada, mas a CPU não está executando as instruções. Os dispositivos periféricos estão desligados.
    • S2: CPU desligada, RAM mantida
    • S3: Todos os componentes desligados, exceto a RAM e os dispositivos que acionam um resumo (teclado). Quando você diz ao seu sistema operacional "Suspender", ele interrompe os processos e entra nesse modo.
    • S4: Hibernação. Absolutamente tudo está desligado. Quando você diz ao seu sistema operacional para o Hibernate, ele interrompe os processos, salva o conteúdo da RAM no disco e entra nesse modo.
  • G2: desativação suave. este é o estado "desligado" do seu computador. A energia está desligada para tudo, exceto para dispositivos que podem acionar uma inicialização.
  • G3: Desativação mecânica.

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, do ponto de vista do gerenciamento de energia, é quase nada . Existe um comando de redefinição ACPI. Quando você instrui o sistema operacional a reiniciar, ele segue seu processo normal de desligamento (interrompe todos os seus processos, realiza algumas manutenções, desmonta seus sistemas de arquivos etc.) e depois como uma etapa final, em vez de enviar a máquina ao estado de energia G2 (como faria se você tivesse simplesmente dito para desligar) define o comando Reset. Isso geralmente é chamado de "Registro de redefinição", porque, como a maioria da interface da ACPI, é apenas um endereço no qual um valor específico deve ser gravado para solicitar uma redefinição. Vou citar a especificação 2.0 sobre o que ele faz:

O mecanismo de redefinição ACPI opcional especifica um mecanismo padrão que fornece uma redefiniçã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. Da perspectiva do OSPM, afirmar o mecanismo de redefinição é o equivalente lógico ao ciclo de energia da máquina. Ao obter o controle após uma redefinição, o OSPM executará ações da mesma maneira que uma inicialização a frio.

Portanto, quando o registro de redefinição é definido, algumas coisas acontecem em sequência.

  • Toda a lógica é redefinida. Isso significa enviar os respectivos comandos de redefinição para vários bits de hardware, incluindo CPU, controlador de memória, controladores periféricos, etc. Na maioria dos casos, isso significa simplesmente iluminar um fio RST físico, como o AndrejaKo mostrou acima.
  • O computador é então inicializado. Esta é a parte "executar ações da mesma maneira em uma inicialização a frio". A placa-mãe executa as mesmas etapas que faria se a fonte de alimentação estivesse pronta depois de pressionar o botão liga / desliga.

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


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


3
+1. Resposta muito informativa e útil. Apenas um ponto - PS_ON está ativo baixo, ou seja, mudou para 0V em vez de + 5VSB para ativar as saídas principais.
MikeJ-UK

2
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 o pressionamento de tecla. Além disso, alguns teclados para Mac possuem botões Power (uma tradição que remonta ao original).
Stuart P. Bentley

1
Ótima resposta, eu certamente aprendi muito. Porém, resta uma pergunta: do ponto de vista da placa-mãe, qual é a diferença entre os estados S4 e G2? A gravação da RAM no disco é feita pelo sistema operacional, de modo que o S4 soa como "soft off" para o hardware.
EMP

1
Eu acredito que S4 é funcionalmente equivalente a G2, mas a diferença é armazenada. Alguns BIOS parecem executar um "POST rápido" ao iniciar no S4, mas um POST completo ao iniciar no G2. Eu não acho que exista qualquer razão para isso, exceto que as pessoas querem que o currículo S4 seja rápido.
jcrawfordor

1
Isso é realmente um pouco simplista; há (muitos) meios não-ACPI para reiniciar o computador, e às vezes ACPI sozinha não funciona: superuser.com/questions/294681/...
Tobu

81

Aqui está um ponto de partida:

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

Então, como isso se adapta a sistemas maiores, como os PCs modernos? Bem, os computadores modernos são feitos de computadores que às vezes são feitos de computadores. Portanto, quando você configura o computador para redefinir, "computadores" que fazem com que o computador comece a salvar seus estados (se a redefinição for controlada) ou apenas com os pinos de redefiniçã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, depois que o sinal que gera a redefinição desaparecer, o computador será iniciado. Portanto, a premissa da pergunta não está completamente certa. O computador não sabe quando ligar. Para saber quando ele precisa estar "desligado" ou em redefinição e quando o sinal que o mantém lá desaparecer, ele será ativado.

Esse comportamento pode parecer estranho no computador moderno, que pode ser configurado para ativar em um horário específico ou através da rede e assim por diante. Como eu disse, os computadores são feitos de computadores. Portanto, embora o processador principal esteja 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. Em seguida, ele pode ligar outros chips que ativam outros chips e a reação em cadeia ocorre até que todo o computador esteja ligado. Nos computadores de hoje, existe uma linha 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 curiosidades: redefinir o pino no processador Intel 386 EX é o pino número 110.

Folha de dados 386EX figura 2

No Intel i7-900, é o número terrestre 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.


Uau, resposta completa.
Seth Carnegie

13
@Seth Carnegie Não é tão bom assim. Acabei de tocar nas coisas de baixo nível que são verdadeiras para a maioria dos computadores, desde o refrigerador até o PC. Eu nem mencionei o ACPI, APM e outros sistemas de energia modernos ou como, nos PCs antigos, o microcontrolador Intel 8042, em que controlador o teclado poderia redefinir o processador, como o POST funciona, redefinir vetores e muitas outras coisas.
precisa saber é o seguinte

1
@ netvope Demais para imaginar, eu diria. Você provavelmente tem pelo menos um no 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 (provavelmente 2-3), vários em cada placa de expansão ... Os monitores também são um negócio sério e agora minha impressora tem mais memória RAM do que meu primeiro computador de mesa.
AndrejaKo

4
Por falar em memória, os caches de alguns novos HDDs e CPUs agora são maiores que a RAM do primeiro computador que usei. Agora podemos executar o Windows 95 inteiramente no cache L2 e manter toda a partição do sistema no cache da unidade!
Netvope

27

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

Excerto:

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

  • kbd - reinicialize através do controlador do teclado. O PC IBM original tinha a linha de redefinição da CPU ligada ao controlador do teclado. Escrever o valor mágico apropriado pulsa a linha e a máquina é redefinida. Isso tudo é muito direto, exceto pelo fato de que as máquinas modernas não possuem controladores de teclado (na verdade fazem parte do controlador incorporado) e as máquinas ainda mais modernas nem mesmo 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 pelos autores do BIOS. 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 programaria. Algumas máquinas funcionam 9 vezes em 10 e depois travam devido a um problema de tempo estranho. E outros simplesmente não funcionam. Viva!

  • triplo - tente 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 deve, em teoria, disparar uma redefinição. Exceto que não parece haver um requisito para que isso aconteça e simplesmente não funciona em várias máquinas.

  • pci - não realmente pci. O acesso tradicional ao espaço de configuração PCI é obtido gravando um valor de 32 bits na porta io 0xcf8 para identificar o barramento, o dispositivo, a função e o registro de configuração. A porta 0xcfc contém o registro em questão. Mas se você escrever o par apropriado de valores mágicos em 0xcf9, a máquina será reiniciada. 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.

  • Os serviços de tempo de execução efi - EFI fornecem um ponto de entrada para reiniciar a máquina. Geralmente funciona mesmo! Contanto que os serviços de tempo de execução EFI estejam funcionando, o que pode ser um exagero.

  • acpi - As versões recentes das especificações da ACPI permitem fornecer um endereço (normalmente espaço de E / S da memória ou do sistema) e um valor para escrever nele. A idéia é que escrever o valor no endereço redefina o sistema. Acontece que 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 o ACPI fornece apenas um.


15
Isso é relevante, mas a resposta seria mais útil se você colocar aqui um trecho das informações da outra página.
calvinf

1
Existem muitas maneiras de reiniciar; algumas tábuas estão quebradas o suficiente para parecerem janelas , uma heurística que envolve algumas tentativas e dorme um pouco, é o único caminho.
Tobu

10

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


... e esse local é especificado no código que é passado para a chamada de reinicialização do sistema?
Knight Samar

1
@ Knight Samar: Não; a localização de E / S geralmente é uma constante de arquitetura, que o kernel conhece. Você pode ver isso, por exemplo, no código de reinicialização do Linux, como arch / x86 / kernel / reboot.c.
21810 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
Cavaleiro Samar


10

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

No meu antigo 486, o comando da linguagem assembly JMP FFFF:0000(ou seja, definir o ponteiro de instruções da CPU para o referido endereço) faria com que todo o computador fosse reiniciado. Em outras palavras, o FFFF: 0000 aborda um local no BIOS que possui instruções para o que o computador deve fazer quando é iniciado pela primeira vez. Suspeito que o Reset Pin descrito pela resposta de AndrejaKo, ou os botões de reset nos dias anteriores ao gerenciamento de energia, também forçam o ponteiro de instruções para o mesmo endereço.

Uma pesquisa no Google por JMP FFFF: 0000 revela muitas páginas interessantes sobre isso.


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

9

Há também uma coisa chamada watchdog. Este dispositivo serve como um interruptor de homem morto. O computador precisa sinalizar para o cão de guarda a cada minuto que ele ainda está vivo. Quando o computador trava, por exemplo, ao executar um loop sem fim, ele falha ao sinalizar para o cão de guarda que ainda está funcionando como pretendido, ocasião em que o cão de guarda fará uma redefinição de hardware. Isso foi demonstrado na popular série de TV do terminador, onde um robô foi nocauteado por um aumento de energia de alta tensão. ele se redefiniria em 2 minutos.


2
Isso está correto, mas realmente não responde à pergunta.
sleske

4
Existem cães de guarda que realmente reiniciarão o computador inteiro? Sei que às vezes são usados ​​para vários microcontroladores dentro do computador, mas existe um em todo o nível do computador? Minha experiência pessoal me leva a dizer não, mas alguma evidência a favor ou contra seria bem-vinda.
AndrejaKo

5
@AndrejaKo: Eu trabalhava para uma empresa que fabricava servidores de comunicação (essencialmente servidores blade com modems conectados a eles). Eles tinham um cronômetro de vigilância conectado aos pinos de redefinição na placa-mãe. O timer era acionado periodicamente por um utilitário em segundo plano em execução na placa-mãe; portanto, se o processador travasse, o cão de guarda acabaria pressionando o botão de reinicialização. Estava ligado a um circuito que deixava a linha telefônica ocupada enquanto a placa-mãe era reiniciada.
Robert Harvey

4

De volta ao antigo IBM PC-1, o controlador do teclado, curiosamente, lidou com a reinicialização. A IBM incorporou um pequeno microprocessador para manipular o teclado, e ele tinha algumas linhas de E / S sobressalentes; portanto, elas usaram uma das linhas para conduzir a linha de redefinição da CPU principal. Um comando enviado ao controlador do teclado resultaria na reinicialização da CPU como se a energia tivesse acabado de ser ligada.

Acho que essa tradição continuou até a era "AT", e pode haver vestígios dela na ACPI hoje.

Adicionado: há um detalhe interessante sobre o esquema de redefinição acima. Durante a sequência de inicialização antecipada, o código procurou 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".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.