1. ACPI系统描述表概述
ACPI(Advanced Configuration and Power Interface)是现代计算机系统中管理硬件配置和电源状态的核心规范。作为操作系统与硬件固件之间的桥梁,ACPI通过一系列系统描述表(System Description Tables)向操作系统提供硬件平台的详细信息。这些表格在系统启动时由固件加载到内存中,操作系统通过解析这些表格来获取硬件拓扑、电源管理功能和中断路由等关键信息。
在众多ACPI系统描述表中,MADT(Multiple APIC Description Table)扮演着至关重要的角色。它负责描述系统中的高级可编程中断控制器(APIC)架构和全局系统中断(Global System Interrupts,GSI)的分配情况。理解MADT的结构和内容对于操作系统开发者、驱动工程师和系统固件开发者来说都是必备知识。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. MADT表结构与解析
2.1 MADT表头格式
MADT表以标准的ACPI表头开始,后跟特定于MADT的内容。表头部分包含以下关键字段:
code复制struct acpi_table_madt {
struct acpi_table_header header; // 标准ACPI表头
u32 local_apic_address; // 本地APIC的物理地址
u32 flags; // 标志位
};
表头中的local_apic_address字段指定了本地APIC寄存器组的基地址,操作系统需要访问这个地址来配置和处理本地APIC。flags字段包含一些全局配置信息,例如是否支持PC-AT兼容的双8259A PIC控制器。
2.2 MADT条目类型
MADT表的核心部分是由一系列变长条目组成的数组,每个条目描述系统中的一个APIC相关组件。常见的条目类型包括:
| 类型代码 | 条目名称 | 描述 |
|---|
