为什么系统在 UEFI 模式下报告的内存比在传统 BIOS 中少?

为什么系统在 UEFI 模式下报告的内存比在传统 BIOS 中少?

我注意到,在一台机器上,如果固件配置为 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 代码,因此所有额外的保留内存都会被释放。

相关内容