ACPI(1)

1.ACPI全称

        ACPI全称Advanced Configuration and Power Interface,即“高级配置和电源接口”。主要在X86平台(ARM等架构也可)上实现电源管理相关的功能。

2.ACPI提出背景

        ACPI是在20世纪90年代中期,由Intel,Microsoft,东芝以及Phoenix合作开发的一种标准。

        ACPI的提出是为了规范电源管理设备的发现与配置。在ACPI提出之前,电源管理主要通过操作系统调用BIOS接口来实现。操作系统下的设备的发现驱动的加载以及设备和驱动的匹配,也都是由BIOS来完成。设备的位置在BIOS中直接编码,因为平台本身无法进行设备的枚举。

        但是,以上的解决方案存在很多的局限。

        1. 操作系统中运行的应用可能会受BIOS的影响。因为BIOS中会进行电源管理的相关设定和配置,这些配置会导致操作系统在某些时刻意外休眠。     

        2. 基于BIOS的电源管理接口实现无法跨平台,不具备通用性。这也就意味着,需要对每一个平台都进行相关配置。

        3. 在BIOS中提前进行的设定,可能会在插入不同设备的时候,引起设备之间的冲突,例如:设备无法被发现,设备崩溃或者设备异常等等情况。

        ACPI标准的提出,正是为了解决上述局限。

3.ACPI是什么

        ACPI是一个与架构无关的,用来实现电源管理与配置的框架。这个框架是存在于操作系统中的一个子系统。这个子系统建立了一个硬件寄存器集合(Hardware Register Set),来定义电源状态(睡眠、休眠、唤醒等)。硬件寄存器集合(Hardware Register Set)在专用硬件和通用硬件上均可进行相关操作。

image-20231213214803428

        ACPI子系统是位于操作系统 和 系统固件(BIOS)中间的一个接口层(箭头表示数据流向)

  • ACPI架构无关指的是:ACPI可以在X86以外的架构运行,如ARM服务器多用ACPI进行管理。

4.ACPI结构

        ACPI定义了两种数据结构类型(Data TableDefinition Block)。这两种类型作为BIOS和OS之间的主要通信机制,可以在BIOS和OS之间共享。

        Data Table存储了原始数据(Raw data),这些原始数据由设备驱动程序使用。Definition Block由可以被解释器执行的字节码(Byte Code)构成。

        根据ACPI标准定义的实现流:

        ACPI将会提供一个AML解释器,该AML解释器由操作系统主导。AML解释器将会提取Definition Block中的Byte Code,并将其作为可枚举的对象。这些可枚举对象的集合被称为ACPI namespace

        OS根据系统硬件来评估ACPI namespace中的对象,然后实现相应的操作。ACPI namespace中的对象,可以直接给其赋值,也可以强制交给AML解释器来计算与解释。

image-20231213215927320

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值