Аппаратная поддержка действительного / недопустимого бита в таблице страниц

Читая о пейджинге по запросу, я заметил, что в нескольких источниках (например, http://www.expertsmind.com/questions/name-the-hardware-to-support-demand-paging-30176232.aspx) упоминается, что нам нужно оборудование. поддержка действительного / недопустимого бита для каждой записи в таблице страниц. Однако я не могу представить себе, как будет выглядеть эта аппаратная поддержка. Насколько я понимаю,

  1. Сама таблица страниц представляет собой программную конструкцию, т. Е. Имеет 4-байтовые / 8-байтовые (в зависимости от схемы / архитектуры адресации и т. Д.) Записи, которые присутствуют в ОЗУ.
  2. Допустимый / недопустимый бит отделен от 4-байтового / 8-байтового, используемого для каждой записи таблицы страниц, поэтому это не похоже на 4-байтовый элемент таблицы страниц, мы используем 31 бит для хранения номера кадра. и 1 бит для действительного / недопустимого бита.

Итак, подытоживая, мой вопрос: как выглядит аппаратная поддержка действительного / недопустимого бита? Если это может различаться в зависимости от реализации / архитектуры, не могли бы вы поделиться какими-либо конкретными деталями реализации?

1 ответ

  1. Сама таблица страниц представляет собой программную конструкцию, т. Е. Имеет 4-байтовые / 8-байтовые (в зависимости от схемы / архитектуры адресации и т. Д.) Записи, которые присутствуют в ОЗУ.

Это возможно и имеет место для некоторых редких процессоров (которые просто запрашивают перевод у ОС, когда получают «промах буфера просмотра TLB / трансляции»).

Тем не мение; для большинства процессоров таблица страниц - это структура данных, используемая непосредственно самим процессором, а программное обеспечение (ядро) должно предоставлять данные в формате, понятном процессору. В этих случаях формат записи таблицы страниц, требуемый ЦП, обычно имеет несколько битов, используемых для различных целей, включая «действительный / недействительный» (и «доступ / не доступ», а также разрешения на чтение / запись / выполнение и пользователь / разрешение руководителя и ...).

  1. Допустимый / недопустимый бит отделен от 4-байтового / 8-байтового, используемого для каждой записи таблицы страниц, поэтому это не похоже на 4-байтовый элемент таблицы страниц, мы используем 31 бит для хранения номера кадра. и 1 бит для действительного / недопустимого бита.

Запись таблицы страниц (если она действительна) не должна хранить весь физический адрес, потому что адрес страницы должен быть выровнен по началу страницы (и поэтому младшие биты можно считать нулевыми и не сохраняться). Например, если размер страниц составляет 4 КиБ (с 12 битами для «смещения в странице»), а физические адреса - 32 бита; тогда только 20 бит необходимы для физического адреса в записях таблицы страниц (и самые младшие 12 бит физического адреса могут быть «приняты за ноль»), а с 32-битными записями таблицы страниц эти 12 битов можно использовать для других целей ("действительный / недействительный", ...).

Существуют также «менее обычные» форматы, в которых некоторые из старших битов используются для других целей. Например, у вас могут быть записи в таблице 64-битных страниц, где 4 старших бита используются для других целей, затем средние 48 бит используются для физического адреса (без «предполагаемого нуля» младших битов), а затем младшие 12 бит используются используется для других вещей.

Итак, подытоживая, мой вопрос: как выглядит аппаратная поддержка действительного / недопустимого бита?

Потому что он отличается для каждого типа ЦП; Лучшее место для поиска формата записи в таблице страниц - это руководство производителя процессора. Вы можете найти типичный пример (для 32-битной 80x86) на схеме здесь: https://wiki.osdev.org/Paging#Page_Table

Обратите внимание, что Intel называет это флагом «присутствует / нет» (помечено P), и это самый младший бит в записи таблицы страниц.

Другие вопросы по тегам