Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NewОтветыОС_1.doc
Скачиваний:
37
Добавлен:
07.02.2015
Размер:
2.67 Mб
Скачать
  1. Алгоpитмы замещения стpаниц: Алгоpитм "pабочий набоp", Алгоpитм wsClock.

Алгоритм «рабочий набор»

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

Рабочим набором является множество страниц, использовавшихся в k последних обращениях к памяти. Для осуществления алгоритма «рабочий набор» заранее нужно назначить значение k.

Можно было бы придумать сдвигающийся регистр длины k, который смещается влево на одну позицию при каждом обращении к памяти и записывает номер последней использовавшейся страницы в крайнюю правую позицию. Все k номеров страниц в сдвигающемся регистре входили бы в рабочий набор. В момент страничного прерывания содержимое этого регистра могло бы считываться и сохраняться. Удалив дублирующие страницы получили рабочий набор. Но на практике использ аппроксимация. Вместо подсчета k последних обращений к памяти использовать время выполнения программы. Т.е рабоч набор опред как стран использ за послед t мс.

Для каждого процесса считается только его собственное время работы. Если процесс стартовал в Т и занял процессор на 40 мс за реальное время Т+ 100 мс, для определения рабочего набора его время равно 40 мс. Время работы процессора, которое фактически использовал процесс с момента запуска, часто называется текущим виртуальным временем. Если проц прер то вирт время останав. При таком приближении рабочий набор процесса - это множество страниц, к которому он обращался за последние τ секунд виртуального времени.

Алгоритм основанный на рабочем наборе: Надо найти страницу, не включенную в рабочий набор, и выгрузить ее. Каждая запись содержит (по крайней мере) два элемента информации: время последн обращ к странице, и бит R (обращения).

Алгоритм работает следующим образом.

В процессе обработки каждой записи проверяется бит R. Если R=1, текущее вирт время записыв в поле Время последнего использов в таблице страниц.

Если R=0, то к странице не было обращений в течение последнего тика часов и она является кандидатом на удаление и вычисляется ее возраст = текущ вирт время − ее время последнего обращ. Если возраст > τ (=несколько тиков часов), значит страница не находится в рабочем наборе и страница замещается.

Если же бит R равен 0, но возраст страницы ≤ τ, это значит, что страница до сих пор находится в рабочем наборе. Она временно обходится, но страница с наибольшим возрастом запоминается (наименьшим значением Времени последнего использования). Если проверена вся таблица, а кандидат на удаление не найден, это значит, что все страницы входят в рабочий набор. В этом случае, если найдены страницы с битом R = 0, удаляется та из них, которая имеет наибольший возраст. Если у всех стран R = 1, то для удаления случайным образом выбирается одна из них(желательно чистаяW=0).

Пример: текущ вирт время 2204

Алгоритм WSCIock

Исходный алгоритм «рабочий набор» слишком сложен. Улучшенный алгоритм, основанный на часовом алгоритме и на рабочем наборе, называется WSCIock. Использ структура данных в виде кольцевого списка страничных блоков, как в алгоритме «часы». В исходном состоян этот список пуст. По мере прихода страниц они поступают в список, формируя кольцо.

Каждая запись сожержит бит R, бит М, и поле «время последнего использования».

При каждом страничном прерыв первой проверяется та страница, на которую указывает стрелка. Если R=1, страница использов в течение последнего такта часов, R:=0, стрелка двигается вперед. Если R=0 и возраст страницы >τ , и М=0, то она не входит в рабочий набор и на диске есть ее действительная копия. В данный страничный блок просто загружается Если, М=1 ее нельзя немедленно стереть, так как на диске нет ее последней копии. Чтобы избежать переключения процессов, запись на диск включается в график планирования, но стрелка сдвигается на позицию, и алгоритм продолжает работу со следующей страницей.

За 1 круг провер все элементы, может быть несколько заплонир запис на диск (вносить в очер на запись только до опред предела)

После 1 круга существует два варианта: 1. Запланирована, по крайней мере, одна операция записи на диск. 2. Ни одной операции записи не запланировано.

В первом случае стрелка продолжает движение, отыскивая чистую страницу и выгружается первая попавшаяся чистая страница. Во втором случае все страницы находятся в рабочем наборе, выбирается текущая страница и переписывается на диск.

Пример: 2204 текущ вирт время.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]