<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

linux電源管理

作者: 時(shí)間:2008-07-23 來(lái)源:網(wǎng)絡(luò ) 收藏

  1.概述

  雖然 linux 可以在任何一臺 386 以上的 PC 上運行,目前大多數人使用的都是新型的,帶有各種外設的桌面PC或者筆記本電腦,這樣,功能(PM)就逐漸變得越來(lái)越重要。在筆記本電腦上可以節能,延長(cháng)電池壽命,而在桌面PC上它可以降低幅射,降溫,延長(cháng)外設使用壽命?,F在的操作系統大都內置了支持,例如 Windows 和 。

  2.PC機實(shí)現電源管理的方法

  要實(shí)現電源管理,最重要的有兩點(diǎn):第一是需要設備本身支持節電功能,比如硬盤(pán),可以通過(guò)指令暫時(shí)關(guān)閉;第二是需要操作系統支持電源管理,這樣就可以在空閑一段時(shí)間之后調用驅動(dòng)的電源管理功能關(guān)閉設備。

  兩種電源管理標準:APM和ACPI

  傳統的APM(Advanced Power Management)是一種基于bios的電源管理標準,目前的最新版本是1.2,它提供了CPU和設備電源管理的功能,但是由于這種電源管理方式主要是由bios實(shí)現,所以有些缺陷,比如對bios的過(guò)度依賴(lài),新老bios之間的不兼容性,以及無(wú)法判斷電源管理命令是由用戶(hù)發(fā)起的還是由bios發(fā)起的,對某些新硬件如USB和1394的不支持性。

  為了彌補APM的缺陷,新的電源管理ACPI應運而生,這就是ACPI(Advanced Configuration and Power InteRFace),它主要是將電源管理的主要執行者由bios轉換成為操作系統,這樣可以提供更大的靈活性以及可擴展性。

  目前的PC機主板一般同時(shí)支持APM和ACPI兩種標準。

  3.linux對電源管理的支持

  內核模塊

  針對APM和ACPI兩種不同的標準,linux內核提供了兩個(gè)不同的模塊來(lái)實(shí)現電源管理功能,這就是apm和acpi。需要注意,apm和acpi是互相沖突的兩個(gè)模塊,用戶(hù)在同一時(shí)間內只能加載其中之一,如果當他們在加載的時(shí)候發(fā)現二者之一已經(jīng)加載,就會(huì )自動(dòng)退出。

  在官方發(fā)布的內核中APM是較為成熟的電源管理方式,可以完成在Windows下ACPI所能完成的大部分功能。由于官方內核中ACPI的功能比較有限,目前還處于開(kāi)發(fā)版狀態(tài)。所以當前的大多數distribution,如紅帽子默認就使用了apm作為電源管理方式。但是值得注意的是linux中的ACPI實(shí)際上是由一個(gè)單獨的項目小組模塊進(jìn)行維護的,當前內核ACPI的版本實(shí)際上已經(jīng)遠遠落后于最新的版本。由于linux穩定版中對任何新特性的加入都非常謹慎小心,所以我們也許只能等到2.6.x版本的linux誕生后才能看到ACPI的穩定全功能版了。不過(guò)我們也可以自己對內核打最新的ACPI補丁來(lái)獲得這些功能。

  下面對電源管理的介紹以APM為主。

  用戶(hù)態(tài)Daemon

  為了讓linux內核中的電源管理功能夠更好的被利用,我們還需要用戶(hù)態(tài)daemon程序的配合。針對APM和ACPI,分別有apmd和acpid兩個(gè)不同軟件。他們實(shí)現的功能比較類(lèi)似,都是允許用戶(hù)預先定義某些策略,然后跟蹤電源狀態(tài),執行特定的操作。在apmd軟件包中還有一個(gè)工具apm,用戶(hù)可以用它使機器主動(dòng)進(jìn)入standby和suspend狀態(tài),還可以查詢(xún)bios的apm版本號。在使用acpi時(shí)直接對proc文件系統進(jìn)行操作即可完成同樣的功能。

  4.linux下驅動(dòng)的電源管理機制

  在linux下不必為驅動(dòng)分別編寫(xiě)與APM和ACPI相對應的代碼,linux與Windows類(lèi)似,為驅動(dòng)提供了統一的電源管理接口。驅動(dòng)只要實(shí)現了這些接口,就可以實(shí)現電源管理的功能。操作系統在它認為合適的時(shí)候就會(huì )通知驅動(dòng)完成這些操作。

  實(shí)現設備電源管理接口主要需要實(shí)現以下5點(diǎn):

  1)使用pm_register對設備的每個(gè)實(shí)例(instance)進(jìn)行注冊;

  2)在對硬件進(jìn)行操作之前調用pm_access(這樣會(huì )保證設備已被喚醒并且處于ready狀態(tài));

  3)用戶(hù)自己的pm_callback函數在系統進(jìn)入suspend狀態(tài)(ACPI D1-D3),或者從suspend狀態(tài)恢復(ACPI D0)的時(shí)候會(huì )被調用;

  4)當設備不在被使用的時(shí)候調用pm_dev_idle函數,這個(gè)操作是可選的,可以增強設備idle狀態(tài)的監測能力;

  5)當被unload的時(shí)候,使用pm_unregister來(lái)取消設備的注冊。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Linux 電源管理

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>