- •IX. Алгоритмы замещения страниц
- •2. Локальные и глобальные алгоритмы замещения страниц
- •3. Алгоритм замещения неиспользовавшейся в последнее время страницы (nru)
- •4. Алгоритм выталкивания первой пришедшей страницы (fifo)
- •8. Алгоритм выталкивания редко используемой страницы (nfu)
- •8.1. Отличительная особенность в реализации алгоритма nfu.
- •7.2. Недостатки алгоритма nfu.
- •9. Алгоритм замещения страниц Рабочий набор
- •10. Алгоритм замещения страниц wsClock
- •11. Распределение памяти
- •11.1. Зависимость частоты страничных прерываний от размеров памяти, предоставленной процессу.
- •11.2. Размер страниц.
- •11.3. Совместно используемые страницы. Отдельные пространства команд и данных.
- •11.4. Очистка страниц.
- •Очистка страниц в ос unix и unix-подобных системах (linux)
- •Очистка страниц в Windows-системах
- •X. Сегментация памяти
- •1. Сегменты, доступ к сегментам, сегментация
- •2. Основные способы адресации
- •2.2. Сегментная адресация (сегментация).
- •2.3. Страничная организация.
- •2.4. Комбинация сегментирования и страничного способа.
- •Использование единого адресного пространства и использование сегментов
- •3.1. Программа, использующая единое адресное пространство:
- •3.2. Использование сегментов.
- •4. Реализация сегментации
- •4.1. Сегментация с использованием страниц в ос multics.
- •Преобразование адреса в системе multics
8. Алгоритм выталкивания редко используемой страницы (nfu)
Программная реализация алгоритма NFU (Not Frequently Used) близка к алгоритму LRU.
8.1. Отличительная особенность в реализации алгоритма nfu.
Реализации LRU требуют специальной аппаратной поддержки, которой большинство современных процессоров не предоставляет, поэтому удобно иметь алгоритм, достаточно близкий к LRU, но не требующий сложной специальной поддержки. Одним из таких алгоритмов является алгоритм NFU, для которого требуются программные счетчики (по одному на каждую страницу), изначально равные нулю. При каждом прерывании по времени (а не после каждой инструкции) операционная система сканирует все страницы в памяти, и у каждой страницы с установленным флагом обращения увеличивает на единицу значение счетчика, а флаг обращения сбрасывает. Таким образом, кандидатом на освобождение оказывается страница с наименьшим значением счетчика как страница, к которой реже всего обращались. И так в таблицу страниц добавляется запись – счетчик обращений к странице: чем меньше значение счетчика, тем реже она использовалась.
7.2. Недостатки алгоритма nfu.
1. Алгоритм NFU ничего не забывает, т. е. страница, к которой было произведено много обращений в некоторый период времени, а затем обращения прекратились, не будет удалена из памяти, потому что ее счетчик содержит большее значение.
2. Недостатком алгоритма NFU является длительность процесса сканирования таблиц страниц.
9. Алгоритм замещения страниц Рабочий набор
Для реализации алгоритма Рабочий набор используются следующие понятия:
замещение страниц по запросу – когда страницы загружаются по требованию, а не заранее, т. е. процесс прерывается и ждет загрузки страницы;
буксование – когда каждую следующую страницу приходится процессу загружать в память;
рабочий набор – это множество страниц, которое процесс использовал до определенного момента времени.
В алгоритме Рабочий набор для того, чтобы не происходило частых прерываний, загружаются заранее часто запрашиваемые страницы, а остальные страницы подгружаются по необходимости; определяется функция w(k,t), где рабочий набор – это множество страниц к, которое процесс использовал до момента времени t.
9.1. Зависимость рабочего набора w(k,t) от количества запрошенных страниц.
На прямолинейном участке рабочий набор выходит в насыщение; значение функции w(k,t) в режиме насыщения может служить для рабочего набора (множества страниц), который необходимо загружать до запуска процесса (до t).
Суть алгоритма заключается в том, чтобы определить рабочий набор, найти и выгрузить страницу, которая не входит в рабочий набор.
9.2. Способы реализации алгоритма замещения страниц Рабочий набор.
1. Использование специального сдвигающегося регистра.
Записывая номер страницы в специальный сдвигающийся регистр при каждом обращении к памяти, удалять дублирующие страницы. Такой способ является достаточно дорогим.
2. Использование множества страниц, к которым обращался процесс за последние t секунд.
В данном случае используются следующие параметры:
текущее виртуальное время (Tv) – время работы процессора, которое реально использовал процесс;
время последнего использования (Told) – текущее время при обращении (R=1 – бит обращения в таблице страниц). Все страницы проверяются на обращение: если – R=1, то текущее время записывается в поле.
Таким образом, возраст страницы (не обновления) – это Tv – Told. Если Tv – Told > t, то страница не входит в рабочий набор, и ее можно выгружать. Таким образом, имеются три варианта:
если R=1, то текущее время запоминается в поле время последнего использования Told;
если R=0 и возраст страницы > t, то страница удаляется (выгружается);
если R=0 и возраст страницы <= t, то эта страница входит в рабочий набор.
