Сохранение всего состояния процесса на диске и последующее его восстановление? (В Linux / Unix)

Я хотел бы знать: есть ли системный вызов, библиотека, модуль ядра или инструмент командной строки, который я могу использовать для сохранения состояния complete запущенной программы на диске?

То есть: я хотел бы полностью сбросить память, макет страницы, стек, регистры, потоки и дескрипторы файлов, которые в настоящее время использует процесс, в файл на жестком диске и иметь возможность восстановить его позже без проблем, как в эмуляторе. "или" снимок "виртуальной машины.

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

Это возможно?


person Marco Aurélio    schedule 18.04.2011    source источник
comment
возможный дубликат «гибернации» процесса в Linux   -  person ergosys    schedule 18.04.2011
comment
Аналогичный вопрос задан на unix.exchange   -  person Rick Smith    schedule 05.05.2015


Ответы (3)


Что-то вроде этого? Вы также можете посетить страницу контрольных точек в Википедии.

person ergosys    schedule 18.04.2011
comment
Спасибо! :-) Выглядит действительно впечатляюще. Но сохраняется ли это до сих пор? Последняя фиксация на cryoPID2, похоже, была сделана в 2009 году. :-( - person Marco Aurélio; 18.04.2011
comment
К сожалению, похоже, что проект как минимум зомби. См. Этот ответ (вопрос, вероятно, тоже дублирует этот): stackoverflow.com/questions/2134771/ - person ergosys; 18.04.2011
comment
Ваша ссылка (эта) теперь мертва. Возможно, вы захотите создать ссылку на что-то вроде code.google или на что-нибудь еще. Или ссылку на sourceforge. - person Guildenstern; 13.10.2014
comment
может ли кто-нибудь помочь, ответив на аналогичный вопрос (для окон) stackoverflow.com/questions/38263881/ - person ankur; 11.07.2016
comment
У меня много проблем с его компиляцией ... есть ли у кого-нибудь предварительно скомпилированные двоичные файлы? - person John P; 17.02.2017

Вам следует взглянуть на проект BLCR от Berkeley Lab. Это широко используется несколькими реализациями MPI для обеспечения возможностей проверки / перезапуска для параллельных приложений.

person crazyg33k    schedule 13.12.2011
comment
Ядра 3.x пока не поддерживаются. До тех пор, пока для этого не будет поддержки, нет смысла исправлять скрипт конфигурации, чтобы иметь возможность правильно определять местонахождение ядра 3.x, откуда и возникает эта ошибка. - hpcrdm.lbl.gov/pipermail/checkpoint/2012-June/ 000427.html Есть предложения? Я действительно хочу, чтобы это работало. - person John P; 17.02.2017

дамп ядра - это в основном это, так что да, это должно быть возможно.

На самом деле вам нужен способ повторно сохранить этот дамп как работающую программу. Это могло быть труднее.

person drysdam    schedule 18.04.2011