Управление виртуальной памятью, стратегии управления.

Стратегии вталкивания.

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

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

Стратегии размещения.

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

Стратегии выталкивания.

Определяют, какую страницу или сегмент следует заменить, чтобы освободить место для поступающего сегмента. Наиболее часто используются: выталкивание случайной страницы – эта стратегия имеет малые издержки, но рассчитана на слепое везение и поэтому применяется редко; по принципу оптимальности – выталкивается страница, которая наиболее долго не будет использоваться в дальнейшем, однако предсказать это сложно; FIFO – выталкивается страница, которая находилась в памяти дольше других; LRU – выталкивается страница, которая дольше всего не использовалась; LFU – выталкивается страница, которая использовалась реже других; NUR – выталкивается страница, не используемая в последнее время; по принципу рабочего множества – выталкивается страница, которая не входит в подмножество наиболее используемых страниц процесса.

Некоторые системы предусматривают возможность добровольного освобождения страниц. Многие стратегии базируются на понятии локальности. Локальность – свойство выполняющихся процессов, состоящее в том, что процессы как правило более активно обращаются к некоторому подмножеству своих страниц в течение некоторого временного интервала выполнения. Локальность может временной – означает, что процесс, обращающийся к странице, с большой вероятностью вскоре снова обратиться к этой же странице. Пространственная локальность – означает, что процесс, обращающийся к некоторой странице с большой вероятностью вскоре обратиться к соседним страницам своего виртуального адресного пространства. Временная локальность обусловлена тем, что программы пишутся с использованием циклов, подпрограмм, стеков, счетчиков, переменных для накопления итоговых сумм, массивов. Пространственная объясняется тем, что код программы обычно выполняется последовательно, данные организуются часто в виде массивов и у программистов принято размещать описание взаимосвязанных элементов по близости друг от друга. И на основе понятия локальности Деннинг разработал концепцию рабочих множеств, которая объясняет поведение программы. Рабочее множество обозначается W (t, Δt) в момент времени t – это множество страниц, к которым процесс обращается в интервале времени от t– Δt до t. Величина Δt – размер окна рабочего множества и её выбор играет существенную роль в управлении памятью.

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

Чтобы определить оптимальный размер для данной страницы необходимо учитывать ряд соображений:

У Windows используется страничная организация, размер страницы – 4 Кб.