- E820
-
E820 — Функция прерывания 15H BIOS персонального компьютера, использующаяся для получения информации о распределении адресного пространства, имеющейся оперативной памяти и зарезервированных адресах. Относится к сервисам ACPI. Используется практически всеми современными операционными системами для получения информации о памяти и распределении адресов, поскольку возвращает наиболее полную информацию, в отличиие от устаревших сервисных функций.
Использование
Для получения информации о распределении адресного пространства нужно загрузить в регистр EBX значение 0, в EAX — E820H (номер функции), в EDX — 534d4150h (строка «SMAP»), в ECX — размер буфера (как минимум 20 байт), в ES:DI следует загрузить указатель на буфер и вызвать прерывание 15h. В буфер будет записана одна строка таблицы распределения адресов, для получения следующей строки нужно вызывать функцию повторно. При каждом следующем вызове функции EBX должен содержать значение возвращенное предыдущим вызовом. Повторять до тех пор, пока в регистре EBX не будет возвращен нуль, что означает конец таблицы. При успешном завершении функции флаг переноса будет сброшен, а регистр EAX будет содержать строку «SMAP».
Формат записи таблицы распределения адресов
Смещение (байт) Размер (байт) Значение 0 4 Младшие 32 бита начального адреса 4 4 Старшие 32 бита начального адреса 8 4 Младшие 32 бита размера области 12 4 Старшие 32 бита размера области 16 4 Тип области адресного пространства Поле типа области будет содержать единицу, если в области адресов находится оперативная память, и двойку, если область зарезервирована (для устройств отображенных на память, резерв BIOS и т.д.), значения 3 и 4 - память, используемая ACPI. Остальные значения типа являются зарезервированными.
Пример вывода таблицы распределения адресов при загрузке ОС Linux
BIOS-provided physical RAM map:
- BIOS-e820: 0000000000000000 - 000000000009dc00 (usable)
- BIOS-e820: 000000000009dc00 - 00000000000a0000 (reserved)
- BIOS-e820: 00000000000ce000 - 0000000000100000 (reserved)
- BIOS-e820: 0000000000100000 - 0000000037e70000 (usable)
- BIOS-e820: 0000000037e70000 - 0000000037e80000 (ACPI data)
- BIOS-e820: 0000000037e80000 - 0000000037f00000 (ACPI NVS)
- BIOS-e820: 0000000037f00000 - 0000000040000000 (reserved)
- BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
- BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
- BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
- BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 5 апреля 2012.На эту статью не ссылаются другие статьи Википедии. Пожалуйста, воспользуйтесь подсказкой и установите ссылки в соответствии с принятыми рекомендациями.Категория:- BIOS
- BIOS-e820: 0000000000000000 - 000000000009dc00 (usable)
Wikimedia Foundation. 2010.