Алгоритм основан на алгоритме "часы", но использует рабочий набор.
Используются битов R и M, а также время последнего использования.
Работа алгоритма WSClock
Это достаточно реальный алгоритм, который используется на практике.
Алгоритмы замещения бывают:
· локальные
· глобальные
Пример глобального и локального алгоритма
В целом глобальный алгоритм работает лучше.
Можно поровну распределять страничные блоки между процессами.
Такой подход справедлив, но не эффективен, т.к. процессы разные.
Можно распределять страничные блоки между процессами, в зависимости от размеров процесса
Размер процесса динамически меняется, поэтому определить размер динамически сложно.
Частота страничных прерываний - может служить показателем потребности процесса в страницах.
Чем больше частота, тем больше памяти необходимо процессу.
Зависимость частоты страничных прерываний от размеров памяти предоставленной процессу
Если частота стала ниже линии В, то памяти процессу предоставлено слишком много.
Если частота стала выше линии А, то памяти процессу предоставлено слишком мало.
Если всем процессам не хватает памяти (происходит пробуксовка), то производится выгрузка какого то процесса на диск.
Есть два крайних случая:
· Маленькие страницы - улучшает распределение памяти, но увеличивает таблицу и частые переключения уменьшают производительность.
· Большие страницы - наоборот.
Отдельные пространства команд и данных
Пример разделения пространства команд и данных
Совместно используемые страницы
Два процесса могут содержать в таблицах страниц указатели на общие страницы. В случае разделения пространств команд и данных это легко реализуется. Эти данные используются в режиме чтения.
В UNIX, когда создается дочерний процесс, у родительского и дочернего процесса общее пространство данных, и только если один из процессов попытается изменить данные, происходит прерывание и создание копии этой страницы, если записи не происходит, то оба процесса продолжают работать с общей памятью. Это приводит к экономии памяти.