Для реализации всего виртуального пространства требуемая память для таблиц составит 4 МБ для каждой задачи, что физически невозможно.
Однако, практически ни одна задача не использут все пространство 4 ГБ, поэтому для тех адресов, которые программа никогда не сформирует, нет необходимости в элементах таблицы страниц.
PDE0 — 0000.0000 H — 003F.FFFF H — 4 МБ
PDE1 — 0040.0000 H — 007F.FFFF H — 4МБ (86 б)
|
|
|
|
|
|
|
|
|
|
|
Если известно, например, что прграмма использует адресное пространство 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