Таблица страниц: ошибка страницы
У меня есть несколько вопросов, касающихся таблиц страниц, особенно когда происходит сбой страницы.
Я понимаю, что сбой страницы происходит, когда ЦП требует страницу, но ее нет в ОЗУ, и ее нужно извлечь из пространства подкачки. Таблица страниц использует биты высшего порядка виртуального адреса для индексации, а также содержит недопустимый бит, который указывает, находится ли страница в памяти.
Вот что я не понимаю. Содержит ли таблица страниц физические адреса для тех страниц, для которых также установлен недопустимый бит? Я имею в виду, они не присутствуют в физической памяти. Итак, я понимаю, что на тех страницах, для которых установлен недопустимый бит, соответствующие физические адреса должны быть пустыми. Я что-то пропустил?
Другой вопрос, почему мы не можем иметь записи только для тех страниц, которые присутствуют в памяти. Таким образом, размер таблицы страниц может быть уменьшен.
Еще один вопрос заключается в том, что когда операционная система заменяет страницу после сбоя страницы в ОЗУ, преобразуется ли физический адрес фрейма, которому назначена страница, в виртуальный адрес для обновления таблицы страниц?
Может кто-нибудь прояснить эти сомнения? Спасибо!
1 ответ
Я понимаю, что сбой страницы происходит, когда ЦП требует страницу, но ее нет в ОЗУ, и ее нужно извлечь из пространства подкачки.
Инициирование сбоя страницы обычно происходит в один или два этапа. Ошибка вызвана состоянием таблицы страниц.
Таблица страниц использует биты высшего порядка виртуального адреса для индексации, а также содержит недопустимый бит, который указывает, находится ли страница в памяти.
Расположение битов и их использование полностью зависят от системы. Есть два уровня инвалидности. (1) Страница не может быть сопоставлена с логическим адресным пространством; и (2) страница может отображаться, но не имеет соответствующего сопоставления с физическим фреймом страницы (выгружается). Эти две проверки могут быть указаны в таблице страниц или в сочетании с данными отображения, поддерживаемыми операционной системой.
Содержит ли таблица страниц физические адреса для тех страниц, для которых также установлен недопустимый бит?
Если запись таблицы страниц указывает, что для логической страницы существует допустимое сопоставление с физическим фреймом страницы, запись таблицы страниц содержит это сопоставление.
Я имею в виду, они не присутствуют в физической памяти. Итак, я понимаю, что на тех страницах, для которых установлен недопустимый бит, соответствующие физические адреса должны быть пустыми.
Это обычно не так. Если запись таблицы страниц через свои контрольные биты указывает, что нет сопоставления с физическим фреймом страницы, процессор обычно игнорирует фактические биты отображения. Это позволяет операционной системе использовать эти биты, чтобы определить, где страница хранится на диске.
Другой вопрос, почему мы не можем иметь записи только для тех страниц, которые присутствуют в памяти. Таким образом, размер таблицы страниц может быть уменьшен.
Вы описываете таблицу перевернутых страниц. Некоторые системы реализуют таблицы страниц таким образом. Однако большинство систем этого не делают, и они накладывают дополнительные издержки на операционную систему.
Еще один вопрос заключается в том, что когда операционная система заменяет страницу после сбоя страницы в ОЗУ, преобразуется ли физический адрес фрейма, которому назначена страница, в виртуальный адрес для обновления таблицы страниц?
Обработчик ошибок страницы должен (1) выделить физический фрейм страницы; (2) загрузить данные из вторичной истории в рамку страницы; (3) обновить таблицу страниц, чтобы указать соответствие логической страницы и физической рамки страницы; и (4) перезапустите инструкцию, которая вызвала ошибку.