linux系統的休眠與喚醒簡介


轉自:http://blog.csdn.net/haomcu/article/details/7398703

系統掛起(Suspend)是電源管理(APM&ACPI)的一個特性,給用戶帶來了很大的方便。Linux在2.6系列核心中對電源管理有了較好的支持,下面就談談Linux對系統掛起的支持情況。

 

另外有一篇介紹android和linux內核對電源管理的支持的比較,代碼級別的:Linux Kernel and Android 休眠與喚醒(中文版)

一個網址是http://blog.csdn.net/hellolwl/article/details/6271207

      Linux對系統掛起的支持

 

       Linux同時提供了對APM和ACPI的支持,當時兩者是不兼容的,同一時刻只能有一種機制工作。由於ACPI的優越性,所以現在Linux將ACPI設為缺省的電源管理方案。對於一些比較舊的主板,如果其BIOS中ACPI的實現在2000年以前,那么Linux自動啟用APM(可以通過核心命令行參數acpi=force來強制啟用ACPI)。如果你下主板BIOS中對ACPI的支持有些問題導致Linux工作不正常,那么還可以使用核心命令行參數acpi=off來強制禁用ACPI,這樣Linux會自動啟用APM電源管理。

Linux現在主要支持三種ACPI的節電方式:

S1:Stopgrant,即待機(standby)模式。顯示屏自動斷電,只是主機通電。這時敲任意鍵即可恢復原來狀態。
S2 S3:STR(Suspend To Ram),即掛起到內存。系統把當前信息儲存在內存中,只有內存等幾個關鍵部件通電,這時計算機處在高度節電狀態。此時系統不能從鍵盤喚醒。手工喚醒的方法只能是按前面板上的電源按鈕。喚醒后,計算機從內存中讀取信息很快恢復到原來狀態。
S4:STD(Suspend To Disk),即掛起到硬盤,也即休眠。計算機自動關機,關機前將當前數據存儲在硬盤上,用戶下次按開關鍵開機時計算機將無須啟動操作系統,直接從硬盤讀取數據,恢復原來狀態。

在Linux下查看核心支持ACPI情況的方法如下:

2.4核心下:
# cat /proc/acpi/sleep
S0 S1 S3 S4 S5
2.6核心下:
# cat /sys/power/state
standby mem disk

上面的輸出可知,我們系統中核心同時支持三種節電模式。

在/sys/power目錄下還有一個文件:disk,文件的內容可以如下:

shutdown: 將系統狀態保存到磁盤,讓BIOS關閉計算機;
platform: 將系統狀態保存到磁盤,讓BIOS關閉計算機,並且點亮掛起指示燈;
firmware:
讓BIOS自己將系統狀態保存,並且關閉計算機,需要BIOS自己有掛起磁盤。大部分工作都由BIOS完成,對操作系統是透明的;

進入這三種節電模式的方法如下: 
#echo  standby > /sys/power/state ---->掛起(S1)
#echo  mem > /sys/power/state ---->掛起到內存(S3)
#echo shutdown > /sys/power/disk; echo disk >
/sys/power/state ---->掛起到磁盤(S4)
#echo platform > /sys/power/disk; echo disk >
/sys/power/state

 
        

Linux下的磁盤掛起(STD)是通過swsusp機制實現的:將系統當前狀態保存的內存后,再把內存內容寫入交換分區(swap)。這里要求交換分區容量最好大於內存容量。系統掛起到磁盤后,下次啟動的時候需要向核心傳遞命令行參數resume=/dev/hdaX(/dev/hdaX是系統中的交換分區),這樣系統就能夠很快恢復到關機時的狀態。

還有一個非正式的核心補丁可以實現STD:Software Suspend 2。該項目是一個快速發展的項目,設計上教swsusp有一些優勢,但是還沒有集成到核心正式發布中,實現方式與swsusp基本相同。

雖然Linux提供了系統掛起的機制,但是執行上面的掛起操作不一定能夠成功。一方面,這些操作除了需要BIOS支持以外,還需要外圍硬件設備能夠兼容,即設備支持節電狀態,支持從節電狀態或斷電狀態恢復;另一方面,這些設備驅動必須能夠接收電源管理指令。目前,系統掛起的主要障礙就是那些還不太完善的驅動程序,如USB、顯卡、聲卡驅動等。

當然,現在Linux核心對系統掛起的支持還有待改進,主要表現在:

  1. 不支持SMP系統。
  2. 不支持大內存(>4G)。
  3. 核心中許多模塊需要增加電源管理的支持。
  4. 缺少上層配置程序。

不過可以放心,所有的問題內核黑客們都能夠解決!

參考閱讀:

 

  1. http://www.acpi.info:ACPI的官方網站,在上面可以免費獲得最新的ACPI規范。
  2. http://acpi.sourceforge.net:Linux下支持ACPI項目網站。官方Linux內核中ACPI的版本實際上已經遠遠落后於最新的版本,因為linux穩定版中對任何新特性的加入都是非常小心謹慎的。你可以從這里下載最新的ACPI補丁。
  3. Linux核心源代碼目錄:Documentation/power/,里面有開發人員寫的一些關於電源管理在Linux上實現的文檔。
  4. http://www.suspend2.net:Software Suspend 2的官方網站,STD的另一個解決方案。


免責聲明!

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



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