Eu estava lendo esta página sobre como os estados de suspensão funcionam no Windows e fiquei intrigado com o vetor de redefinição. Meu entendimento atual é que:
Quando o sistema está em S2 / S3, o processador é totalmente desligado, os caches são perdidos e o barramento é pelo menos parado, se não for totalmente desligado. O conteúdo da RAM é preservado para permitir um rápido resumo.
Ao retomar, o processador lê o endereço armazenado no vetor de reinicialização (em x86, que é 0xFFFFFFF0
) que é comumente mapeado para ROM . Ele pula para o endereço que acabou de ler e começa a ser executado.
Como é ROM, presumo que a memória não possa ser gravada prontamente e, portanto, permaneça semiconsistente (excluindo os flashes do BIOS, etc.)
Assim, o processador liga, lê um endereço da ROM, pula para esse endereço e começa a execução (presumivelmente um POST ou outra inicialização).
Em algum ponto do caminho, ele precisa voltar ao que estava sendo executado antes de dormir.
Onde o endereço para continuar armazenado e o que faz com que o processador olhe lá?