Posso criar / salvar um estado de hibernação para recuperar de * sem * realmente hibernando?

5

Gostaria de ter meu computador retomado em seu último estado (programas abertos, etc.) no caso de um desligamento forçado ou não intencional sem precisar hibernar ou dormir em modo híbrido na minha máquina.

Isso é possível? O Windows é inicializado a partir dos dados de hibernação que são criados quando um hiberna ou hibernam, mas é possível criar / atualizar manualmente esses dados de hibernação dentro do Windows?

Existe um programa de terceiros que pode realizar algo semelhante? (excluindo máquinas virtuais) Eu não preciso de um estado exato salvar, mas, pelo menos, um método para lembrar o que estava aberto e abri-los novamente.

Atualmente, durmo o sistema (sono híbrido) após 1 hora de inatividade, de modo que, em caso de perda de energia, ele pode ser inicializado a partir dos dados do estado de suspensão híbrida. Isso é bom, mas me impede de ter qualquer coisa funcionando 24/7 sem ter que lidar com perdas ocasionais de energia. (que parecem acontecer com muito mais frequência do que deveriam)

    
por Enigma 13.06.2013 / 19:34

2 respostas

7

Existem pelo menos dois motivos pelos quais você não pode fazer isso.

Primeiro. A hibernação funciona graças aos estados de energia da ACPI . Não é tão simples como "descarregar RAM para o disco rígido e desligar". A RAM não é tudo, há também dispositivos que precisam ser revertidos para o estado anterior. É aí que o ACPI se junta à festa - ele permite que você suspenda os dispositivos ao entrar no estado S5 e os retome ao retornar a S0. Mas S5 implica desligamento, então você não pode hibernar o computador sem desligá-lo.

Segundo. Vamos supor que temos algum hardware que permita a hibernação de um computador em execução, mantendo-o ligado. Isso cria um problema semelhante àqueles que você poderia enfrentar ao lidar com computação paralela.

Os computadores funcionam em sequência. Eles executam séries de instruções simples (muito simples, como "aumentar esse número por 4"), uma a uma. PCs modernos têm CPUs multicore e poderiam, teoricamente, processar várias instruções de uma vez, mas nem sempre é possível. Por exemplo, digamos que temos três instruções.

  1. Leia X do usuário.
  2. Multiplique X por 2.
  3. Incrementar X por 7.

O passo 2 não pode ser processado até que o passo 1 seja concluído, porque X é desconhecido nesse momento. De maneira semelhante, a etapa 3 não pode ser processada até que a etapa 2 seja concluída, pois é muito provável que o valor de X mude na etapa 2. Essas etapas devem ser processadas uma a uma.

Agora vamos imaginar que temos um computador que processa transferências bancárias. Você tem uma quantia em dinheiro na sua conta bancária e deseja transferir US $ 100 para a conta do seu amigo. O algoritmo se parece com isso e tem que ser processado passo a passo por algum motivo:

  1. Reduza o valor associado à sua conta em US $ 100.
  2. Incremente o valor na conta do seu amigo em $ 100.
  3. A transferência foi processada, portanto, remova-a da fila de transferência.

O computador começa a processar essa transferência e, de repente, entre as etapas 1 e 2, ela é desativada devido a uma queda de energia.

Agora, se o computador não foi "hibernado, mas vivo", ele vai começar a arrancar e perceber que algo deu errado - ele saberá que deve verificar todas as operações recentes. Está tudo bem.

Mas se foi "hibernado, mas vivo" antes de começar a processar o passo 1, há um problema - o computador não sabe que algo deu errado, porque lembra que estava tudo bem quando estava em hibernação. Mas os dados no disco rígido foram atualizados e US $ 100 já foram retirados da sua conta, mas ainda não foram transferidos para a conta do seu amigo. Mas o computador não sabe disso, porque aconteceu depois de hibernar.

O computador levará outros $ 100 da sua conta e transferirá para o seu amigo. Os primeiros US $ 100 acabaram.

Existem centenas de milhares de problemas como esse que podem surgir "hibernando" um sistema em execução.

    
por 13.06.2013 / 20:11
2

Você pode realizar algo semelhante se trabalhar em uma máquina virtual. Com uma máquina virtual, você pode tirar instantâneos do seu computador a qualquer momento e revertê-los. Isso pode ser feito com VMWare, Hyper-V e VirtualBox.

    
por 13.06.2013 / 20:19