Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_лекции.doc
Скачиваний:
2
Добавлен:
15.04.2019
Размер:
370.69 Кб
Скачать

Алгоритмы замещения страниц

Одной из главных задач решаемых под системой управления памятью при страничной организации является определение претендента на выгрузку, т е определение страницы которая должна быть выгружена из памяти на диск в случае нехватки памяти. Используется различные алгоритмы.

  1. алгоритм NRU ( near recently used - неиспользуемая в последнее время страница). Т е в качестве претендента на выгрузку является страница, которая некоторое время не используется. Этот алгоритм использует биты A и D дескриптора страницы. NRU при определении претендента на выгрузку, просматривает дескрипторы всех расположенных в памяти страниц и разделяет их на 4 класса: 0й A=0,D=0 – страница не использовались и не модифицировались; 1й A=0,D=1 – не использовалась, но была модифицирована, 2й А=1,D=0; 3-й А=1, D=1. NRU просматривает в таком порядке и выбирает 1ю встретившуюся страницу из 1го не пустого класса. Этот алгоритм имеет наибольшее распространение.

  2. FIFO Все страницы при загрузке их в память помещаются в очередь. претендентом на выгрузку является страница в вершине очереди(1я в очереди),страница которая дольше всех остальных находится в памяти. Алгоритм легко реализуется. Недостаток в том что не используется…

  3. LRU (Least recently used – давно не использовавшаяся страница). Этот алгоритм дает самые хорошие результаты, но для его реализации необходимо ввести подсчет времени неиспользования страницы или хотя бы строить оценку этого времени. Без специальной аппаратной поддержки это реализовать очень сложно, поэтому LRU используется довольно редко, в основном в тех системах, где такая поддержка реализована. Например, некоторые процессоры введут специальный счетчик выполненных с момента последней загрузки команд. Этот счетчик в таких системах и используется для оценки времени неиспользования страницы. Для этого в дескрипторе страницы имеется специальное поле , в которое каждый раз при обращении к этой странице копируется счетчик выполненных команд. При определении претендента на выгрузку LRU просматривает это поле у всех расположенных в памяти страниц и выбирает страницу с наименьшим значением этого поля.

Учет свободного и занятого пространства памяти.

Память выделяется процессом блоками. в случае страничной организации блок занимает одну или несколько страниц. Для учета свободного и занятого пространства используется обычно 2 метода: метод битовых карт и метод связанных списков.

Рис1

При использовании метода битовых карт ОС создает специальный битовый массив, в котором каждому блоку памяти соответствует 1 бит, номер бита в массиве совпадает с номером блока. Если блок занят, соответствующий бит в битовом массиве устанавливается в 1, а если свободен – сбрасывается в 0.

Рис 2

Битовые карты легко реализовать, они занимают мало места, однако с ними довольно трудно работать

Метод связанных списков. При этом методе для каждой группы подряд идущих занятых или свободных блоков памяти создается 1 элемент списка, содержащий след поля: признак, определяющий свободна группа или занята; адрес начала группы блоков; длина и ссылка на следующий элемент.

Рис 3

Списки занимают гораздо больше места, чем битовые карты, однако работать с ними удобнее. В случае, если необходимо выделить блок образ памяти размером к блоков, ОС просматривает список в поисках свободного участка, у которого размер будет больше или равен к. Если найдется свободный участок с длиной больше к, он пометится как занятый. Если найденный свободный участок будет меньше к, то в список добавлен еще 1 элемент, который будет описывать оставшееся свободное пространство длиной l-k. В некоторых ОС для увеличения скорости работы со списками используют различные модификации этого метода: список делают 2направленным, используют 2 списка – 1 для занятых, другой - для свободных областей памяти. Однако в этом случае каждый раз при измении в одном списке необходимо корректировать и другой. Вместо списка свободно-занято записывается свободное пространство области памяти, соответствующей элементу списка.