Почему у нас есть бит проверки для каждой записи в таблице страниц?

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

Мой вопрос: если у процесса есть выделенная таблица страниц с записями, которые соответствуют сопоставлениям между его логическими страницами и физическими кадрами в памяти, зачем нам нужно добавлять внешний бит, чтобы указать, ссылается ли кадр на запись в собственная таблица страниц процесса доступна или нет?

Мое собственное объяснение состоит в том, что процесс может по каким-то неизвестным мне причинам иметь записи в своей собственной таблице страниц, которые могут не использоваться или стать недействительными по какой-либо причине.


person nbro    schedule 16.04.2016    source источник


Ответы (1)


Биты в таблице страниц различаются в зависимости от системы. Однако есть три состояния, которые должны соответствовать записи таблицы страниц:

  1. Запись сопоставляется с действительным физическим фреймом страницы (все готово к работе).
  2. Запись действительна, но в настоящее время не сопоставлена ​​физическая страница (доступ вызывает ошибку страницы)
  3. Запись недействительна (т. е. страница не сопоставлена ​​с адресным пространством).

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

Чтобы проиллюстрировать состояние № 3, компоновщики заставляют первую страницу не отображаться при загрузке программы, чтобы перехватывать ссылки на нулевые указатели.

person user3344003    schedule 17.04.2016