Есть ли способ сделать снимок запущенного процесса на диск, чтобы восстановить его позже?

11

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

У меня есть тонна свободного дискового пространства, поэтому я не против сохранить весь снимок процесса, если это сэкономит мне время при открытии решения и ожидании загрузки проектов.

Sijin
источник
+1: интересная идея! (Конечно, это именно то, что менеджер виртуальной памяти пытается сделать для вас автоматически, как и когда это необходимо.)
Энди
2
FWIW, что-то вроде этого ("unexec", основанное на дампе ядра) традиционно является частью процесса сборки Emacs в системах UNIX. См., Например, xemacs.org/Architecting-XEmacs/unexec.html
coneslayer
1
Что специально для emacs было разработано? Интересно, можно ли написать версию общего назначения?
Энди
Я искал что-то подобное уже довольно давно. Это особенно поможет, если вы хотите приостановить видео кодер!
Прорыв
1
Похоже, что для Linux есть что-то подобное linux.org/apps/AppId_2488.html Однако я думаю, что проблема будет в открытых дескрипторах файлов, сетевых сокетах и ​​т. Д., Которые делают эту проблему нетривиальной
Sijin

Ответы:

2

Я делаю это, используя VirtualBox от Sun для разделения проектов. Это также удобно, потому что вы можете делать снимки.

Недостаток в том, что вам нужно поставить туда целую ОС.

Инкогнито
источник
3
Да, я использую VirtualBox для моментальных снимков уровня ОС, вот где у меня появилась идея для моментального снимка уровня приложения. Похоже, что для Linux есть нечто подобное linux.org/apps/AppId_2488.html. Однако я думаю, что проблема заключается в дескрипторах открытых файлов и т. Д., Которые делают это нетривиальной проблемой.
Сиджин
0

ProcessExplorer от MS Sysinternals позволяет приостановить процесс. это помогает / делает работу?


источник
5
К сожалению, нет ... Я хотел вынуть процесс из памяти, чтобы освободить его, а не просто приостановить приложение. Хотя это очень полезная программа для приложений, интенсивно использующих процессор, которую, возможно, придется приостановить!
Прорыв
Приостановка процесса эффективно останавливает все другие процессы, которые отправляют ему сообщения Windows. Бывает так, что некоторым процессам нравится отправлять сообщения другим процессам, а некоторым процессам нравится быть целью таких трансляций. Таким образом, приостановка некоторых процессов безвредна, но в других случаях это помешает вашей работе с компьютером. И еще кое-что. Некоторые процессы, после возобновления длительной приостановки, будут зависать и использовать весь ваш процессор, чтобы компенсировать все потерянное время, вычисляя что-то очень умное: P
Roland Pihlakas
Существует также утилита командной строки pssuspend от MS Sysinternals. Вы можете найти его там: technet.microsoft.com/en-us/sysinternals/bb897540 . Он является частью пакета PsTools: technet.microsoft.com/en-us/sysinternals/bb896649, где вы также можете найти, например, инструмент pskill , который, например, довольно удобен после возобновления процесса, и он становится слишком возбужденным ,
Роланд Пихлакас
1
@Breakthrough, но если процесс приостановлен, он откажется от памяти (поскольку другие программы используют память, они заставят эту страницу выгружаться), даже не пытаясь восстановить ее, пока вы не возобновите ее. Это действительно самый близкий / самый безопасный способ получить то, что вы хотите - замененная приостановленная программа в основном представляет собой надежно сохраненный моментальный снимок, который теряется при перезагрузке.
Бинки
-1

Вы можете использовать WinDbg (инструмент Microsoft), чтобы создать дамп текущего состояния компьютера с Windows. Обычно это используется для анализа проблем, но, возможно, это также может удовлетворить ваши потребности. Поиск по ключевым словам WinDbg и дамп для получения дополнительной информации, может быть, есть даже вариант, чтобы сбросить только отдельные процессы.

Саймон Д.
источник
Файл дампа не может быть использован для восстановления процесса.
user2284570 11.06.16