自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux acpi電源管理詳解

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

雖然Linux可以在任何一臺(tái)386以上的PC上運(yùn)行,目前大多數(shù)人使用的都是新型的,帶有各種外設(shè)的桌面PC或者筆記本電腦,這樣,電源管理功能(PM)就逐漸變得越來(lái)越重要。

1.Linux acpi電源管理概述

在筆記本電腦上電源管理可以節(jié)能,延長(zhǎng)電池壽命,而在桌面PC上它可以降低幅射,降溫,延長(zhǎng)外設(shè)使用壽命。現(xiàn)在的操作系統(tǒng)大都內(nèi)置了電源管理支持,例如Windows和Linux。

2.PC機(jī)實(shí)現(xiàn)Linux acpi電源管理的方法

兩種電源管理標(biāo)準(zhǔn):APM和ACPI
傳統(tǒng)的APM(AdvancedPowerManagement)是一種基于bios的電源管理標(biāo)準(zhǔn),目前的***版本是1.2,它提供了CPU和設(shè)備電源管理的功能,但是由于這種電源管理方式主要是由bios實(shí)現(xiàn),所以有些缺陷,比如對(duì)bios的過(guò)度依賴(lài),新老bios之間的不兼容性,以及無(wú)法判斷電源管理命令是由用戶(hù)發(fā)起的還是由bios發(fā)起的,對(duì)某些新硬件如USB和1394的不支持性。為了彌補(bǔ)APM的缺陷,新的電源管理ACPI應(yīng)運(yùn)而生,這就是ACPI(AdvancedConfigurationandPowerInterface),它主要是將電源管理的主要執(zhí)行者由bios轉(zhuǎn)換成為操作系統(tǒng),這樣可以提供更大的靈活性以及可擴(kuò)展性。目前的PC機(jī)主板一般同時(shí)支持APM和ACPI兩種標(biāo)準(zhǔn)。

3.Linux對(duì)電源管理的支持

內(nèi)核模塊
針對(duì)APM和ACPI兩種不同的標(biāo)準(zhǔn),Linux內(nèi)核提供了兩個(gè)不同的模塊來(lái)實(shí)現(xiàn)電源管理功能,這就是apm和acpi。需要注意,apm和acpi是互相沖突的兩個(gè)模塊,用戶(hù)在同一時(shí)間內(nèi)只能加載其中之一,如果當(dāng)他們?cè)诩虞d的時(shí)候發(fā)現(xiàn)二者之一已經(jīng)加載,就會(huì)自動(dòng)退出。
在官方發(fā)布的內(nèi)核中APM是較為成熟的電源管理方式,可以完成在Windows下ACPI所能完成的大部分功能。由于官方內(nèi)核中ACPI的功能比較有限,目前還處于開(kāi)發(fā)版狀態(tài)。所以當(dāng)前的大多數(shù)distribution,如紅帽子默認(rèn)就使用了apm作為電源管理方式。但是值得注意的是Linux中的ACPI實(shí)際上是由一個(gè)單獨(dú)的項(xiàng)目小組模塊進(jìn)行維護(hù)的,當(dāng)前內(nèi)核ACPI的版本實(shí)際上已經(jīng)遠(yuǎn)遠(yuǎn)落后于***的版本。由于Linux穩(wěn)定版中對(duì)任何新特性的加入都非常謹(jǐn)慎小心,所以我們也許只能等到2.6.x版本的Linux誕生后才能看到ACPI的穩(wěn)定全功能版了。不過(guò)我們也可以自己對(duì)內(nèi)核打***的ACPI補(bǔ)丁來(lái)獲得這些功能。
這里是ACPI的主頁(yè):
http://sf.net/projects/acpi/
下面對(duì)電源管理的介紹以APM為主。

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

4.Linux下驅(qū)動(dòng)的Linux acpi電源管理機(jī)制

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

