ACPI这个单词,用电脑用多了的同学应该或多或少能在系统的报错信息等地方见过它。它表示表示高级配置和电源管理接口(Advanced Configuration and Power Management Interface)。通过ACPI规范,就能查询计算机硬件的一些信息。
在这里给大家推荐一下我的操作系统项目,希望大家能在GitHub上面给我点个小星星哦~GitHub - fslongjin/DragonOS: 一个64位的操作系统。A x86_64 operating system.
事情的起因是这样的,我在写DragonOS的时候,需要初始化I/O APIC控制器,因此我需要知道I/O APIC控制器的控制寄存器的地址,书上说的方法是查主板芯片手册。但是我在想,难不成我还要把那么多的主板芯片组的手册都查一遍?于是我就找到了ACPI规范,能够通过它来获取电脑的状态信息。这些信息里面就包括了I/O APIC控制寄存器的基地址。
大概的流程是这样的:
首先,根据MultiBoot2协议,我们能从BootLoader那里获取到一份RSDP的拷贝。接着,就可以去解析这个RSDP,RSDP内包含了RSDT的物理地址。于是,我们将RSDT的物理地址填写进页表之中,接着去访问RSDT。
看到