Qual mecanismo de firmware / hardware permite o desligamento forçado?

41

Embora eu não saiba ao certo, tenho certeza de que pressionar o botão liga / desliga em todos os computadores os forçará a desligar após períodos de tempo variados. Isso é particularmente útil se o computador congelar ou se algum outro erro exigir uma reinicialização total.

O que me interessa é se esse mecanismo de desligamento forçado é codificado nos computadores subjacentes ao firmware? Ou se isso está embutido no computador em um nível de hardware. Se o mecanismo fosse firmware, é lógico supor que um erro no nível da CPU impediria que esse mecanismo fosse acionado corretamente, o que me leva a acreditar que essa é uma função de hardware.

Para resumir: O mecanismo universal (presumo) de desligamento forçado está embutido no nível de hardware ou firmware? E alguém pode elaborar sobre a natureza dos mecanismos, variantes e história geral.

user4493605
fonte
7
@EJP errado. Veja minha resposta :)
DavidPostill
2
Em alguns dos dispositivos personalizados com os quais trabalhei que também possuem um botão liga / desliga e são alimentados por bateria (dificultando o ciclo de energia para um usuário), adicionamos explicitamente um microcontrolador separado ou um temporizador + circuitos lógicos (ou uma seção dedicada em um FPGA) para controlar a energia quando o firmware é suficientemente complexo para permitir um desligamento intenso, se houver um erro de firmware que o bloqueie.
Jason C
4
A maioria das declarações com "todos" estão erradas.
Pa Elo Ebermann
2
Se tudo mais falhar, há outra solução de backup totalmente de hardware que envolve um grosso cabo preto na parte traseira com um conector de 3 pinos. A remoção disso também forçará o desligamento.
Darren H
3
@ DarrenH não está em um laptop com uma bateria não removível. Flattenting a bateria iria funcionar, mas meu tem 10+ horas de vida (por exemplo)
Chris H

Respostas:

45

O mecanismo universal de desligamento forçado está embutido no nível de hardware ou firmware?

Tanto a placa-mãe (hardware) quanto o BIOS (firmware) estão envolvidos no processo.

A troca real da energia (ligada e desligada) é feita por circuitos na placa-mãe. Os circuitos são acionados para mudar de estado por um curto-circuito momentâneo de dois pontos no circuito. Isso é feito pelo botão do painel frontal. Uma conexão de curto prazo desse botão é suficiente. O circuito da placa-mãe também possui uma segunda e terceira função que pode ser executada.

O BIOS geralmente está configurado para que, se o circuito já estiver no estado ON e o contato momentâneo for mantido fechado por pelo menos 4 segundos, uma das duas ações será executada. O sistema será desligado imediatamente (como desligar um interruptor) ou a placa-mãe entrará no estado "inativo" e esperará ser reativada. Qual dessas duas opções é feita é algo que você define nas telas de configuração do BIOS. **

Esta é a razão pela qual a placa-mãe nunca está totalmente "desligada" na maioria das situações operacionais. Mesmo quando está "Desligado", há uma pequena parte dele dedicada à verificação de entradas de algumas fontes (como o botão frontal, alguns dispositivos USB e talvez um modem) para que ele possa responder ligando o sistema inteiro. A maneira de realmente desligar toda a energia é puxar o cabo de alimentação ou usar o interruptor físico montado na parte traseira da PSU para desligá-lo.

Fonte Como (o) botão liga / desliga funciona?


Os switches modernos não contêm mágica. Na verdade, eles são menos complicados e caros do que os comutadores físicos reais de ligar / desligar.

Esses comutadores são apenas entradas para um microcontrolador. O microcontrolador pode saber quando você pressiona o botão, e o restante é codificado em política no firmware para decidir o que fazer. A energia geralmente é trocada por transistores. Isso significa que o botão em si não precisa lidar com alta tensão ou alta corrente; portanto, há muito mais opções para torná-lo e para que seja pequeno. Pode ser um interruptor de membrana, por exemplo, que você nunca usaria para trocar a energia da parede.

Isso significa que um pouco do dispositivo geralmente está ligado, pelo menos o suficiente para alimentar o microcontrolador. No entanto, os microcontroladores modernos podem consumir quantidades tão pequenas de energia quando não fazem nada além de esperar por um sinal de comutação que essa energia é irrelevante na maioria dos casos.

Em alguns casos, o botão faz com que o micro seja ligado quando pressionado, o que liga alguns transistores ou um relé ou algo para manter a energia ligada. Quando você pressiona o botão para desligar o dispositivo, o micro desliga tudo, inclusive ele próprio.

Fonte Como funcionam esses botões de energia modernos nos dispositivos? Resposta de Olin Lathrop

DavidPostill
fonte
1
Para esclarecer, o botão liga / desliga é manipulado diretamente pela CPU principal como a maioria dos códigos do BIOS ou o firmware que manipula o botão liga / desliga funciona em um microcontrolador como a segunda parte da sua resposta?
Slebetman
3
Eu acredito que são os dois: pressionar o botão gera um evento ACPI para a CPU, mas também há uma CPU não principal monitorando-a para implementar o desligamento forçado verdadeiro, se for pressionada sem resposta da CPU. Caso contrário, você pode acabar em uma situação em que as interrupções estão desativadas e a ACPI está desativada e não pode forçar o desligamento.
Pjc50
6

O mecanismo universal (presumo) de desligamento forçado está embutido no nível de hardware ou firmware?

Sem procurar referências, há uma lógica bastante simples aqui: eles devem funcionar no nível do hardware porque funcionam sem CPU no soquete.

Claro, o PC não fará tanto assim, mas você ainda pode ligá-lo tecnicamente; se a sua placa principal tiver a capacidade de fornecer mensagens (por bipes ou por um pequeno código de 2 dígitos), você provavelmente receberá o código "CPU ruim / sem CPU". Você também poderá desligá-lo pressionando longamente, que é a parte importante aqui.

Além disso, lembre-se de que em todos os casos em que o sistema está em um estado profundamente não sadio (ou seja, no modo de usuário único / kernel linux panic / BSOD etc.) e para todos os efeitos em um beco sem saída, o poder O botão ainda funciona (pelo menos, pressione e segure).

Observe que "nível de hardware" já é um termo bastante amplo; ou seja, poderia facilmente existir desde alguns transistores até um pequeno µC dedicado com alguns bits de NVRAM (o que manteria os valores configurados pelo BIOS, por exemplo, no comportamento da pressão curta), que a maioria das pessoas ainda chamaria "hardware".

AnoE
fonte