Quando uma máquina entra no estado de suspensão, o kernel congela (interrompe) os programas de espaço do usuário e os encadeamentos do kernel. Em seguida, o kernel percorrerá todos os dispositivos e chamará os métodos de suspensão em cada driver. Cada driver tem o know-how para colocar o hardware em um estado de suspensão profunda (ou mesmo desligá-lo) (e o inverso para trazê-lo de volta a um estado de execução sã quando o currículo ocorre). Neste ponto, o hardware deve estar em um estado de baixa energia (e, portanto, o disco rígido será desligado).
O endereço do código de ativação do Kernel é gravado em um endereço conforme especificado por uma tabela FADT da ACPI, depois os registros do Controle de Gerenciamento de Energia x86 são gravados em; isso efetivamente desliga o processador, mas mantém a memória em um modo de atualização automática.
Quando a retomada ocorre, a CPU é reiniciada e, após um curto período de tempo no firmware (BIOS / UEFI), salta para o endereço de ativação fornecido pelo kernel e o kernel volta ao modo protegido e restaura seu estado. Em seguida, ele percorre os drivers e estes retomam todos os dispositivos. Em seguida, os processos congelados são descongelados e o kernel retorna ao espaço do usuário.
Então, responda suas perguntas:
1 e 2: Os controladores de dispositivos tentam colocar dispositivos no estado de hibernação mais profundo, alguns dispositivos podem ser desligados, alguns podem estar apenas no estado de sono profundo, consumindo muito pouca energia. Depende do hardware e do driver do dispositivo.
A memória está sendo atualizada, nunca é desligada. A CPU está efetivamente parada, mas depende do modelo da CPU em quanto do pacote está totalmente desligado.
- Uma maneira de determinar quanto poder está sendo usado é usar os testes s3power do Firmware Test Suite; Eu recomendo colocar a máquina em sono profundo por 30 minutos e medir o consumo de energia da bateria para obter uma estimativa do uso de energia durante a suspensão:
remova a fonte de alimentação CA e execute:
sudo apt-get install fwts
sudo fwts s3power --s3power-sleep-delay=1800
.. espere 1800 segundos (30 minutos) e ele deve ligar novamente e dar uma estimativa.
- O disco rígido está desligado, portanto a máquina está segura para ser transportada.