Особенности построения таблиц

           Для реализации всего виртуального пространства требуемая память для таблиц составит 4 МБ для каждой задачи, что физически невозможно.

       Однако, практически ни одна задача не использут все пространство 4 ГБ, поэтому для тех адресов, которые программа никогда не сформирует, нет необходимости в элементах таблицы страниц.

 

           PDE0 — 0000.0000 H — 003F.FFFF H — 4 МБ

           PDE1 — 0040.0000 H — 007F.FFFF H — 4МБ (86 б)


 

 

 


CR3
к таблице страниц 2
каталог страниц
4 К
4 К
4 К
....
ОП
0000.0000 Н
0000.1000 Н
0040.0000 Н
                                              

 

           Если известно, например, что прграмма использует адресное пространство 5 МБ, то для страничного преобразования необходимо определить всего два элемента PDE PDE0 и PDE1 (8 МБ) и, соответственно, страничные таблицы 0 и1. Причем страницу 1 можно определить неполностью. (не распределять пространство 5-8 МБ). Остальные страничные таблицы могут отсутствовать.

       Каталог страниц должен всегда иметь размер 4 кБ. Если элемент каталога определен, то должна присутствовать и соответствующая таблица страниц, которая должна полностью занимать 4 кБ.

       Неопределенные элементы каталога и таблиц страниц должны быть равны нулю (необязательно).

       В отличие от дескрипторов сегментов, которые располагались в дескрипторных таблицах произвольно, дескрипторы таблиц жестко определяются адресом и поэтому должны находиться в строго определенных позициях таблиц.

Так как неиспользуемые страничные таблицы можно не определять, то экономиться ОП.

Образование непрерывных линейных адресов:

 

           Хотя физическое пространство ОП фрагментировано, линейное адресное пространство непрерывно. И для загрузки программы размером 20 страниц в ОП нет необходимости сдвигать в памяти другие задачи. Новая прграмма разбивается на две части и помещается в свободные фрагменты. Линейные же адреса новой программы остаются непрерывными (PTE80-PTE89). Максимальные незаполненные фрагменты ОП определяются размерами страницы (<4 кБ).

       В страничном преобразовании также как и в сегментации возможно альтернативное именование страниц, если два (+) элемента каталога страниц или таблицы страниц определяют один и тот же базовый адрес.


               

 

Особенности разрешения и запрещения страничных преобразований

1) Таблицы каталога и таблицы страниц должны находиться в сегментах, которые именуют их как данные для записи и для считывания;

2) Перед разрешением страничного преобразования необходимо:

· запретить аппаратные преобразования (+NMI);

· разрешить страничное преобразование только из страницы с тождественным преобразованием (равенство линейных и физических адресов);

· очистить очередь команд;

Пример:      pushfd        сохранение флага IF

                   cli                           запрет прерывания

                   mov eax, dir=base   загрузка адреса каталога страниц

                   mov cr3, eax

                   mov eax, cr0           установка бита 31 регистра CR0

                   bfs eax, 31              т. е. разрешение

                   mov cr0, eax           страничного преобразования

                   jmp next                  опустошение очереди команд

       next nop

                   popfd                     восстановление состояня флага IF

 





Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: