OSDev http://osdev.su/ |
|
Страничная адресация на практике http://osdev.su/viewtopic.php?f=6&t=3737 |
Страница 4 из 4 |
Автор: | SII [ 04 июн 2019, 19:41 ] |
Заголовок сообщения: | Re: Страничная адресация на практике |
FreeProger писал(а): Кто может подсказать? Я всегда считал что первые 1024Кб Отводятся под вектора прерываний реального режима, разве они не должны быть отображены в карте памяти получаемой от BIOS функцией E820 прерывание 15h Не Кб, а байта Ну а по существу вопроса -- если правильно помню, занятость этого килобайта функциями BIOS не отражается по той причине, что эта память занята под векторы именно реального режима и занята всегда, т.е. программист и так знает, может он её использовать или нет (если пишет код защищённого режима -- может, если работает в реальном -- может только подменять векторы на свои собственные для тех прерываний, которые сам будет обрабатывать). Т.е. функции BIOSа сообщают лишь о тех используемых областях, использование которых не является абсолютно стандартным. ADD. Вроде бы вот здесь: https://osdev.fandom.com/ru/wiki/%D0%9E%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE%D0%B1%D1%8A%D1%91%D0%BC%D0%B0_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8 было всё описано верно, хоть и давно. Возможно, не отражены последние веяния, связанные с UEFI и т.п. |
Автор: | FreeProger [ 04 июн 2019, 21:03 ] |
Заголовок сообщения: | Re: Страничная адресация на практике |
Спасибо phantom-84, все ещё больше прояснилось. |
Автор: | FreeProger [ 04 июн 2019, 21:08 ] |
Заголовок сообщения: | Re: Страничная адресация на практике |
Цитата: Не Кб, а байта Ну а по существу вопроса -- если правильно помню, занятость этого килобайта функциями BIOS не отражается по той причине, что эта память занята под векторы именно реального режима и занята всегда, т.е. программист и так знает, может он её использовать или нет (если пишет код защищённого режима -- может, если работает в реальном -- может только подменять векторы на свои собственные для тех прерываний, которые сам будет обрабатывать). Т.е. функции BIOSа сообщают лишь о тех используемых областях, использование которых не является абсолютно стандартным. ADD. Вроде бы вот здесь: https://osdev.fandom.com/ru/wiki/%D0%9E ... 1%82%D0%B8 было всё описано верно, хоть и давно. Возможно, не отражены последние веяния, связанные с UEFI и т.п. Спасибо. В принцыпе если по логике вы совершенно правы. Не знаю почему я сам к такому выводу не пришёл. |
Автор: | phantom-84 [ 04 июн 2019, 22:29 ] |
Заголовок сообщения: | Re: Страничная адресация на практике |
IVT, BDA не исключаются из карты памяти. Можете просто не использовать этот участок. Я обычно использую концовку этой страницы, не трогая начало. В остальном можете использовать любые участки типа 1, только учтите, что вам никто не гарантирует их выравнивание по границам страниц (нужно самому выравнивать). Лично я использую базовую память для спец. нужд и не помещаю ее в общий пул. Также нужно исключать участки выше 4 гиг, если вы не используете "64-разрядную пагинацию". Код: cmp [di+ARDESC.Type],AR_MEMORY
jne .loop mov edx,[di+ARDESC.BaseAddrLow] cmp edx,100000h jb .loop cmp [di+ARDESC.BaseAddrHigh],eax jne .loop |
Страница 4 из 4 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |