Como um computador pode se reiniciar? Depois de desligado, como se diz para voltar novamente? Que tipo de software é capaz de fazer isso?
Como um computador pode se reiniciar? Depois de desligado, como se diz para voltar novamente? Que tipo de software é capaz de fazer isso?
Respostas:
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:
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:
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),
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:
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.
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.
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.
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.
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.
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.
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.
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.
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".