Linux系統的休眠與喚醒簡介

2021-06-16 05:44:23 字數 3148 閱讀 3671

系統掛起(suspend

)是電源管理(

apm&acpi

)的乙個特性,給使用者帶來了很大的方便。

linux

在2.6

系列核心中對電源管理有了較好的支援,下面就談談

linux

對系統掛起的支援情況。

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 

缺少上層配置程式。

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

參考閱讀: 5 

:acpi

的官方**,在上面可以免費獲得最新的

acpi

規範。

6 :linux

下支援acpi

專案**。官方

linux

核心中acpi

的版本實際上已經遠遠落後於最新的版本,因為

linux

acpi

補丁。

7 linux核心源**目錄:

documentation/power/

,裡面有開發人員寫的一些關於電源管理在

linux

上實現的文件。 8 

:software suspend 2

的官方**,

std的另乙個解決方案。

Linux系統的休眠與喚醒簡介

系統掛起 suspend 是電源管理 apm acpi 的乙個特性,給使用者帶來了很大的方便。linux在2.6系列核心中對電源管理有了較好的支援,下面就談談linux對系統掛起的支援情況。linux對系統掛起的支援 linux同時提供了對apm和acpi的支援,當時兩者是不相容的,同一時刻只能有一...

Linux 休眠喚醒(一)

說明 1.based on linux2.6.32,only for mem sdr 2.有興趣請先參考閱讀 電源管理方案apm和acpi比較.doc linux系統的休眠與喚醒簡介.doc 4.基於手上的乙個專案來討論,這裡只討論共性的地方 雖然linux支援三種省電模式 standby susp...

Linux 休眠喚醒(一)

說明 1.based on linux2.6.32,only for mem sdr 2.有興趣請先參考閱讀 電源管理方案apm和acpi比較.doc linux系統的休眠與喚醒簡介.doc 4.基於手上的乙個專案來討論,這裡只討論共性的地方 雖然linux支援三種省電模式 standby susp...