Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Стратегия подкачки и рабочие наборы

Обычно система виртуальной памяти определяет три типа стратегии: стратегия считывания (fetch policy), стратегия размещения (placement policy) и стратегия замещения (replacement policy).

Стратегия считывания (fetch policy) определяет, когда надо перемещать страницу с диска в память. Можно пытаться загрузить страницы, которые потребуются процессу, до того как он их запросит (заранее). А можно использовать стратегию подкачки по запросу (demand paging policy), в этом случае страница загружается в память только тогда, происходит страничная ошибка.

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

При возникновении страничной ошибки система виртуальной памяти должна определить, в какое место физической памяти следует загрузить эту виртуальную страницу. Здесь начинает действовать стратегия размещения (placement policy). В ОС Windows используется линейная архитектура памяти, поэтому если память не заполнена, диспетчер виртуальной памяти просто выбирает первый страничный фрейм из списка свободных страничных фреймов. Если этот список пуст, то диспетчер просматривает другие списки в заданном порядке (см. Рис. 7. Списки страниц в базе данных страничных фреймов).

Если страничная ошибка происходит, когда вся физическая память заполнена, то применяется стратегия замещения (replacement policy). Она определяет, какую страницу нужно извлечь из памяти, чтобы освободить место для новой страницы. Обычно используют следующие стратегии:

· замещение используемого меньше всего (least recently used)

· и первым пришел, первым ушел (first in, first out – FIFO).

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

Кроме того, cтратегии замещения делятся на локальные (local replacement policy) и глобальные (global replacement policy). При стратегии локального замещения каждому процессу выделяется фиксированное (динамически настраиваемое) число страничных фреймов. Когда процесс использовал все выделенные ему фреймы, система виртуальной памяти удаляет из физической памяти одну из его страниц при каждой страничной ошибке в данном процессе. В случае стратегии глобального замещения для обработки страничной ошибки используется любой страничный фрейм, независимо от того, принадлежит ли он процессу, в котором произошла эта страничная ошибка. Так при использовании стратегии глобального замещения FIFO необходимо отыскать страницу, которая дольше остальных находилась в памяти, а при использовании стратегии локального замещения FIFO необходимо отыскать самую старую страницу данного процесса.

Стратегия глобального замещения создает ряд проблем:

· процессы подвержены влиянию других процессов;

· плохое приложение может подорвать работу всей системы.

По этим причинам диспетчер виртуальной памяти Windows использует стратегию локального замещения FIFO. Для реализации этого подхода ему необходимо для каждого процесса отслеживать его страницы, находящиеся в памяти. Это множество страниц называется рабочим набором (working set) процесса.

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

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

Когда физической памяти становится недостаточно, диспетчер виртуальной памяти использует автоматическое урезание рабочего набора (automatic working set trimming), для увеличения объема свободной памяти. Он просматривает все процессы и сравнивает текущий размер рабочего набора с минимальным. Когда он обнаруживает процессы, рабочие наборы которых больше минимального, он удаляет страницы из их рабочих наборов.

После того, как рабочий набор процесса уменьшился до минимума, диспетчер виртуальной памяти отслеживает число генерируемых данным процессом страничных ошибок. Если их много, а память не слишком загружена, то диспетчер виртуальной памяти увеличивает размер рабочего набора. Однако если в течение некоторого времени, в процессе не происходит страничных ошибок, то либо код, исполняемый потоками процесса, комфортно умещается в минимальном рабочем наборе процесса, либо ни один из потоков процесса не исполняется. Например, процесс регистрации пользователя в системе просто ждет, пока позьзователь зарегистрируется, а после регистрации пользователя, этот процесс ждет выхода пользователя из системы. Для процессов, которые простаивают большую часть времени, диспетчер виртуальной памяти продолжает уменьшать размер рабочего набора, пока в процессе не произойдет страничная ошибка. Это будет означать, что потоки процесса вновь начали исполняться, либо достигнут минимаьный размер памяти, необходимый потокам процесса для исполнения.

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

<== предыдущая лекция | следующая лекция ==>
Ассоциативный буфер трансляции | База данных страничных фреймов
Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 482; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.