Страничная адресация
В защищенном режиме процессоров Intel возможна не только сегментная
адресация. Существует еще одна возможность - страничная адресация. Эти два
механизма не связаны друг с другом - т.е. одновременно могут
использоваться оба способа.
Суть страничной адресации состоит в том, что формируемый процессором (с
использованием сегментной адресации) линейный адрес,
"привязывается" к другому физическому адресу.
Эти пертурбации с физическим адресом осуществляются с помощью
каталога страниц. Фактически, получив линейный адрес, процессор
узнает действительный физический адрес из каталога страниц.
Поскольку каталог страниц может быть своим для каждой задачи, то в
многозадачной системе все задачи может иметь абсолютно одинаковое адресное
пространство (причем намного превышающее физическое), но они будут
"привязаны" к разным физическим адресам. Фактически, все популярные
операционные системы для платформы Intel используют именно страничную
адресацию, и каждый процесс в них имеет адресное пространство в 4
гигабайта - 00000000-FFFFFFFF. Очевидно что страничная адресация очень
удобна для разработчиков пользовательских приложений - для программы они
получают 4 гигабайта памяти и практически могут забыть про сегменты.
Страничная адресация включается установкой тридцать первого бита (бит
PG) управляющего регистра CR0. Попытка установить этот бит в реальном
режиме приводит к общей ошибке защиты. Перед установкой бита необходимо
заполнить каталог страниц, и поместить его адрес в регистр CR3 (он же
PDBR).
Страничная адресация имеет недостаток - она замедляет обращения к
памяти, поскольку для нахождения физического адреса процессор вынужден
запросить таблицу страниц. Процессор кэширует наиболее часто используемые
страницы, чтобы их нахождение занимало как можно меньше времени