休眠会把内存快照写入持久存储后关机,下次启动时加载镜像并恢复 CPU 与设备状态。它不同于 suspend-to-RAM,后者仍依赖内存供电。休眠的难点不是“把 RAM 写出去”,而是让任务、文件系统、设备 DMA 和架构状态在两个完全不同的启动阶段前后一致。
休眠前要把“还在动”的东西停下来
任务冻结、防止新的文件系统写入和暂停设备 DMA 都是创建一致镜像的前提。一个网卡或存储控制器若在快照过程中继续写内存,恢复后看到的状态可能无法解释。驱动的 suspend/resume 回调因此不是形式上的钩子,而是定义设备在镜像两端如何停下和重建。
RISC-V 架构状态需要单独处理
恢复内核先正常启动到能读取镜像的阶段,再覆盖大部分内存并跳回保存的执行点。页表、缓存、特权 CSR、中断控制器以及多 hart 的启动顺序必须在这个过程中保持正确。保存了内存不代表所有寄存器都能自动回来,架构代码需要明确哪些状态重新初始化、哪些状态从镜像恢复。
休眠最终还取决于存储可靠性、镜像空间和 resume 配置。测试时要覆盖断电、设备重新插拔和镜像校验失败等路径,而不是只验证一次正常休眠和恢复。