Если в таблице страниц имеется ссылка на страницу, отсутствующую в памяти, первое же обращение по такой ссылке приведет к прерыванию и вызову ОС (ситуации page fault – отсутствие страницы в памяти)
ОС по таблицам определяет, что именно произошло:
Если имеет место неверная ссылка (на страницу, отсутствующую в логической памяти), то работа программы прекращается.
Если же имеет место обычное отсутствие страницы в памяти, то ОС должна разместить его в основной памяти. Для этого ОС выполняет следующий алгоритм:
· Найти незанятый фрейм в основной памяти;.
· Считать содержимое страницы в данный фрейм;
· Изменить элемент таблицы страниц: validation-бит установить равным 1;
· Продолжить работу программы. Напомним, что программа после прерывания продолжается с той жекоманды, которая была прервана из-за отсутствия страницы. Поэтому теперь программа продолжит нормально выполняться, и обращение к странице произойдет успешно.
Этапы обработки ситуации отсутствия страницы в памяти показаны на рис. 18.4.
Рис. 18.4. Обработка ситуации отсутствия страницы в памяти.
Этап 1 – выполнение команды load M, которая прерывается по отсутствию страницы в памяти; 2 – прерывание и вызов ОС; 3 – обращение к странице, находящейся в файле откачки на диске; 4 – считывание страницы в память на свободный фрейм; 5 – изменение элемента таблицы страниц; 6 – повторное (успешное) выполнение команды.
На этапе 4 (рис. 18.4) возможна ситуация отсутствия свободного фреймав основной памяти. При этом ОС должна выполнить замещение страницы (page replacement)– найти страницу, загруженную в память, но реально не используемую, и откачать ее.
Для оптимальной реализации стратегии замещения страниц требуется алгоритм, приводящий к наименьшему возможному числу отказов страниц. Возможные решения мы рассмотрим немного позже в данной лекции.
Дадим общую оценку производительности обработки страниц по требованию.
Если p = 0, то имеет место отсутствие отказов страниц.
Если p = 1, то каждое обращение к странице приводит к отказу.
Оценим теперь эффективное время доступа (Effective Access Time - EAT):
EAT = (1 – p) * время доступа к памяти
+ p * (время реакции на отказ
+ [ время откачки страницы ]
+ время подкачки страницы
+ время рестарта)
Дадим необходимые пояснения к данной формуле. Оценка времени складывается из двух слагаемых. Первое слагаемое соответствует ситуации, когда отказ страницы не имеет места, и оценивает среднее время доступа к странице в этом случае. Второе слагаемое вычисляет оценку времени в случае отказа страницы. В нем первая компонента – суммарное время реакции апппратуры и ОС на отказ страницы, вторая (необязательная) – время откачки страницы (если она требуется для замещения страниц), третья – время подкачки страницы, четвертая – время рестарта программы. Если коэффициент pрассматривать как вероятностьотказа страницы, то величина EATбудет математическим ожиданиемобщего времени доступа к странице.