實(shí)現(xiàn)設(shè)備電源管理接口主要需要實(shí)現(xiàn)以下5點(diǎn):
1).使用pm_register對(duì)設(shè)備的每個(gè)實(shí)例(instance)進(jìn)行注冊(cè);
2).在對(duì)硬件進(jìn)行操作之前調(diào)用pm_access(這樣會(huì)保證設(shè)備已被喚醒并且處于ready狀態(tài));
3).用戶(hù)自己的pm_callback函數(shù)在系統(tǒng)進(jìn)入suspend狀態(tài)(ACPID1-D3),或者從suspend狀態(tài)恢復(fù)(ACPID0)的時(shí)候會(huì)被調(diào)用;
4).當(dāng)設(shè)備不在被使用的時(shí)候調(diào)用pm_dev_idle函數(shù),這個(gè)操作是可選的,可以增強(qiáng)設(shè)備idle狀態(tài)的監(jiān)測(cè)能力;
5).當(dāng)被unload的時(shí)候,使用pm_unregister來(lái)取消設(shè)備的注冊(cè)。

5.Linux acpi電源管理對(duì)APM進(jìn)行編程

下面介紹在實(shí)模式中和在Linux下使用APM功能的編程方法:
由于APM是由bios提供的,我們可以直接在實(shí)模式(如DOS下)調(diào)用int15軟中斷來(lái)進(jìn)行電源管理操作。
在實(shí)模式下APM的standby、suspend和poweroff功能分別可以通過(guò)下面的匯編語(yǔ)言實(shí)現(xiàn):
 

  1. standby:  
  2. movax,5307H  
  3. movbx,1  
  4. movcx,1  
  5. int15H  
  6. suspend:  
  7. 改成movcx,2  
  8. poweroff:  
  9. 改成movcx,3  

 


需要注意的一件事是在Linux內(nèi)核中沒(méi)有使用和實(shí)模式的一樣的方法來(lái)調(diào)用int15H中斷,而是直接調(diào)用了bios的保護(hù)模式接口。所以我們?nèi)绻薷牧薭ios中的apm相關(guān)代碼并且沒(méi)有處理好保護(hù)模式接口的問(wèn)題,可以出現(xiàn)這樣的情況:在實(shí)模式DOS下使用apm功能一切正常,但是在Linux下調(diào)用apm功能發(fā)生內(nèi)核一般保護(hù)性錯(cuò)誤。在Linux下我們可以通過(guò)對(duì)apm_bios設(shè)備的操作來(lái)完成同樣的功能。下面的代碼可以實(shí)現(xiàn)APM的suspend功能,等價(jià)于apm-s
 

  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5. #include  
  6. #include  
  7. #include"apm.h"  
  8. intmain()  
  9. {  
  10. intfd,res;  
  11. fd=open("/dev/apm_bios",O_RDWR);  
  12. if(fd  

 

本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/17928/showart_114897.html

【編輯推薦】

  1. 華碩補(bǔ)齊Eee PC的ACPI源代碼回應(yīng)指責(zé)
  2. Linux acpi off簡(jiǎn)介
  3. Linux acpi off學(xué)習(xí)的必要
  4. Linux acpi off關(guān)于Suspend to Disk 問(wèn)題分析
  5. Linux acpi off報(bào)告ACPI bug處理方法

 

責(zé)任編輯:chenqingxiang 來(lái)源: ChinaUnix博客
相關(guān)推薦

2010-06-18 12:58:17

Linux acpi電

2009-12-14 15:41:58

Linux高級(jí)電源管理

2010-06-18 14:58:42

Linux ACPI服

2010-06-18 15:22:14

Linux ACPI服

2009-02-17 21:58:31

LinuxGPU電源管理

2010-06-18 12:47:04

Linux acpi

2010-06-18 11:27:43

Linux acpi

2010-06-21 14:05:08

Linux APM

2010-06-21 10:49:24

Linux APM

2010-06-18 14:41:48

Linux ACPI服

2010-02-25 15:45:48

Linux啟動(dòng)服務(wù)

2010-06-18 12:26:17

Linux acpi

2010-06-18 14:27:52

ACPI是什么

2014-06-06 09:40:14

802.11

2010-06-18 12:38:31

Linux acpi

2014-04-15 11:02:56

Linux 3.15Linux內(nèi)核

2009-03-05 09:43:32

Linux系統(tǒng)進(jìn)程管理命令

2017-01-15 20:58:04

Linux進(jìn)程作業(yè)管理

2013-11-25 17:39:17

Linux內(nèi)核PCIACPI

2010-11-15 10:02:31

UPS電源技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)