This is called application or process checkpointing. There are/were lots of attempts to get it working under linux, some are more some less complete. It was a hot topic several years ago, but the interest sort of fizzled out since then because virtual machines sovle the same problem. A vm has more overhead but freezing a vm is also much more reliable.
This wikipedia article mentions few approaches: http://en.wikipedia.org/wiki/Application_checkpointing
This page has many more projects, though most are probably dead by now: http://checkpointing.org/
Both are incomplete, googling "linux checkpointing" returns things not mentioned in either, like https://ckpt.wiki.kernel.org/index.php/Main_Page
Yep, this is very important for grid computing where a user may log into an organization's workstation and the grid job running on the workstation needs to be evicted. With process checkpointing, you can resume the work later (perhaps even on another node). Without it, all of the intermediate progress is discarded.
> Checkpoint/Restore In Userspace, or CRIU (pronounced kree-oo, IPA: /krɪʊ/, Russian: криу), is a software tool for Linux operating system. Using this tool, you can freeze a running application (or part of it) and checkpoint it to a hard drive as a collection of files. You can then use the files to restore and run the application from the point it was frozen at. The distinctive feature of the CRIU project is that it is mainly implemented in user space.
Re:Very funny, gdb. Ve-ery funny
by justincormack on Saturday January 11, 2014 @12:35PM
(#7043106)
As always http://lwn.net has the best overviews, eg start here https://lwn.net/Articles/525675/
Another userspace tool for process checkpointing is DMTCP: http://dmtcp.sourceforge.net/. From the About page:
"DMTCP (Distributed MultiThreaded Checkpointing) is a tool to transparently checkpoint the state of multiple simultaneous applications, including multi-threaded and distributed applications. It operates directly on the user binary executable, without any Linux kernel modules or other kernel modifications."
Anyone got any pointers on this?