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

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

1. Аппаратное прерывание передает управление ядру, сохраняя в стеке значение счетчика команд.

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

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

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

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

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

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

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

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

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

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

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

3.6.3.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Обработка ошибки отсутствия страницы:

  1. Первая страница
  2. ИНФОРМАЦИЯ: ОБРАБОТКА ПОСЛЕДОВАТЕЛЬНАЯ (
  3. ИНФОРМАЦИЯ: ОБРАБОТКА ПАРАЛЛЕЛЬНАЯ
  4. Статистическая обработка.
  5. ТЕОРИЯ УРОВНЕЙ ОБРАБОТКИ
  6. Обработка материалов
  7. Обработка результатов
  8. ГЛАВА ДЕВЯТАЯ ОБРАБОТКА ИНФОРМАЦИИ В УМЕ
  9. Алгоритм обработки результатов.
  10. ДАННОЕ: ОБРАБОТКА СТАТИСТИЧЕСКАЯ
  11. Обработка материала
  12. Пример обработки протокола.
  13. Обработка ответов
  14. ОБРАБОТКА ВТОРИЧНАЯ
  15. 3.3.4. Методы обработки и анализа данных
  16. 9. Усвоение и обработка информации
  17. 9. Усвоение и обработка информации
  18. Психологическая обработка с использованием условных рефлексов и ассоциаций
  19. Работа над ошибками