S3待機 S4休眠


https://hceng.cn/2018/01/18/Linux%E7%94%B5%E6%BA%90%E7%AE%A1%E7%90%86/

 

1.1系統睡眠模型Suspend

On (on)                  S0 - Working
Standby (standby)            S1 - CPU and RAM are powered but not executed
Suspend to RAM (mem)          S3 - RAM is powered and the running content is saved to RAM
Suspend to Disk, Hibernation (disk)    S4 - All content is saved to Disk and power down

S3 aka STR(suspend to ram),掛起到內存,簡稱待機。計算機將目前的運行狀態等數據存放在內存,關閉硬盤、外設等設備,進入等待狀態。此時內存仍然需要電力維持其數據,但整機耗電很少。恢復時計算機從內存讀出數據,回到掛起前的狀態,恢復速度較快。對DDR的耗電情況進行優化是S3性能的關鍵,大多數手持設備都是用S3待機。

S4 aka STD(suspend to disk),掛起到硬盤,簡稱休眠。把運行狀態等數據存放在硬盤上某個文件或者某個特定的區域,關閉硬盤、外設等設備,進入關機狀態。此時計算機完全關閉,不耗電。恢復時計算機從休眠文件/分區中讀出數據,回到休眠前的狀態,恢復速度較慢。

系統休眠模型給我的感覺是以整機角度進行省電。
S3類似電腦的睡眠,在教長時間不使用電腦后,電腦黑屏,再次敲擊鍵盤迅速顯示桌面,原來的工作內容仍不變。
S4類似電腦的休眠,在長時間不使用電腦后,電腦黑屏,再次敲擊鍵盤無反應,按下電源鍵,開機,原來的工作內容仍不變。

對於嵌入式設備,更多的是使用S3,將數據暫時放在內存里,以實現快速恢復,就像手機的電源鍵按下黑屏,再次按下迅速亮屏。

在Linux中,通過cat /sys/power/state可以得知當前設備支持的節能模式,一般情況有如下選項:

  • freeze:不涉及具體的Hardware或Driver,只是凍結所有的進程,包括用戶空間進程及內核線程,能節省的能量較少,使用場景不多;
  • standby:前面的S1狀態,CPU處於淺睡眠模式,主要針對CPU功耗;
  • mem:前面的S3狀態,Suspend to RAM;
  • disk:前面的S4狀態,Suspend to Disk;

需要設置以上模式,只需echo mem > /sys/power/state即可。

 

系統睡眠狀態

在這篇文章中,我們將在Windows中看到不同的系統睡眠狀態。 MSDN很好地解釋了這一點。

系統電源狀態S0 - 這是工作狀態,Windows PC處於喚醒狀態。這不是睡眠狀態。

系統電源狀態S1 - 在此睡眠狀態下,CPU停止並且您的計算機處於待機模式。如果支持下一個S3狀態,則此S2是大多數硬件上的默認狀態。處理器時鍾關閉,總線時鍾停止。在這種狀態下,功耗可以在5-30瓦之間。

系統電源狀態S2 - 此狀態與S1類似,不同之處在於CPU上下文和系統緩存的內容因處理器斷電而丟失。

系統電源狀態S3 - 在此狀態下,數據或上下文將保存到RAM,並且硬盤驅動器,風扇等將關閉。功耗通常小於5瓦。 Windows 10/8中的S3(睡眠)或S4(休眠)狀態支持LAN喚醒。

系統電源狀態S4 - 在此狀態下,數據或上下文將保存到磁盤。它也被稱為 過冬 狀態,對筆記本電腦很有用。您的PC將RAM的內容保存到硬盤。硬件關閉所有設備。但是,操作系統上下文保存在系統在進入S4狀態之前寫入磁盤的休眠文件中。重啟后,加載程序讀取此文件並跳轉到系統之前的休眠前位置。功耗再次低於5瓦。

 

 

ACPI簡介

要理解第一個問題,得先從ACPI(高級配置與電源接口)說起,ACPI是一種規范(包含軟件與硬件),用來供操作系統應用程序管理所有電源接口。
ACPI將計算機系統的狀態划分為四個全局狀態(G0-G3),共7個狀態,其中G0對應S0;G1將低功耗狀態細分為四個狀態,對應S1-S4;G2、G3代表關機狀態分別對應S5、S6。

ACPI State Description
S0 正常工作狀態
S1 CPU與RAM供電正常,但CPU不執行指令
S2 比S1更深的一個睡眠層次,這種模式通常不采用
S3 掛起到內存
S4 掛起到硬盤
S5 Soft Off,CPU、外設等斷電,但電源依舊會為部分極低耗設備供電
S6 Mechanical Off,全部斷電

這里只需要對ACPI的七個狀態有個大致了解即可,下一節會有具體的例子來說明各個狀態。

Linux系統電源狀態

在Linux操作系統中,將電源划分為如下幾個狀態:

ACPI State Linux State Description
S0 On(on) Working
S1 Standby(standby) CPU and RAM are powered but not executed
S2 ------ ------
S3 Suspend to RAM(mem) CPU is Off,RAM is powered and the running content is saved to RAM
S4 Suspend to Disk(disk) All content is saved to Disk and power down
S5 Shutdown Shutdown the system

On:正常工作狀態

STR(Suspend to RAM):
掛起到內存,俗稱待機、睡眠(Sleep),進入該狀態,系統的主要工作如下:
1、將系統當前的運行狀態等數據保存在內存中,此時仍需要向RAM供電,以保證后續快速恢復至工作狀態
2、凍結用戶態的進程和內核態的任務(進入內核態的進程或內核自己的task)
3、關閉外圍設備,如顯示屏、鼠標等,中斷喚醒外設不會關閉,如電源鍵
4、CPU停止工作
Standby也屬於睡眠的一種方式,屬於淺睡眠。該模式下CPU並未斷電,依舊可以接收處理某些特定事件,視具體設備而定,恢復至正常工作狀態的速度也比STR更快,但也更為耗電。舉個例子來說,以該方式進入睡眠時,后續通過點擊鍵盤也能將系統喚醒。而以mem進入的睡眠為深度睡眠,只能通過中斷喚醒設備喚醒系統,如電源鍵(此時按電源鍵,不會經過正常的開機流程的BIOS、BOOTLOAD等),此時按鍵盤是無法喚醒系統的。

STD(Suspend to Disk):
掛起到硬盤,俗稱休眠(Hibernation)將系統當前的運行狀態等數據保存到硬盤上,並自動關機。下次開機時便從硬盤上讀取之前保存的數據,恢復到休眠關機之前的狀態。
譬如在休眠關機時,桌面打開了一個應用,那么下一次開機啟動時,該應用也處於打開狀態。而正常的關機-開機流程,該應用是不會打開的。

Linux內核代碼聲明如下,位於kernel/power/suspend.c


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM