休眠 (計算機)

休眠(或掛起到磁盤)在計算機科學中的含義指在關閉計算機的同時保持其運行狀態。

通過休眠,電腦將記憶體中的內容保存至硬碟或其它非揮發性記憶體中,並在下次開機時從硬碟中將這些內容重新載入,使電腦還原到與休眠前一致的狀態。

當用作保存電池電量的手段時,休眠與睡眠模式類似,不過比後者節約更多的電量,代價則是從休眠中恢復時速度更慢(因為硬碟的速度比記憶體慢得多)。

用途

休眠可以節省電力,在休眠後,電腦硬體接近完全斷電的狀態,但又與一般的關機有所不同,一小部分電力繼續為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命令實現。