将堆栈和堆内存转储到文件,然后将其加载回 RAM?
Dump stack and heap memory to file, then load it back into RAM?
如问题所述。我确信这是可能的,但我找不到关于这个主题的信息。
我现在正在做这个实验,我的想法基本上是做以下场景:
- 开机linux(因为不喜欢windows)
- 做一些随机的事情
- 将堆栈和堆内存转储到 1 或 2 个文件
- 做一些其他随机的事情
- 将转储加载回内存
我想达到的效果基本上是休眠一个系统状态,但是保持系统运行,然后唤醒之前的状态。不确定在哪里可以使用它,但听起来很有趣。
编辑:我认为搜索 sysctl hibernate 源代码会有所帮助,但我什至似乎找不到。
更新:
到目前为止,我找到了以下信息:
- https://www.kernel.org/doc/html/latest/power/swsusp.html
- https://help.ubuntu.com/community/PowerManagement/Hibernate
- https://alioth-archive.debian.org/git/collab-maint/hibernate.git.tar.xz
继续搜索...
我认为这是我需要挖掘的地方:
https://github.com/torvalds/linux/search?q=swsusp
此外,正如@Useless 在评论中所述,此处:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/power/hibernate.c?h=v5.14-rc6
EDIT: I thought searching for sysctl hibernate sources would help, but I can't even seem to find those
它需要在内核中完成,因为有大量内核和驱动程序状态,并且它需要访问所有 运行ning 进程。
您可以从power/hibernate.c开始。
如果您只是跳过 create_image()
中对 swsusp_arch_suspend()
的调用,您应该已经完成了大部分创建图像的过程,然后立即恢复。
您只需要弄清楚如何:
- 保持休眠状态,大概现在在恢复时被破坏
- 运行 restore/thaw 一半的代码,当你还没有被暂停时
如问题所述。我确信这是可能的,但我找不到关于这个主题的信息。
我现在正在做这个实验,我的想法基本上是做以下场景:
- 开机linux(因为不喜欢windows)
- 做一些随机的事情
- 将堆栈和堆内存转储到 1 或 2 个文件
- 做一些其他随机的事情
- 将转储加载回内存
我想达到的效果基本上是休眠一个系统状态,但是保持系统运行,然后唤醒之前的状态。不确定在哪里可以使用它,但听起来很有趣。
编辑:我认为搜索 sysctl hibernate 源代码会有所帮助,但我什至似乎找不到。
更新: 到目前为止,我找到了以下信息:
- https://www.kernel.org/doc/html/latest/power/swsusp.html
- https://help.ubuntu.com/community/PowerManagement/Hibernate
- https://alioth-archive.debian.org/git/collab-maint/hibernate.git.tar.xz
继续搜索...
我认为这是我需要挖掘的地方: https://github.com/torvalds/linux/search?q=swsusp
此外,正如@Useless 在评论中所述,此处:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/power/hibernate.c?h=v5.14-rc6
EDIT: I thought searching for sysctl hibernate sources would help, but I can't even seem to find those
它需要在内核中完成,因为有大量内核和驱动程序状态,并且它需要访问所有 运行ning 进程。
您可以从power/hibernate.c开始。
如果您只是跳过 create_image()
中对 swsusp_arch_suspend()
的调用,您应该已经完成了大部分创建图像的过程,然后立即恢复。
您只需要弄清楚如何:
- 保持休眠状态,大概现在在恢复时被破坏
- 运行 restore/thaw 一半的代码,当你还没有被暂停时