5

Мне бы хотелось, чтобы мой компьютер возвращался к своему последнему состоянию (открытые программы и т.д.) В случае принудительного или непреднамеренного отключения питания без необходимости фактически переводить компьютер в спящий или гибридный режим.

Это возможно? Windows загружает данные гибернации, которые создаются при переходе в спящий или гибридный режим, но возможно ли вручную создать / обновить эти данные в режиме гибернации в Windows?

Существует ли сторонняя программа, способная выполнить нечто подобное? (исключая виртуальные машины) Мне не нужно точное сохранение состояния, но, по крайней мере, метод для запоминания того, что было открыто, и открытия их снова.

В текущем состоянии я сплю систему (гибридный спящий режим) после 1 часа бездействия, поэтому в случае потери питания она может загружаться из данных состояния гибридного спящего режима. Это хорошо, но это мешает мне работать круглосуточно без необходимости случайных потерь энергии. (которые, кажется, происходят намного чаще, чем должны)

2 ответа2

7

Есть по крайней мере две причины, почему вы не можете это сделать.

Первый. Спящий режим работает благодаря состояниям питания ACPI. Это не так просто, как "сброс оперативной памяти на жесткий диск и выключение". Оперативная память - это еще не все, есть также устройства, которые необходимо вернуть в прежнее состояние. Вот где ACPI присоединяется к вечеринке - он позволяет приостанавливать устройства при переходе в состояние S5 и возобновлять их при возврате к S0. Но S5 подразумевает выключение, поэтому вы не можете перевести компьютер в спящий режим, не выключив его.

Второй. Давайте предположим, что у нас есть какое-то оборудование, которое позволяет переводить компьютер в спящий режим, оставляя его включенным. Это создает проблему, аналогичную тем, с которыми вы можете столкнуться при работе с параллельными вычислениями.

Компьютеры работают последовательно. Они выполняют ряд простых (очень простых, например, "увеличить это число на 4"), одну за другой. Современные ПК имеют многоядерные процессоры и теоретически могут обрабатывать несколько команд одновременно, но это не всегда возможно. Например, допустим, у нас есть три инструкции.

  1. Прочитайте X от пользователя.
  2. Умножьте X на 2.
  3. Прирост Х на 7.

Шаг 2 не может быть обработан, пока шаг 1 не будет завершен, потому что X неизвестен в то время. Аналогично, шаг 3 не может быть обработан до тех пор, пока шаг 2 не будет завершен, потому что значение X очень вероятно изменится на шаге 2. Эти шаги должны быть обработаны один за другим.

Теперь давайте представим, что у нас есть компьютер, который обрабатывает банковские переводы. У вас есть некоторая сумма денег на вашем банковском счете, и вы хотите перевести 100 долларов на счет вашего друга. Алгоритм выглядит так и должен быть обработан шаг за шагом по некоторым причинам:

  1. Уменьшите сумму, связанную с вашей учетной записью, на 100 долларов.
  2. Увеличьте сумму на счете вашего друга на 100 долларов.
  3. Передача обработана, поэтому удалите ее из очереди на передачу.

Компьютер начинает обрабатывать эту передачу и внезапно, между шагами 1 и 2, отключается из-за сбоя питания.

Теперь, если компьютер не был «спящим, но живым», он начнет загружаться и обнаружит, что что-то пошло не так - он будет знать, что он должен проверить все последние операции. Все отлично.

Но если он был «спящим, но живым» до того, как начал обрабатывать шаг 1, есть проблема - компьютер не знает, что что-то пошло не так, потому что он помнит, что все было в порядке, когда он был в спящем режиме. Но данные на жестком диске были обновлены, и $ 100 уже снято с вашего аккаунта, но еще не переведено на аккаунт вашего друга. Но компьютер не знает об этом, потому что он произошел после спящего режима.

Компьютер возьмет с вашего счета еще 100 долларов и передаст их вашему другу. Первые 100 долларов пропали.

Существуют сотни тысяч подобных проблем, которые могут возникнуть из-за "спящего режима" работающей системы.

2

Вы можете сделать нечто подобное, если бы вы работали на виртуальной машине. С помощью виртуальной машины вы можете в любой момент сделать снимки своего компьютера и вернуться к ним. Это можно сделать с помощью VMWare, Hyper-V и VirtualBox.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .