日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux 电池管理软件,Linux电源管理(2)_Generic PM之基本概念和软件架构

發布時間:2023/12/15 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 电池管理软件,Linux电源管理(2)_Generic PM之基本概念和软件架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux電源管理(2)_Generic PM之基本概念和軟件架構

作者:wowo 發布于:2014-5-13 19:24

分類:電源管理子系統

1. 前言

這里的Generic PM,是蝸蝸自己起的名字,指Linux系統中那些常規的電源管理手段,包括關機(Power off)、待機(Standby or Hibernate)、重啟(Reboot)等。這些手段是在嵌入式Linux普及之前的PC或者服務器時代使用的。在那個計算機科學的蠻荒時代,人類在摩爾定律的刺激下,孜孜追求的是計算機的計算能力、處理性能,因此并不特別關心Power消耗。

在這種背景下發展出來的Linux電源管理機制,都是粗放的、靜態的、被動的,具體請參考下面的介紹。

2. Generic PM在Linux操作系統中的表現形式

Linux操作系統中,和Generic PM有關的操作如下面圖片:

該圖片截取自蝸蝸使用的“Linux ubuntu 2.6.32-38”系統,共有3部分組成:

第1部分是系統關機、重啟等操作的界面,共包含Hibernate、Restart、Shutdown三個操作選項;

2、3部分是“電源管理屬性”設置,所謂的電源管理屬性,可以配置系統在不同供電模式下(如AC Power、Battery等,由于蝸蝸的機器是PC機,因此就沒有電池供電的選項),處于Inactive狀態多久后,系統關閉Display,或者進入Sleep狀態。

本文將會圍繞上面提到的各個名詞,講述它們的意義、在內核中的實現方式。開始之前,先解釋一下這些詞匯的意義。

Shutdown,很好理解,就是關機的意思。同時意味著不再使用計算機。

Restart,也很好理解,就是重啟系統的意思。重啟的過程,不再使用計算機。

Hibernate,可翻譯為冬眠。

聽到“冬眠”這個詞,您是否眼前一亮?蝸蝸在“Linux電源管理(1)_整體架構”中解釋電源管理的概念的時候,提到過,動物冬眠就是大自然所設計的電源管理方式的一種。在動物界,冬眠是指動物們(通常針對溫血動物)通過降低體溫的方式而進入的類似昏睡的生理狀態,在這種狀態下,需要消耗的能量較少,從而可以達到省電(能量)的目的。

而在計算機界,設計師們也借用了“冬眠”的概念,在不需要使用計算機時,將它當前的所有現場(執行的程序、顯示器顯示的圖像、正在播放的聲音等)保存到一些斷電不會丟失的存儲器中(如硬盤中),然后將計算機關閉。重新開啟后,系統會從存儲器中將關閉前的現場讀取出來并恢復,此時從使用者的角度看,計算機就像沒有關閉過一樣。

如果把計算機界的“冬眠”搬到動物界,會是這樣的場景:一只恐龍,邁著八字步,吃著香蕉,晃晃悠悠的走在樹林中。然后,無聊的孫猴子來了,喊了一聲“定!”,恐龍就定在那里了。再然后,一萬年過去了,無聊的孫猴子又來了,喊了一聲“動!”,恐龍繼續邁著八字步,吃著香蕉,就像什么事情都沒有發生一樣。

Sleep,睡眠。這個詞也是從生物界學來的。想象一下“睡眠”和“冬眠”的區別?“睡眠”睡的輕,隨時都可以醒來。在計算機中,Hibernate需要把現場保存到斷電不丟失的存儲器中,并在醒來的時候讀回來,這些可能需要較長的時間(因為斷電不丟失存儲器的訪問速度都比較慢)。如果想快點,就把現場保存在內存中就可以了,這就是Sleep。不過這是要付出代價的,內存要保持供電,這就要消耗能量,魚與熊掌不可兼得啊!

Auto Sleep,查看上面圖片第3個部分,可以設置系統“處于Inactive狀態多久后,自動進入Sleep狀態”。比如我正在寫這篇文章,然后被老婆喊去跪搓衣板了,一跪兩個小時。這兩個小時內,計算機不再被使用,如果不進入Sleep狀態,將會消耗很多能量。為了避免這無謂的消耗,可以讓系統在符合條件時(如20分鐘不使用),自動睡下去。

Auto put display to Sleep,原理類似,只是操作的對象是Display(顯示器等)。

注:

不知讀者有沒有注意到,蝸蝸在解釋上面的詞匯時,一直在用紅色字體強調“計算機不再使用”。這就是Generic PM和Runtime PM的本質區別,即,在使用者的主觀意愿上,是否需要暫停使用計算機(哪怕短短的一段時間)。

這也是Generic PM在傳統的計算機操作系統中被廣泛使用的原因,因為那個時候對計算機的使用大多是主動方式。而對當前的移動互聯來說,就非常不合時宜了,因為人們需要移動設備實時在線、實時接收被動事件(如來電),也就不可能主觀地暫停使用(哪怕短短的一段時間)。這種最終需求的差異,會導致在軟件設計上有很大的差別,正因為如此,Runtime PM的出現和盡快成熟,才顯得格外重要。

3. Generic PM的軟件架構

在介紹完Generic PM的基本概念后,我們來看一下它在Linux內核中的整體實現,并抽象出簡單的軟件架構,以便再后續的文章中,對Generic PM的主要組成部分進行更為細致的分析。具體如下:

根據上面的描述可知,Generic PM主要處理關機、重啟、冬眠(Hibernate)、睡眠(Sleep,在Kernel中也稱作Suspend)。在內核中,大致可以分為三個軟件層次:

API Layer,用于向用戶空間提供接口,其中關機和重啟的接口形式是系統調用(在新的內核中,關機接口還有一種新方式,具體講到的時候再說),Hibernate和Suspend的接口形式是sysfs。

PM Core,位于kernel/power/目錄下,主要處理和硬件無關的核心邏輯。

PM Driver,分為兩個部分,一是體系結構無關的Driver,提供Driver框架(Framework)。另一部分是具體的體系結構相關的Driver,這也是電源管理驅動開發需要涉及到的內容(圖中紅色邊框的模塊)。

另外,電源管理是一個系統級的模塊,因而會涉及到設備模型、進程管理等等方方面面的內容,我們可以在后續具體的分析過程中,細細品味。

原創文章,轉發請注明出處。蝸窩科技,www.wowotech.net。

評論:

qkpidan

2019-12-06 13:55

生日:

MAGIC2???? 28.12.1969

MAGIC2A???? 5.12.1996

MAGIC2B??16.04.1998

MAGIC2C?? 20.11.2000

henry

2019-10-30 20:10

勘誤:

STR: suspend to RAM

STD: suspend to Disk

2019-10-28 13:52

猛一查STD和STR還查不到,一想:

STD:sleep to disk

STR:sleep to ram

recome

2018-11-05 14:23

不知道你們還維護不? user端,我看打開/sys/power/autosleep??這端口,并且write 寫值就可以了,但是在內核中搜索沒有看見創建節點的程序,還有就是write的接口實現。

recome

2018-11-05 14:52

@recome:一般的驅動在內核中創建了節點,和讀寫操作,但是在內核中沒有找到,請問一下,這是怎么創建的呢?

recome

2018-09-26 17:57

請問一下,autosleep 函數裏面沒有時間參數,那麼,怎麼知道多長時間sleep呢?

2018-09-26 18:45

@recome:kernel的autosleep是“事件”驅動的,不是“時間”驅動。

簡單的說,沒事兒的時候,就睡,有事兒就醒,不管“白天還是黑夜”。

2018-02-01 11:28

看到上面Hibernate的解釋,應該就是和虛擬機系統的掛起一樣

周末花褲衩

2017-09-21 20:17

wowo大神,能介紹一下什么是early suspend/late resume機制嗎

2017-09-22 09:10

@周末花褲衩:early suspend/late resume是之前android使用的、已經過時了的一個技術,我們不會再花時間去介紹它啦……

edwin

2015-09-01 11:03

wowo,請教一下在新的內核中已經不再使用early suspend/late resume 機制了,那么以前用此機制來實現的驅動suspend/resume功能現在用什么取代呢?

2015-09-01 12:26

@edwin:應該使用Runtime PM。

2015-06-27 11:02

小白弱問一下,體系結構無關和相關的driver分別是對應哪個目錄?

體系結構無關的Driver,提供Driver框架(Framework),是指的/drivers/base/power/*?

體系結構相關的driver,是指soc外面的外設嗎?

謝謝!

2015-06-27 15:54

@koala:是的,你說的很正確~~~

2015-04-30 22:20

站在代碼外邊分析問題。高屋建瓴。

1 2

發表評論:

昵稱

郵件地址 (選填)

個人主頁 (選填)

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的linux 电池管理软件,Linux电源管理(2)_Generic PM之基本概念和软件架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。