【发布时间】:2021-10-20 01:57:16
【问题描述】:
正如问题所述。我确信这是可能的,但我找不到有关该主题的信息。
我现在正在做这个作为一个实验,想法基本上是做以下场景:
- 启动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 在 cmets 中所说,这里:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/power/hibernate.c?h=v5.14-rc6
【问题讨论】:
-
休眠状态将包括 inode 和页面缓存,对吗?如果文件系统在第 4 阶段发生更改,我看不出这将如何工作,而且它们现在已经过时了。 (“工作”是指“避免崩溃和/或破坏你的文件系统)
-
这是我想试验的东西,如果系统现在崩溃也没关系 - 这只是我想做的事情,没有明确的目标。
-
您可以在power/hibernate.c 中找到内核代码(这是最新的主线,在撰写本文时为 5.14-rc6)。
-
我不认为你可以在内核之外合理地做到这一点,因为你需要为所有用户保存所有内核状态以及每个运行进程的状态
-
听起来不错,我会再挖掘一些。如果你把它写下来作为答案,我可以接受。附:感谢您的快速回复和帮助!
标签: c++ linux memory stack heap-memory