休眠 (电脑)

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

通过休眠,电脑将存储器中的内容保存至硬盘或其它非易失性存储器中,并在下次开机时从硬盘中将这些内容重新加载,使电脑还原到与休眠前一致的状态。

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

用途

休眠可以节省电力,在休眠后,电脑硬件接近完全断电的状态,但又与一般的关机有所不同,一小部分电力继续为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命令实现。