Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен Павлов.docx
Скачиваний:
63
Добавлен:
17.08.2022
Размер:
786.12 Кб
Скачать

Политика очистки страниц

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

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

Обработка ошибки отсутствия страницы

Описание всего, что происходит при возникновении ошибки отсутствия страницы. Складывается следующая последовательность событий:

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

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

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

4. Когда известен виртуальный адрес, вызвавший ошибку, система проводит проверку адреса на приемлемость и доступа к этому адресу — на согласованность с системой защиты. При отрицательном результате проверки процессу посылается сигнал или же он уничтожается.

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

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

7. Когда дисковое прерывание показывает, что страница получена, таблицы страниц обновляются, чтобы отобразить ее позицию, и блок получает пометку нормального состояния.

8. Команда, на которой произошла ошибка, возвращается к тому состоянию, в котором она находилась с самого начала, и счетчик команд переключается, чтобы указывать на эту команду.

9. Процесс, в котором произошла ошибка, включается в план, и операционная система возвращает управление стандартной программе на ассемблере, которая ее вызвала.

10. Эта стандартная программа перезагружает регистры и другую информацию о состоянии и, если не произошло ошибки, возвращается в пространство пользователя для продолжения выполнения.