休眠 (電腦)

维基百科,自由的百科全书
跳转至: 导航搜索

休眠计算机科学中的含义指在关闭计算机的同时保持其运行状态。

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

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

用途[编辑]

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

休眠通常使用在笔记本电脑中,因为笔记本电脑的电池容量通常是有限的,而休眠可以由操作系统在低电量报警时自动触发。大多数台式机亦同样支持休眠,主要是为了节省能源。

存在的问题[编辑]

某些情况下休眠可能导致重新开机时出现错误,这是由于休眠的程序设计,或者存在不兼容的设备或软件所致。休眠通常也会导致外围设备的连接中断,从而在再次开机时引发与此相关的问题。

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

休眠所导致的另一个问题(主要在Windows设备上)是系统会破坏全盘加密、甚至仅仅是加密文件系统(EFS)的安全性。当系统处于休眠模式下时,有条件物理接触机器的攻击者可以将硬盘卸下并安装到另一套系统中,使其在不用输入密码的情况下即可访问加密内容。

与睡眠模式的比较[编辑]

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

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

混合休眠模式[编辑]

睡眠模式和休眠模式可以联合进行:将内存中的数据复制到非易失性内存中,然后计算机进入睡眠模式。这一方式可以获得睡眠和休眠的双重好处:计算机可以从睡眠中立刻恢复,而其运行状态(包含已打开的文件和未保存的工作)则可以逃过掉电带来的丢失。混合休眠模式的耗电与睡眠模式同等,而休眠模式完全不耗电。

操作系统支持情况[编辑]

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

Microsoft Windows[编辑]

在Windows设备上,只有当所有的设备都支持ACPI及即插即用时才能启用休眠模式。休眠可以通过开始菜单或命令行进行激活。

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 Me 作为最后一个Windows 9x家族成员同样支持系统控制的休眠,所需的磁盘空间与总内存大小一致。

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

尽管Windows XP支持大于4GB的内存(限Windows XP 64-bit Edition和Windows XP Professional x64 Edition),这一操作系统以及Windows Server 2003、Windows Vista、Windows Server 2008(均为32位版本)在安装大于4GB的内存时并不支持休眠,因为存储大量的内存数据到磁盘时性能会受到影响。

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

Windows 7 引入了对休眠文件的压缩,默认的文件大小为总内存数的75%。同时微软公司推荐通过powercfg.exe工具增加休眠文件的文件大小,以应对内存数据量超出75%容量的场合。休眠文件相对总内存的大小可以从50%到100%进行调节,不过并不推荐缩小该比率。

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

Mac OS X[编辑]

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

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

Linux[编辑]

在Linux内核中,休眠功能通过swsusp实现,并被内建在2.6版以后的内核中。替代性的实现是TuxOnIce,在3.4版以后的内核中作为补丁存在。另一个替代性的实现是uswsusp