Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

4.4.2. Таблицы страниц

Простая реализация отображения виртуальных адресов предполагает, что старшие биты виртуального адреса отвечают за номер виртуальной страницы, а младшие биты — за смещение. Например, в случае 16-разрядной адресации и при размере страниц в 4 Кбайт четырьмя старшими битами будут определять некоторую виртуальную страницу из 16 возможных, а оставшимися младшими битами — смещение в байтах (4096 различных значений) внутри полученной виртуальной страницы. Для различных размеров страниц предусматриваются различные варианты выделения.

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

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

Рассмотрим содержимое записей таблицы страниц. Конструкция конкретной машины определяет точный формат записи, но практически для всех машин вид информации в таблице страниц примерно одинаков. Пример записи в таблице страниц представлен на рис. 4.6. Размер записи обычно равен 32 битам. Поле номера страничного блока является наиболее важным. Выдача именно этого значения и является целью страничного отображения. Бит присутствия-отсутствия идет следующим по значимости. Запись таблицы будет иметь смысл и может использоваться, только когда бит присутствия-отсутствия имеет значение 1. Если он равен 0, то соответствующей виртуальной страницы в памяти в данный момент нет. Обращение к такой записи вызовет системное прерывание, обрабатывающее ошибку отсутствия страницы.

Информацию о доступе содержат биты защиты. В простом случае это поле будет занимать лишь один бит и давать информацию о разрешении чтения-записи при значении 0 и доступности только для чтения при значении 1. Три бита данного поля уже могут отдельно давать информацию о доступе для чтения, записи и исполнения запрашиваемой страницы.

Режим использования страницы отслеживается битами модификации и ссылки. Установка бита модификации происходит при осуществлении записи в страницу. Данный бит будет иметь значение при обновлении страничного блока операционной системой. Если содержащаяся в страничном блоке страница изменена, то она сбрасывается на диск. От страницы, которая не подвергалась модификации, операционная система может отказаться, так как копия ее на диске не теряет актуальности. Такой бит еще называют битом изменения, так как он дает информацию о состоянии страницы.

Рис

Рис. 4.6. Типичная запись таблицы страниц

А при обращении к странице и для чтения, и для записи устанавливается бит ссылки. Операционная система использует информацию из этого бита, когда ей необходимо выбрать страницу для выгрузки, когда для другой страницы возникает ошибка отсутствия. Таким образом, невостребованные страницы, к которым не было обращений, выгружаются операционной системой. Также данный бит используется в некоторых алгоритмах замещения страниц.

Кэшированием страницы управляет оставшийся бит блокирования кэша. Такая возможность используется для страниц, отображаемых на регистры устройств. При переходе операционной системы в состояние ожидания отклика на заданную команду некоторого устройства ввода-вывода важно, чтобы оборудование продолжало получать данные из устройства, а не использовало попавшие в кэш старые данные. Кэширование может быть отключено установкой данного бита. Для тех машины, которые используют отдельное пространство ввода-вывода и не отображают его в память, данный бит не требуется.

Предыдущий раздел Оглавление Следующий раздел