Для замещения страниц используется таблица кадров. Для создания списков в этой таблице применяются несколько указателей. Все доступные кадры объединены в один список свободных кадров, в которых могут размещаться страницы. Когда количество доступных страниц становится ниже некоторого порогового значения, ядро в качестве компенсации отдает ряд страниц загруженных процессов.
Алгоритм замещения страниц, использованный в SVR4, представляет собой усовершенствованный часовой алгоритм (см. рис. 8.16), известный под названием часового алгоритма с двумя стрелками (рис. 8.22). Этот алгоритм использует бит обращений из записи таблицы страниц для каждой из страниц памяти, которая может быть выгружена из основной памяти (т.е. не заблокирована). Этот бит устанавливается равным 0 при первоначальной загрузке страницы, и равным 1 — при обращении кней для чтения или записи. Перед ний указатель проходит по страницам, содержащимся в списке пригодных для выгрузки страниц, и устанавливает бит обращений каждойиз них равным 0. Несколько позже по тем же страницам проходит задний указатель и проверяет бит обращений. Если он равен 1, значит, к данной странице было обращение между проверками ее передним и задним указателями, и такая страница игнорируется. Страница же бит обращений которой остался равен 0, переносится в список выгружаемых страниц.
Работа алгоритма определяется двумя параметрами.
• Частота сканирования. Частота, с которой указатели сканируют список страниц (в кадрах в секунду).
• Охват. Интервал между передним и задним указателями.
Эти параметры в процессе загрузки операционной системы получают значения по умолчанию, основанные на количестве физической памяти. Частота сканирования в процессе работы может изменяться, чтобы соответствовать изменяющимся условиям работы системы. Параметр линейно изменяется от минимального значения до максимального, определенных при настройке системы, с изменением количества свободной памяти от максимального до минимального — иными словами, чем меньше свободной памяти в системе, чем чаще выполняется сканирование. Охват определяет интервал между указателями и вместе с частотой сканирования определяет промежуток времени, в течение которого к странице должно произойти обращение, чтобы она оставалась в основной памяти.