Linux 内核
休眠¶
此状态(也称为挂起到磁盘或 STD)提供了最大的节能效果,即使在缺乏对系统挂起的低级平台支持的情况下也可以使用。但是,它需要底层 CPU 架构存在一些用于恢复系统的低级代码。
休眠与任何系统挂起变体都显著不同。它需要三次系统状态更改才能进入休眠,两次系统状态更改才能恢复。
首先,当触发休眠时,内核会停止所有系统活动,并创建内存快照图像以写入持久存储。接下来,系统进入一个可以保存快照图像的状态,图像被写入,最后系统进入目标低功耗状态,其中几乎所有硬件组件(包括内存)的电源都被切断,除了有限的唤醒设备集。
快照图像写入完成后,系统可以进入特殊的低功耗状态(如 ACPI S4),或者直接断电。断电意味着最小的功耗,并且允许此机制在任何系统上工作。但是,进入特殊的低功耗状态可能会允许使用额外的系统唤醒方式(例如,按下键盘上的键或打开笔记本电脑盖)。
唤醒后,控制权交给平台固件,该固件运行引导加载程序,引导加载程序启动内核的新实例(控制权也可以直接转到引导加载程序,具体取决于系统配置,但无论如何,它都会导致启动内核的新实例)。内核的这个新实例(称为恢复 内核)在持久存储中寻找休眠图像,如果找到,则将其加载到内存中。接下来,系统中所有活动停止,恢复内核用图像内容覆盖自身,并跳到存储在图像中的原始内核中的特殊跳板区域(称为图像 内核),这里需要特殊的架构特定的低级代码。最后,图像内核将系统恢复到休眠前的状态,并允许用户空间再次运行。
如果设置了CONFIG_HIBERNATION内核配置选项,则支持休眠。但是,只有当给定 CPU 架构的支持包含用于系统恢复的低级代码时,才能设置此选项。