系统状态与睡眠唤醒基础知识总结
在工作中涉及到不同系统状态下的相关测试,以及睡眠休眠的测试,所以参考了一些资料进行学习,并简单做出如下总结。
一、 常见系统状态
-
使用状态:进程可正常进行,所有已连接的设备可以正常使用,机器处于运转状态。处于S0下。
可以理解为:正常工作的你
-
空闲状态:用户无操作时(鼠标、键盘等输入操作,或其他操作比如自动脚本),处于S0下。
可以理解为:暂时无事可做,闲着的你 -
睡眠状态(freeze、Standby、S3):
①freeze状态(Intel项目中的睡眠,S2idle):处于S0下的一种纯软件睡眠状态,通过冻结用户空间,息屏,并将所有I/O设备置于低功率状态(一般来说比运行时可用的功率低),使得处理器可以长时间处在空闲状态中,从而节省更多的电量。
可以理解为:闭眼发呆但没睡觉,暂停手中工作的你
②standby状态(windows系统中的睡眠):处于S1状态下的一种睡眠状态,在freeze的基础上,又关闭了非工作状态的cpu,并且挂起低等级的系统进程,从而达到更加省电的状态,但同时,唤醒的时间也会比freeze长一些。
可以理解为:闭眼开始休息但没睡着,暂停手中工作的你
③S3状态(Suspend,deep,主线的睡眠):计算机将目前的运行状态等数据存放在内存,关闭硬盘、外设等设备,进入等待状态。此时内存仍然需要电力维持其数据,但整机耗电很少。恢复时计算机从内存读出数据,回到挂起前的状态,恢复速度较快。在S3的最后一步,内核会把系统控制权交给BIOS,此时一些较低等级的组件会被断电。另外,S3状态需要一些最少的引导代码来恢复系统。
可以理解为:闭眼并且睡觉了,但只是浅睡,比如午休睡着时的你
-
休眠状态(S4,hibernate):主线项目中的休眠,在英文中翻译为“冬眠”。linux 中 S4 称为 swap 待机,有内核的 S4 ,会通过将内存上的所有数据保存在交换区磁盘的方式,来保存工作环境,然后关掉电源。所以机器需具备足够空间的swap分区。恢复时由 boot loader 启动内核,在内核初始化时,把之前保存到交换区磁盘的数据读入内存来快速恢复到原来的状态。
可以理解为:玩游戏存档,然后退出;唤醒时则对应着进入游戏,然后读档
-
软关机状态(S5):各种系统中的“关机”。除了用一点点电维持系统时钟以及电源键上电功能之外,其余全部不通电,系统关闭。
-
断电状态:拔掉台式机的电源或取下笔记本电脑的电池。机器完全无电的一个状态。
二、 睡眠唤醒流程
睡眠唤醒的常见基本流程如下:
三、 休眠唤醒流程
休眠唤醒的常见基本流程如下:
注意:从休眠中唤醒,要用到Swap交换区磁盘,一般需要准备内存的 1.5 ~ 2 倍的磁盘容量。这也解释了为何装机分区时需要给 swap 至少分到内存大小的2倍了。