休眠 (计算机)

休眠(或挂起到磁盘)在计算机科学中的含义指在关闭计算机的同时保持其运行状态。

通过休眠,電腦将記憶體中的内容保存至硬碟或其它非揮發性記憶體中,并在下次开机时从硬碟中将这些内容重新载入,使電腦还原到与休眠前一致的状态。

当用作保存电池电量的手段时,休眠与睡眠模式类似,不过比后者节约更多的电量,代价则是从休眠中恢复时速度更慢(因为硬碟的速度比記憶體慢得多)。

用途

休眠可以节省电力,在休眠后,電腦硬體接近完全断电的状态,但又与一般的关机有所不同,一小部分电力继续为CMOS供电,以防止用户在下次开机恢复系统前进入BIOS設定。休眠的電腦耗电要比处于睡眠模式下少。休眠是一种减轻在关机前处理未保存数据并重新打开所有正在运行的程序的负担的手段。

休眠通常使用在筆記型電腦中,因为筆記型電腦的电池容量通常是有限的,而休眠可以由操作系统在電池低电量时自动触发。大多数台式机亦同样支援休眠,主要是为了节省能源。

存在的问题

某些情况下休眠可能导致错误,这是由于存在不兼容的设备或软件所致。

一些机构,主要是大型企业,通过各种手段(如网络策略等)强制要求计算机在一段时间无操作后进行自动休眠,主要是出于节省电费的考量,然而通常也会导致工作效率的下降,因为员工返回时必须等待机器从休眠中恢复,而机械硬盘的速度通常又很慢,导致恢复所需的时间延长。

与睡眠模式的比较

许多系统也支持低能耗的睡眠模式(亦称为待机模式),只使用少量的電源来维持内存中的内容,并支持唤醒操作,而唤醒通常是即时的。

睡眠模式的优越性在于从睡眠中恢复要比从休眠中恢复快得多。对处于休眠中的系统进行恢复首先要开机,然后将儲存在硬盘中的数据重新写回内存(这一过程通常需要10秒或更长的时间)。而唤醒睡眠模式的机器只需要激活CPU和显示系统即可,差不多是即时性的。不过另一方面,处于睡眠模式的机器必须持续耗电(尽管比正常运行时低)来维持内存中的内容,而休眠模式比睡眠模式耗电更少(如前述,仅需给CMOS供电以防止用户在重新开机时进入BIOS设置)。

混合休眠模式

睡眠模式和休眠模式可以联合进行:将RAM中的数据复制到硬碟中,然后電腦进入睡眠模式。这一方式可以获得睡眠和休眠的双重好处:電腦可以从睡眠中立刻恢复,而其运行状态(包含已打开的文件和未保存的工作)在掉電後也不會丟失。混合休眠模式的耗电与睡眠模式同等,而休眠模式完全不耗电。

操作系统支援情况

 
快速啟動與休眠模式

早期的休眠依赖BIOS功能,但现代操作系统通常接管了这一职责。休眠在高级配置与电源接口(ACPI)中被定义为S4睡眠模式。

Microsoft Windows

休眠可以通过开始菜单或命令行(shutdown命令)进行激活。

Windows 95通过硬件制造商提供的驱动程序支援休眠,且只有系统中存在兼容的硬件和BIOS时才能使用。由于Windows 95只支持高级电源管理(APM),休眠被称作待机至硬碟(Suspend to Disk)。Windows 98及其后的系统支持ACPI,但由于当时的硬件并不完全与ACPI 1.0标准兼容,或没有WDM驱动程式,休眠常常引发问题。休眠也与FAT32文件系统兼容性不佳。

Windows 2000是第一个在操作系统层面支援休眠的Windows系统(系统控制的ACPI S4睡眠状态),而不需要硬體制造商提供特殊驅動程式。一个被命名为hiberfil.sys的文件被用来在系统休眠时存储記憶體中的数据,其大小与总内存容量一致,该文件存储在系统分区下并具有隐藏和系统属性。

Windows XP进一步改良了休眠,由于对内存页使用了改进后的算法进行压缩,进入休眠模式及从休眠中恢复比以前速度更快。改进后的算法可使休眠文件的压缩与写入同步进行,未使用的内存页得以释放以缩小硬碟占用,并且在重新开机写入内存时使用了直接内存访问(DMA)。

Windows Vista引入了「混合式睡眠」,「混合式睡眠」将記憶體中的数据保存到硬碟,但接下来进入睡眠模式而不是断电。如果在下次开机前断电了,系统可以如进行休眠一般从硬碟恢复。

Windows 7支持对休眠文件的压缩。

Windows 8从休眠模式恢复的算法对多核处理器进行了优化。Windows 8还引入了快速啟動(Fast Startup)功能,当用户选择关机时,Windows实际上进行了休眠,不过关闭了所有打开的程序并将用户登出,从而使用户下次开机速度更快。

Mac OS X

在Mac机上,被称作安全睡眠的功能将易失性記憶體中的数据写入系统硬碟,然后系统进入睡眠模式。在記憶體供电没有切断的情况下,Mac可以从睡眠模式中立刻唤醒。不过在記憶體供电被切断的场合下(例如在未接交流电的情况下移除电池),Mac可以将記憶體数据从硬碟中读出,进而从安全睡眠模式中恢复。

安全睡眠模式仅在2005年10月版本起的PowerBook G4及更新的型号上存在,同时需要Mac OS X 10.4版或更高版本的支持。

Linux

Linux中,休眠功能通过systemd的systemctl命令實現。