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/