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/ |