Почему система сообщает о меньшем объеме памяти в режиме UEFI, чем в устаревшем BIOS?

511
janneb

Я заметил, что на машине, если микропрограмма настроена в режиме UEFI вместо Legacy BIOS, операционная система сообщает об чуть меньшем общем объеме памяти (это в Linux, но это не должно иметь значения?). Разница очень маленькая, около 3,5 МБ, но мне интересно, куда уходит эта память?

Насколько я понимаю, режим совместимости с Legacy BIOS на самом деле не "настоящий" BIOS, а скорее слой совместимости, который загружается микропрограммой, чтобы она выглядела для ОС так, как будто она использует BIOS. Весь код UEFI все еще там. Таким образом, не должно быть никакой разницы, или, если она есть, разница должна быть другой, поскольку код совместимости BIOS использует крошечный объем памяти.

0
Предположение: UEFI может загружать «дополнительное» программное обеспечение. Некоторое пользовательское приложение или какая-то конкретная вещь поставщика. Или, может быть, это просто графические драйверы для запуска UEFI? Ricardo S. 5 лет назад 1
Возможно, здесь происходят две вещи. Помимо прокладки BIOS, занимающей некоторую память, может существовать прокладка UEFI, которая предлагает безопасные загрузочные сервисы (в том числе) операционной системе для обеспечения надежных средств платформы выполнения. Возможно, что эта среда имеет размер 4 МБ, но среда BIOS имеет размер всего 512 КБ, что объясняет разницу. Не уверен, поэтому только комментарий ... Mokubai 5 лет назад 2

1 ответ на вопрос

3
Austin Hemmelgarn

В конечном итоге большая разница заключается в том, что UEFI почти всегда требуется больше зарезервированной памяти, потому что:

  • У него больше интерфейсов, чем у устаревшего BIOS. Примеры включают гораздо более сложный интерфейс RTC, интерфейс переменных EFI и интерфейс загрузчика капсул EFI.
  • Обычно это намного больше кода, чем в устаревшем BIOS, в основном для поддержки дополнительных ABI.
  • Он работает в защищенном или длинном режиме (вместо реального режима, такого как устаревший BIOS), который может получить доступ ко всей системной памяти, что, в свою очередь, делает разработчиков намного ленивее об эффективности памяти.

Большинство хорошо написанных интерфейсов CSM (унаследованная функциональность BIOS в большинстве реализаций UEFI) фактически выгружает большую часть или весь код UEFI, который не требуется при загрузке в устаревшем режиме, поэтому вся эта дополнительная зарезервированная память освобождается.

Похожие вопросы