操作系统如何知道物理内存的真实大小?

9
当计算机启动时加载操作系统时,操作系统如何了解硬件信息?是否有一些io指令或者引导程序从bios获取信息?
3个回答

11

主板固件(也称为BIOS、ACPI接口或EFI)允许操作系统找到系统中RAM和ROM的物理映射。

例如,这是Linux启动时的输出:

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 0000000000098c00 (usable)
[    0.000000]  BIOS-e820: 0000000000098c00 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000bfea0000 (usable)
[    0.000000]  BIOS-e820: 00000000bfeae000 - 00000000bfeb0000 type 9
[    0.000000]  BIOS-e820: 00000000bfeb0000 - 00000000bfec0000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000bfec0000 - 00000000bfef0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bfef0000 - 00000000c0000000 (reserved)
[    0.000000]  BIOS-e820: 00000000ffc00000 - 0000000100000000 (reserved)
[    0.000000]  BIOS-e820: 0000000100000000 - 0000000c40000000 (usable)

7

一个从基于BIOS的系统引导的操作系统,使用INT 0x15, AX=0xE820调用查询系统地址映射函数来获取地址映射。

一个基于UEFI的操作系统通常会使用GetMemoryMap()接口来获取物理内存映射。


3
在像台式机或笔记本电脑这样的设备上,内存的数量由BIOSUEFI提供给操作系统。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接