Страничная организация памяти, таблица страниц, каталог страниц


Линейный адрес представляет собой 32-битовый адрес в однородном, несегментированном адресном пространстве. Это адресное пространство может являться большим физическим адресным пространством (т.е. адресным пространством, состоящим из 4 гигабайт оперативной памяти), либо может использоваться средство подкачки страниц, моделирующее это адресное пространство при помощи небольшой области оперативной памяти и некоторого количесства дисковой памяти. При использовании подкачки страниц линейный адрес транслируется в соответствующий физический адрес, либо генерируется исключение. Это исключение дает операционной системе возможность прочитать страницу с диска (возможно, вытеснив на диск другую страницу), а затем перезапустить команду, вызвавшую данное исключение. Механизм подкачки отличается от механизма сегментации тем, что в данном случае используются небольшие, имеющие фиксированный размер страницы. В отличие от сегментов, которые обычно имеют размер, равный размеру содержащихся в них структур данных, страницы процессора i486 всегда имеют размер 4К. Информация, обеспечивающая отображение линейных адресов в физические адреса и отвечающая за генерацию исключений в случае несоответствий, хранится в структурах данных оперативной памяти, которые называются таблицами страниц. Механизм подкачки страниц рассматривает 32-разрядный линейный адрес как состоящий из трех частей, а именно двух 10-разрядных индексов страничных таблиц и 12-заррядное смещение в таблице, адресуемой страничными таблицами. Эти 12 битов напрямую передаются аппаратному обеспечению, работающему с подкачкой страниц, независимо от того, разрешена ли подкачка в текущий момент, или запрещена. Старшие 20 битов адреса используется для индексации страничных таблиц. Для экономии памяти используются страничные таблицы двух уровней. Страничная таблица верхнего уровня называется страничным каталогом. В нем отображаются старшие 10 битов линейного адреса табличных страниц второго уровня. Во втором уровне страничных таблиц отображаются средние 10 битов линейного адреса, задающего базовый адрес страницы в физической памяти (который называется адресом страничного блока). На базе содержимого таблицы страниц или каталога страниц может генерироваться исключение. Оно дает операционной системе возможность подкачать отсутствующую таблицу страниц с диска. Старшие 10 битов линейного адреса умножаются на масштабный коэффициент четыре (число байтов каждого элемента таблицы страниц) и складывается со значением регистра PDBR для получения физического адреса элемента в каталоге страниц. При доступе к элементу каталога страниц выполняется несколько проверок: исключения могут генерироваться, если страница защищена или отсутствует в памяти. Если особая ситуация не генерировалась, то старшие 20 битов элемента таблицы страниц используются в качестве адреса страничного блока таблицы страниц второго уровня. Средние 10 битов линейного адреса масштабируются коэффициентом четыре (снова это число равно размеру элемента таблицы страниц) и конкатенируются с адресом страничного блока для получения физического адреса элемента в таблице страниц второго уровня. И опять, выполняются проверки доступа, в результате которых возможна генерация исключений. Если же исключений не возникло, то старшие 20 битов элемента таблицы страниц второго уровня конкатенируются с младшими 12 битами линейного адреса, образуя физический адрес операнда (данных) в оперативной памяти. Таблица страниц представляет собой массив, состоящий из 32-разрядных элементов. Таблица страниц сама является страницей и содержит 4096 байтов памяти, или максимум 1Кб 32-разрядных элементов. Все страницы, включая каталоги страниц и таблицы страниц, выровнены по границе 4Кб. Для адресации страницы памяти используется два уровня таблиц. Старший уровень называется каталогом страниц. Он адресует до 1К страничных таблиц второго уровня. Таблица страниц второго уровня адресует до 1К страниц в физической памяти. Физический адрес текущего страничного каталога хранится в регистре CR3, который также называется базовым регистром каталога страниц (PDBR).

Загрузка...