APM和ACPI比较

近期对linux的电源管理产生了兴趣,索性来学习一下电源管理的东西。这不,遇到的一个问题就是这个:APM、ACPI两种电源管理方案有何异同?下面的东西全部来自于网络博文,当然有做一些整理。

一、APM的不足和ACPI产生

APM全称是 Advanced Power Management(高级电源管理),他是一种基于BIOS的系统电源管理方案,它提供CPU和外设电源管理并通过设备工作超时设定来决定何时将设备切换到低功耗模式。目前最新的版本是1.2,相对于1.0和1.1版来说,最新版的APM方案由操作系统来定义管理实践,实际的执行动作还是由BIOS来做。

APM电源状态包括: 就绪,待机(standby),挂起(suspend),休眠(sleep),关闭。

但是由于这种电源管理方式主要是由bios实现,所以有些缺陷,比如对BIOS的过度依赖,新老BIOS之间的不兼容性,以及无法判断电源管理命令是由用户发起的还是由BIOS发起的,对某些新硬件如USB和1394的不支持性。主要不足包括:

1.  由于基于APM的BIOS都有它自己的电源管理方案,使得计算机与计算机之间缺乏一致性,每个BIOS开发者必须精心维护自己的APM BIOS代码和功能。
    2.  系统进入挂起的原因无法知晓。用户是否按了进入睡眠按钮,还是BIOS认为系统已进入了空闲状态,或者电池电压过低,这些信息APM都无法知道,但是Windows必须要知道挂起的原因,即使系统没有进入空闲状态。
    3.  BIOS无法知道用户在干什么,只有通过监视中断和I/O端口来猜测用户的活动。有时,BIOS会使系统处于完全混乱的状态,当系统没有空闲时将系统挂起或者当系统处于空闲状态时,却不进入挂起状态。
    4.  早期版本的BIOS APM(1.0和1.1)不提供任何系统性能信息,系统是否支持睡眠状态就只有尝试将系统转入睡眠模式才知道。如果BIOS不支持睡眠模式,那将导致死机。BIOS APM 1.2解决了这个缺陷。
    5.  BIOS对USB设备、加插的电脑配件卡和IEEE1394设备全然不知,导致当以上设备没有进入空闲状态,而BIOS却认为系统已经进入空闲状态,从而发生冲突,使这些设备无法正常使用或系统死机。

由于APM有以上不足,因此ACPI应运而生。
    ACPI全称Advanced Configuration Power Interface(高级配置电源界面),ACPI是为了解决APM的缺陷而问世的。它定义了许多新的规范:

1.  ACPI将现有的电源管理BIOS代码、APM应用编程接口、PNP BIOS应用编程接口、多处理器规范表格等集合成一种新的电源管理和配置接口规范。
    2.  ACPI允许操作系统(不是BIOS)控制电源管理,这点与APM不相同。
    3.  ACPI标准定义了硬件寄存器、BIOS接口(包含配置表格、控制方法以及主板设备列举和配置)、系统和设备的电源状态和ACPI热模型。
    4.  BIOS支持的代码不是用汇编语言而是用AML(ACPI Machine Language,ACPI机器语言)编写的。BIOS不能决定用于电源管理或资源管理的策略或超时。
    5.  使用ACPI系统的所有设备可以互相通信来了解彼此的使用情况,并且都受操作系统的控制,操作系统对正在运行的系统状态了如指掌,所以操作系统处于执行电源管理的最佳位置。

二、ACPI介绍

ACPI表示高级配置和电源管理接口(Advanced Configuration and Power Management Interface)。对于Windows2000,ACPI定义了Windows 2000、BIOS和系统硬件之间的新型工作接口。这些新接口包括允许Windows 2000控制电源管理和设备配置的机制。
  Windows 2000具有电源管理功能,该功能可以让系统进入低电源消耗的"睡眠状态",如待机和休眠等,目的就是控制电脑的电源消耗。Windows 2000可以在您按下电源按钮时重新"唤醒"系统,此时系统将立即进入运行状态。

  ACPI(Advanced Configuration Management)是1997年由INTEL/MICROSOFT/TOSHIBA(英特尔、微软和东芝)提出的新型电源管理规范,意图是让系统而不是BIOS来全面控制电源管理,使系统更加省电。

