Я ищу способ предотвратить зависание Windows. Я знаю, что из-за проблемы остановки невозможно полностью запретить выполнение какой-либо программы в бесконечном цикле, но моя проблема более поддается решению, я думаю: я просто хочу обнаружить зависания и выполнить соответствующее действие (уничтожить процесс или перезагрузить компьютер))
Иногда мой рабочий компьютер зависает по разным причинам, которые могут варьироваться от неисправной программы, потребляющей слишком много ОЗУ, до внешнего жесткого диска USB, который перестает отвечать на запросы и приводит к зависанию всей ОС.
Однако мне нужно, чтобы мой компьютер всегда был включен, потому что, если он зависает, он останавливает фоновые вычисления, которые я оставил, и остановка может остаться незамеченной, и это нужно исправить лично (например, нет возможности удаленно исправить ночью, например) Таким образом, много времени может быть потеряно.
Что я ищу:
- способ обнаружения зависаний в Windows (7 x64). Есть ли стандартный метод?
- либо убейте корень зависаний, либо, если это невозможно, перезагрузите компьютер. Можно ли обнаружить корень заморозки? Можно ли (не физически) принудительно перезагрузить компьютер даже во время остановки?
Конечная цель состоит в том, чтобы в случае зависания текущие вычисления могли быть потеряны, но компьютер снова стал доступен как можно скорее (например, для удаленного доступа для повторного запуска вычислений).
Я предполагаю, что для того, чтобы такая программа работала, она должна была бы работать в ring0, выше всего остального, чтобы не попасться в замораживание (но это ставка, я не уверен, что зависания не будут воздействует на кольцо ring0, но целевые значения замораживания, на которые я нацеливаюсь, по-прежнему позволяют входам работать как мышь и клавиатура, поэтому я думаю, что ring0 также может работать).
Ограничения:
Очень строгие меры безопасности в сети (отсутствие внешнего доступа, только внутренние компьютеры могут получить доступ к внешним, например, для удаленного доступа к компьютеру работает только перфорация UDP-отверстий), поэтому использование удаленно управляемого интернет-разъема, например, невозможно.
Никаких изменений в оборудовании: я могу подключить дополнительное оборудование к своему компьютеру, но не могу изменить компоненты, уже находящиеся внутри (например, не могу заменить материнскую плату, но могу подключить устройство PCI или SATA или что-то еще).
На данный момент я ищу либо программное обеспечение, которое может сделать это, либо техническую информацию о том, как сделать это самостоятельно (и если это может сработать, или если это просто невозможно), или какое-либо другое решение, которое соответствует вышеуказанным ограничениям.
Я не ожидаю исправления всех видов зависаний, используя только программное решение, но я надеюсь по крайней мере обойти тип "частичных" зависаний, когда мышь и клавиатура все еще работают.
Заранее спасибо.
ПРИМЕЧАНИЕ: я говорю о замораживаниях не-BSOD здесь. В случае зависания BSOD Windows предоставляет параметр автоматической перезагрузки после дампа ядра.