Управление памятью
Управление памятью
Планирование процессов зависит от алгоритмов управления памятью.
Две стратегии управления памятью:
1) Своппинг (swap)
ОП и устройство выгрузки обмениваются процессами целиком
2) Подкачка по запросу (demand paging)
Память должна быть разбита по страницам
Функции подсистемы управления памятью:
1. Решает, какие процессы следует размещать в памяти.
Рекомендуемые материалы
2. Управляет участниками виртуального пространства.
3. Переписывает процессы во внешнюю память.
4. Помещает данные с устройства выгрузки в основную память.
Свопинг
Рассмотрим три основных функции свопинга:
1. Управление пространством в свопе (на устройстве выгрузки).
2. Выгрузка процессов.
3. Подкачка процессов.
Управление пространством в свопе.
Своп - это устройство блочного типа, чаще всего раздел диска.
Если в файловой системе используются суперблоки, то в свопе используется карта памяти устройства.
Карта состоит из строк, в которых содержится адрес распределяемого ресурса и количество единиц этого ресурса.
Адрес начала ресурса | Число единиц ресурса |
Показывает, где и сколько места на устройстве выгрузки.
В начальный момент в карте памяти устройства одна строка
Выгрузка процесса в своп происходит, когда:
∙ возникает системный вызов fork.
∙ процесс увеличивает свои размеры
∙ процессу необходима физическая память.
Выгрузкой загрузкой процессов занимается процесс подкачки. Он всегда выполняется в режиме ядра и имеет номер 0.
Алгоритм выгрузки:
1. Процесс подкачки уменьшает счетчик числа ссылок на область на 1.
2. Выделяет место в SWAP.
3. Блокирует процессы в памяти.
4. Выгружает из областей, где счетчик числа ссылок равен 0, непустые страницы через КЭШ.
Загрузка
SWAPPER≈ название алгоритма.
1. Выбирают готовый к выполнению процесс, дольше всех лежащий в свопе (если нет подходящих, то делают приостановку).
2. Загружают его.
Выгрузка
1. Выбирают процесс, который дольше спит (или дольше всего в памяти)
2. Выгружают его
Подкачка по запросу (по обращению)
Demand paging
Особенности:
1) Основная память обменивается с внешней памятью не процессами, а страницами.
2) Этот способ должен иметь аппаратную поддержку: страничную организацию памяти и центральный процессор, имеющий прерываемые команды, должен быть бит упоминания страницы (reference bit), используемый для подсчета возраста страницы.
3) Отсутствуют ограничения на размер процесса, обусловленные объемом физической памяти.
Рабочее множество процесса - это совокупность страниц, использованных процессом в последних n-ссылках. Где n - окно рабочего множества процессов, число страниц, находящихся в ОП.
Рисунок. Рабочее множество процесса
По мере выполнения процесса его рабочее множество видоизменяется в соответствии с используемыми процессом указателями страниц; увеличение размера окна влечет за собой увеличение рабочего множества и, с другой стороны, сокращение числа ошибок в выполнении процесса.
Для поддержки функций управления памятью на машинном (низком) уровне и для реализации механизма замещения страниц ядро использует 4 основные структуры данных: 1) записи таблицы страниц, 2) дескрипторы дисковых блоков, 3) таблицу содержимого страничных блоков (pfdata) и 4) таблицу использования области подкачки. Место для таблицы pfdata выделяется один раз на все время жизни системы, для других же структур страницы памяти выделяются динамически.
Запись в таблице страниц
Блокир. КЭШа | Обращение reference bit | Изменение | Защита | Присутствие | Физический адрес |
В таблице pfdata описывается каждая страница физической памяти. Записи таблицы проиндексированы по номеру страницы и состоят из следующих полей:
- Статус страницы
- Количество процессов, ссылающихся на страницу.
- Логический номер устройства (устройства выгрузки или файловой системы)
- Указатели на другие записи таблицы pfdata в соответствии со списком свободных страниц или с хеш-очередью страниц.
Выбирается страница, к которой дольше всего не было обращений. Откачку осуществляет «сборщик страниц». Просматриваются страницы, те, у которых не установлен reference bit (бит упоминания). Увеличивается возраст на 1. Если reference bit установлен, возраст обнуляется и reference bit сбрасывается. Reference bit устанавливается ЦП.
Диаграмма состояний страницы
Когда процесс обращается к странице, отсутствующей в его рабочем множестве, возникает ошибка, при обработке которой ядро корректирует рабочее множество процессов, а в случае необходимости подкачивает страницы с внешнего устройства.
Если Вам понравилась эта лекция, то понравится и эта - 21. Загазованность воздуха, характеристика, воздействие, нормирование.
Ошибки - это обращения к несуществующим страницам.
Сборщик страниц - процесс, принадлежащий ядру и выполняющий выгрузку из памяти тех страниц, которые больше не входят в состав рабочего множества пользовательского процесса. Запускается в любой момент, когда в нем возникает необходимость. Он просматривает все активные незаблокированные области и увеличивает значение возраста принадлежащим им страницам.
У страницы два состояния: либо она дозревает, либо она готова к выгрузке.
Ядро возобновляет работу сборщика страниц, когда доступная свободная память имеет размер недостающий до нижней допустимой отметки.