其特点主要有:提供立刻开机功能,即开机后可立即恢复到上次关机时的状态,光驱、软驱和硬盘在未使用时会自动关掉电源,使用时再打开;支持在开电状态下既插即拔,随时更换功能。

  ACPI主要支持三种节电方式:
  1、(standby即待机)显示屏自动断电,只是主机通电。这时敲任意键即可恢复原来状态
  2、(suspend to ram 即挂起到内存)系统把当前信息储存在内存中,只有内存等几个关键部件通电,这时计算机处在高度节电状态,按任意键后,计算机从内存中读取信息很快恢复到原来状态。
  3、(suspend to disk即挂起到硬盘)计算机自动关机,关机前将当前数据存储在硬盘上,用户下次按开关键开机时计算机将无须启动系统,直接从硬盘读取数据,恢复原来状态。

  ACPI可实现以下功能:
  1、用户可以使外设在指定时间开关;
  2、使用笔记本电脑的用户可以指定计算机在低电压的情况下进入低功耗状态,以保证重要的应用程序运行;
  3、操作系统可以在应用程序对时间要求不高的情况下降低时钟频率;
  4、操作系统可以根据外设和主板的具体需求为它分配能源;
  5、在无人使用计算机时可以使计算机进入休眠状态,但保证一些通信设备打开;
  6、即插即用设备在插入时能够由ACPI来控制。

  不过,ACPI和其他的电源管理方式一样,要想享受到上面这些功能,必须要有软件和硬件的支持。在软件方面,Windows 98提供了支持(但不全面,默认禁止STD,需要给setup.exe加参数强制开启,但BUG很多),Windows 2000对ACPI给予了全面的支持;硬件方面比较麻烦,除了要求主板、显卡和网卡等外设要支持ACPI外,还需要机箱电源的配合。电源在提供5伏电压给主板的同时,还必须使电流稳定在720毫安以上才可以,这样它才能够实现电脑的“睡眠”和“唤醒”。

  ACPI共有六种状态,分别是S0到S5。它们代表的含义分别是:
  S0--实际上这就是我们平常的工作状态,所有设备全开,功耗一般会超过80W;
  S1--也称为POS(Power on Suspend = standby),这时除了通过CPU时钟控制器将CPU关闭之外,其他的部件仍然正常工作,这时的功耗一般在30W以下;(其实有些CPU降温软件就是利用这种工作原理)
  S2--这时CPU处于停止运作状态,总线时钟也被关闭,但其余的设备仍然运转;
  S3--这就是我们熟悉的STR(Suspend to RAM),这时的功耗不超过10W;
  S4--也称为STD(Suspend to Disk),这时系统主电源关闭,但是硬盘仍然带电并可以被唤醒;
  S5--这种状态是最干脆的,就是连电源在内的所有设备全部关闭,即关机(shutdown),功耗为0。

  我们最常用到的是S3状态,即Suspend to RAM(挂起到内存)状态,简称STR。顾名思义,STR就是把系统进入STR前的工作状态数据都存放到内存中去。在STR状态下,电源仍然继续为内存等最必要的设备供电,以确保数据不丢失,而其他设备均处于关闭状态,系统的耗电量极低。一旦我们按下Power按钮(主机电源开关),系统就被唤醒,马上从内存中读取数据并恢复到STR之前的工作状态。内存的读写速度极快,因此我们感到进入和离开STR状态所花费的时间不过是几秒钟而已;而S4状态,即STD(挂起到硬盘)与STR的原理是完全一样的,只不过数据是保存在硬盘中。由于硬盘的读写速度比内存要慢得多,因此用起来也就没有STR那么快了。STD的优点是只通过软件就能实现,比如Windows 2000就能在不支持STR的硬件上实现STD。

三、linux所支持的APM和ACPI

针对APM和ACPI两种不同的标准,linux内核提供了两个不同的模块来实现电源管理功能,这就是apm和acpi。需要注意,apm和acpi是互相冲突的两个模块,用户在同一时间内只能加载其中之一,如果当他们在加载的时候发现二者之一已经加载,就会自动退出。

这个网址文章介绍的是linux对电源管理的支持:

http://www.ibm.com/developerworks/cn/linux/l-power/

可以先看看了解,后面再深入学习。

http://www.novell.com/documentation/suse91/suselinux-adminguide/html/ch09s03.html#sec:pmanage.probs

这个网址是介绍ACPI模块对上层用户空间的接口和Daemon程序acpid。

参考文档:

1. http://hi.baidu.com/kunlaurel/blog/item/dfe12e0d419618e6ab6457ad.html

2. http://hi.baidu.com/yanyulou/blog/item/f56e5143dec9d3129313c6f1.html

3. http://hi.baidu.com/tian___tian/blog/item/37ec77c7bc8e1d1d9d163d08.html

4. http://os.51cto.com/art/201006/206488.htm

