OSDev
http://osdev.su/

Карта памяти возвращаемая int 0x15
http://osdev.su/viewtopic.php?f=6&t=350
Страница 1 из 1

Автор:  KIV [ 20 ноя 2010, 19:55 ]
Заголовок сообщения:  Карта памяти возвращаемая int 0x15

Прерывание int 0x15 имеет функцию 0xE820, которая возвращает карту памяти. У меня возник вопрос: а эта карта ведь где-нибудь хранится? Тогда не лучше было бы не копировать её себе и использовать оригинал? Можно ли универсальным для всех BIOS способом получить адрес карты памяти из памяти BIOS? Или она может генерироваться прямо при вызове int 0x15?

Автор:  Himik [ 20 ноя 2010, 21:28 ]
Заголовок сообщения:  Re: Карта памяти возвращаемая int 0x15

Универсальным для всех BIOS является только код функции. Внутренний формат карты не стандартизирован.

Автор:  SII [ 22 ноя 2010, 12:05 ]
Заголовок сообщения:  Re: Карта памяти возвращаемая int 0x15

Она даже технически не может быть фиксированной, поскольку объём установленных модулей памяти заранее предсказать нельзя, а на крупных системах нельзя даже гарантировать, что технически адреса ОЗУ будут непрерывными (на обычных-то ПК технически они непрерывны, и дыры возникают исключительно из-за того, что их добавляют чипсеты).

Автор:  ZarathustrA [ 22 ноя 2010, 22:18 ]
Заголовок сообщения:  Re: Карта памяти возвращаемая int 0x15

Позвольте заметить, что 1) карта памяти может формироваться и размещаться в ОЗУ BIOS-ом системы во время POST.
2) Сама организация карты памяти предполагает прерывистость адресного пространства, так как она описывает память как набор диапазонов определенных типов.
3) Поскольку в ней используется 64-битная адресация, ее можно описывать ну очень большие объемы памяти.

А по существу, месторасположение карты памяти в ОЗУ не стандартизировано, более того она может храниться не в ОЗУ, а в CMOS и прочих модулях памяти. Поэтому, если вы хотите сделать ОС хотя бы минимально переносимой, то используйте прерывания, если нет - можете попытаться найти карту памяти в ОЗУ и использовать ее напрямую.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/