Реализация управления памятью в OC WINDOWS Vista. Обработка страничных

прерываний.

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

При создании процесса ему выделяется область ВАП, а также создаётся дескриптор VAD. Данный дескриптор содержит: диапазон отображаемых адресов, секция представления файла резервного хранения (место на жёстком диске) и так далее. При обработке страничных ошибок Windows различает 5 категорий:

1. страница не зафиксирована;

2. попытка обращения страницы с нарушением разрешения;

3. попытка модификации страницы;

4. необходимость в увеличении стека;

5. страница зафиксирована, но в данное время не отображена.

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

Первая проблема: обмен между оперативной памятью и жестким диском происходит целыми страницами.

Другой проблемой является сам обмен между ОП и жестким диском. Частый обмен приводит к снижению эффективности системы. Медленная работа устройств ввода/вывода.

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


Алгоритм замещения страниц в OC WINDOWS Vista.

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

«Концепция рабочего набора» - каждый процесс имеет свой набор физических страниц (страничных блоков). В рабочий набор входят только отображаемые (те страницы, которые реально есть в памяти) страницы. Размер и состав рабочего набора может меняться.

Существуют две основные характеристики рабочего набора:

1) Минимальное количество страниц (от 20 до 50 страниц).

2) Максимальное количество страниц (от 45 до 345 страниц).

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

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

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

Существует три уровня активности диспетчера наборов:

1) Доступно большое количество памяти (сканирование страниц со сбросом битов доступа и использование их значений для определения возраста каждой страницы, оценка неиспользованных страниц в каждом рабочем наборе).

2) Недостаточное количество памяти (для всех процессов со значительным процентом неиспользованных страниц, добавление в рабочие наборы прекращается и начинается замена самых старых страниц).

3) Низкий уровень количества свободной памяти (усечение рабочих наборов ниже их максимума, путем удаления старых страниц).

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