Memory map

Как определить точную карту распределения адресного пространства непосредственно перед загрузкой ОСи?

Аватар пользователя savely

А по-русски? Ибо не понятно (мне лично)... Что по-вашему есть "карту распределения адресного пространства" и что "непосредственно перед загрузкой ОСи" и чем именно мы это будем делать...

А кому счас легко...

Во время POSTа и непосредственно перед загрузкой любой ОСи в памяти формируется некий набор вполне определенных программ и структур данных (таблица прерываний, BDA, сам BIOS и т. д.). Все это хозяйство называется картой распределения адресного пространства.
В принципе, в BIOS есть такая функция (wiki.osdev.org/How_Do_I_Determine_The_Amount_Of_RAM), но она, если не ошибаюсь, работает до 1 МБ и не все подробно описывает. Хотелось бы увидеть все поподробнее: где лежат BIOSы PCI-расширений и т. п.


Вроде бы GRUB может такое, но не пробовал...

Аватар пользователя savely

Как-то невнимательно вы читали Вашу же ссылку.
1. Функция работает по всей памяти.
2. GRUB использует именно эту функцию.

Цитата:
где лежат BIOSы PCI-расширений

Как всегда - где-то от 0xC0000 до 0xF(E?)0000. C0000 - видео, дальше BIOS сам решает кого куда совать. Искать - по сигнатурам. Сопоставлять с конкретным устройством - по VID/DID в PCI-заголовке.

Раскладка основного BIOS есть тут в статьях - сегменты 0xE000, 0xF000, 0x1000 и т.п. К загрузке ОС - ну, 0xF(E?)000-то остается. Мемори-маппед устройства - определять по PCI. Где лежит USB-память - по регистрам USB-контроллера. Еще где-то замапленная SMM-память лежит, по идее...
Таблицы ACPI - "выполняется сканирование блока BIOS Runtime (адреса 000E0000h-000FFFFFh), если ACPI поддерживается, там будет обнаружена структура RSDP (Root System Description Pointer). Структура RSDP содержит указатель на таблицу RSDT (Root System Description Table), содержащую каталог таблиц ACPI. RSDT и другие таблицы ACPI находятся в верхних адресах Extended памяти в блоке служебной информации BIOS. Для того, чтобы при использовании Extended памяти этот блок не был "затерт", размер памяти, о котором рапортует BIOS, уменьшен на размер этого блока".

Нда - задача нетривиальная, и готовое решение надо собирать по крупицам.

А кому счас легко...

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей