Каждые несколько секунд свопер проверяет, есть ли на диске
готовые процессы, которые следует загрузить в память. Каждому
процессу на диске присваивается значение, зависящее от времени его
пребывания в выгруженном состоянии, размера, значения,
использовавшегося при обращении к системному вызову nice (если
такое обращение было), и от того, как долго этот процесс
бездействовал, прежде чем был выгружен на диск. Эта функция
обычно взвешивается так, чтобы загружать в память процесс, дольше
всех находящийся в выгруженном состоянии, если только он не
крайне большой. Теория утверждает, что загружать большие
процессы дорого, поэтому их не следует перемещать с диска в память
и обратно слишком часто. Загрузка процесса производится только при
условии наличия достаточного количества свободных страниц, чтобы,
когда случится неизбежное страничное прерывание, для него нашлись
свободные страничные блоки. Свопер загружает в память только
структуру пользователя и таблицы страниц. Страницы с текстом,
данными и стеком подгружаются при помощи обычной страничной
подкачки.
У каждого сегмента каждого активного процесса есть место на
диске, где он располагается, когда его страницы удаляются из памяти.
Сегменты данных и стека сохраняются на временном устройстве, но
текст программы подгружается из самого исполняемого двоичного
файла. Для текста программы временная копия не используется.
Страничная подкачка в версии System V во многом схожа с
применяемой в системе 4BSD, но тем не менее между этими версиями
операционной системы есть интересные различия. Во-первых, в
System V вместо алгоритма часов с двумя стрелками используется
оригинальный алгоритм часов с одной стрелкой. Более того, вместо
того чтобы помещать страницу в список свободных страниц на
втором проходе, страница помещается туда только в случае, если она
не использовалась в течение нескольких последовательных проходов.
Хотя при таком решении страницы не освобождаются так быстро, как
это делается алгоритмом в 4BSD, оно значительно увеличивает
вероятность того, что освобожденная страница не потребуется тут же
снова. Во-вторых, вместо единственной переменной lotsfree в System
V используются две переменные: min и max. Когда количество
свободных страниц опускается ниже min, страничный демон начинает
освобождать страницы. Демон продолжает работать до тех пор, пока
Пример практической реализации
операционной системы: UNIX