APM和ACPI比较
近期对linux的电源管理产生了兴趣,索性来学习一下电源管理的东西。这不,遇到的一个问题就是这个:APM、ACPI两种电源管理方案有何异同?下面的东西全部来自于网络博文,当然有做一些整理。
一、APM的不足和ACPI产生
APM全称是AdvancedPowerManagement(高级电源管理),他是一种基于BIOS的系统电源管理方案,它提供CPU和外设电源管理并通过设备工作超时设定来决定何时将设备切换到低功耗模式。目前最新的版本是1.2,相对于1.0和1.1版来说,最新版的APM方案由操作系统来定义管理实践,实际的执行动作还是由BIOS来做。
APM电源状态包括:就绪,待机(standby),挂起(suspend),休眠(sleep),关闭。
但是由于这种电源管理方式主要是由bios实现,所以有些缺陷,比如对BIOS的过度依赖,新老BIOS之间的不兼容性,以及无法判断电源管理命令是由用户发起的还是由BIOS发起的,对某些新硬件如USB和1394的不支持性。主要不足包括:
1.由于基于APM的BIOS都有它自己的电源管理方案,使得计算机与计算机之间缺乏一致性,每个BIOS开发者必须精心维护自己的APMBIOS代码和功能。
2.系统进入挂起的原因无法知晓。用户是否按了进入睡眠按钮,还是BIOS认为系统已进入了空闲状态,或者电池电压过低,这些信息APM都无法知道,但是Windows必须要知道挂起的原因,即使系统没有进入空闲状态。
3.BIOS无法知道用户在干什么,只有通过监视中断和I/O端口来猜测用户的活动。有时,BIOS会使系统处于完全混乱的状态