我注意到,在一台机器上,如果固件配置为 UEFI 模式而不是 Legacy BIOS,操作系统会报告总内存略少(这是在 Linux 上,但这应该没什么区别吧?)。差异很小,大约 3.5 MB,但我想知道,这些内存去哪儿了?
我的理解是传统 BIOS 兼容模式实际上并不是“真正的” BIOS,而是一个兼容性垫片层,固件会加载该层,让操作系统感觉它正在使用 BIOS。所有 UEFI 代码仍然存在。因此应该没有区别,或者如果有区别,区别应该是相反的,因为 BIOS 兼容性代码只使用了很少的内存。
答案1
最终最大的区别是 UEFI 几乎总是需要更多的保留内存,因为:
- 它比传统 BIOS 具有更多接口。例如,更复杂的 RTC 接口、EFI 变量接口和 EFI 胶囊加载器接口。
- 它通常比传统 BIOS 多很多代码,主要是为了支持额外的 ABI。
- 它以受保护模式或长模式运行(而不是像传统 BIOS 那样的实模式),可以访问系统的所有内存,这反过来使开发人员在内存效率方面变得更加懒惰。
大多数编写良好的 CSM 接口(大多数 UEFI 实现中的传统 BIOS 功能)实际上会卸载在传统模式下启动时不需要的大部分或全部 UEFI 代码,因此所有额外的保留内存都会被释放。