电源管理方案APM和ACPI比较相关推荐

  1. 篇1:如何为FPGA选择合适的电源管理方案

                                        如何为FPGA选择合适的电源管理方案 0    背景 当项目中FPGA选型已确定,开始设计电路原理图时,硬件工程师面临的首要问题 ...

  2. VC++创建WIN7电源管理方案

    最近由于项目的需要一直在搞WIN7的电源管理方案,本来想在网上查点类似的代码,可是搜了许久,一点有用的知识也没有,索性自己来研究了,MSDN上面说的到挺详细,不过没有示例,一些参数总是搞不明白,而且W ...

  3. 关闭linux服务器电源,linux关闭ACPI电源管理模块

    一.运行环境 # cat /etc/redhat-release CentOS release 6.2 (Final) # uname -a Linux web-server- 2.6.-.el6.x ...

  4. 7.嵌入式控制器EC实战 ACPI规范中的电源管理通道PMC(Power Management Channel)

    文章目录 前言 一.电源管理通道PMC概述 二.通过电源管理通道PMC完成EC和BIOS或操作系统通信 操作系统或BIOS通过PMC通道与EC通信 如果PMSTS的BIT2为1时,代表发送过来的信息是 ...

  5. linux查看电源模块,基于LINUX的电源管理cpuidle模块研究及应用

    赵婉芳 摘 要:本文主要针对LINUX嵌入式系统的电源管理部分,分析了目前存在的主要的电源管理技术,重点研究了LINUX系统中当系统处于空闲状态时负责电源管理的CPUIDLE模块结构特点以及接口核心编 ...

  6. Windows 2000的电源管理

    Windows 2000(包括Microsoft Windows 2000 Professional.Microsoft Windows 2000 Server.Microsoft Windows 2 ...

  7. 组策略之(5)-------电源管理设置

    现在都是倡导绿色节能,我们做IT的也不能落后啊,哈哈. 好多职员不在座位上,或者休息时,甚至下班后都不会关闭显示器,这样是很浪费的哦,所以我们要在电源管理进行设置,今天就通过组策略进行电源管理设置. ...

  8. Linux电源管理(10)_autosleep

    Linux电源管理(10)_autosleep 作者:wowo 发布于:2014-9-18 23:42 分类:电源管理子系统 1. 前言 Autosleep也是从Android wakelocks补丁 ...

  9. 电源管理与驱动设计笔记

    关注同名微信公众号"混沌无形",有趣好文! 1.电源管理的功能:具备电压过高保护.电流过大保护.电量监测.过放保护等功能---->自主充电 2.一款清洁机器人的运动控制系统方 ...

  10. Android5.1--PowerManagerService电源管理

    系统电源管理简介 Android电源管理概述 电源管理(PowerManager)在任何设备中都是最重要的组成部分之一,良好的电源管理方案可以达到节能.延长电池寿命.降低辐射.降温等目的. 移动设备的 ...

最新文章

  1. 关于IOS给我的启发
  2. 关于 DOM 操作的几个类型
  3. 买台式电脑还是笔记本好?
  4. Knative Serverless 之道:如何 0 运维、低成本实现应用托管?
  5. 【DP】【递归】分离与合体
  6. 21-特征匹配方法(Brute-Force蛮力匹配)
  7. 第一百二十八期:推荐几个IDEA插件,Java开发者撸码利器,你get到了吗
  8. mysql count 优化索引_如何通过使用索引在InnoDB上优化COUNT(*)性能
  9. pycharm 运行celery_Celery全面学习笔记
  10. matlab 文件之间相互调用实例
  11. bug10-graphviz.backend.ExecutableNotFound: failed to execute [‘dot‘, ‘-Tpdf‘, ‘-O‘, ‘Source.gv‘]
  12. ambari 搭建hadoop大数据平台系列4-配置ambari-server
  13. 百度Site App的uaredirect.js实现手机访问,自动跳转网站手机版
  14. 刚入职的程序员小白你该如何提升自己?(新手看)
  15. 三维计算机动画的特征是真实性,3D动画电影的应用特点及制作管理内容
  16. R-FCN论文解读及难点理解
  17. pandas 的基本使用
  18. java iqq_iQQ
  19. 2.8 高收藏率小红书笔记怎么写?试一试这7类方法吧【玩赚小红书】
  20. 第十一届蓝桥杯 C/C++ 大学A组/研究生组 E题 咫尺天涯dp做法

热门文章

  1. 【三维目标检测可视化】三维点云目标检测与图像融合可视化
  2. 微波雷达感应模块技术应用,多普勒雷达,人体存在感应模组
  3. 给大家推荐几个查找芯片手册的网址,超级全建议收藏
  4. VCIP2020:基于深度学习的HEVC帧内预测的非线性变换
  5. 国际大牌在中国的故事
  6. 基于一维卷积神经网络模型的AI量化智能选股策略
  7. TensorFlow-gpu安装和测试(TensorFlow-gpu1.14+Cuda10)
  8. 【AD封装】2.4G PCB天线(量产用)
  9. snipaste设置开机启动后失效失败问题解決方法
  10. 【2022最新Java面试宝典】—— TCP,UDP,Socket,Http网络编程面试题(47道含答案)