Контрольные вопросы
Схема с переменными разделами
Схема со свопингом
Имея дело с пакетными системами можно обходиться фиксированными разделами и не использовать ничего более сложного. В системах с разделением времени возможна ситуация, когда память не в состоянии содержать все пользовательские процессы. Приходится прибегать к свопингу (swapping) - перемещению процессов из главной памяти на диск и обратно целиком.
Выгруженный процесс может быть возвращен в то же самое адресное пространство или в другое. Это ограничение диктуется методом связывания. Для схемы связывания на этапе выполнения можно загрузить процесс в другое место памяти.
Свопинг не имеет непосредственного отношения к управлению памятью, скорее он связан с подсистемой планирования процессов. В системах со свопингом время переключения контекстов лимитируется временем загрузки выгрузки процессов. Для эффективной утилизации процессора необходимо, чтобы величина кванта времени существенно его превышала
Оптимизация свопинга может быть связана с выгрузкой лишь реально используемой памяти или выгрузкой процессов, реально не функционирующих. Кроме того, выгрузка обычно осуществляется в специально отведенное пространство для свопинга, то есть быстрее, чем через стандартную файловую систему (пространство выделяется большими блоками, поиск файлов и методы непосредственного выделения не используются).
Во многих версиях Unix свопинг обычно запрещен, однако он стартует, когда возрастает загрузка системы.
В принципе, система свопинга может базироваться на фиксированных разделах. На практике, однако, использование фиксированных разделов приводит к большим потерям используемой памяти, когда задача существенно меньше раздела.
Более эффективной представляется схема с переменными (динамическими) разделами. В этом случае вначале вся память свободна и не разделена заранее на разделы. Вновь поступающей задаче выделяется необходимая память. После выгрузки процесса память временно освобождается. По истечении некоторого времени память представляет собой набор занятых и свободных участков (рис.9.4). Смежные свободные участки могут быть объединены в один.
Рисунок 9.4 - Динамика распределения памяти между процессами. Серым цветом показана неиспользуемая память.
Типовой цикл работы менеджера памяти состоит в анализе запроса на выделение свободного участка (раздела), выборке его среди имеющихся в соответствие с одной из стратегий (first fit, best fit, worst fit), загрузке процесса в выбранный раздел и последующем внесении изменений в таблицы свободных и занятых областей. Аналогичная корректировка необходима и после завершения процесса. Связывание адресов может быть осуществлено на этапах загрузки и выполнения.
Этот метод более гибок по сравнению с методом фиксированных разделов
Этому методу также присуща внешняя фрагментация вследствие наличия большого числа участков свободной памяти. Проблемы фрагментации могут быть различными. В худшем случае можно иметь участок свободной (потерянной) памяти между двумя процессами. Если все эти куски объединить в один блок, можно разместить больше процессов. Выбор между first-fit и best-fit слабо влияет на величину фрагментации.
В зависимости от суммарного размера памяти и среднего размера процесса эта проблема может быть большей или меньшей. Статистический анализ показывает, что при наличии n блоков пропадает n/2 блоков, то есть 1/3 памяти! Это известное 50% правило (два соседних свободных участка в отличие от двух соседних процессов могут быть объединены в один).
Одно из решений проблемы внешней фрагментации - разрешить адресному пространству процесса не быть непрерывным, что разрешает выделять процессу память в любых доступных местах. Один из способов реализации такого решения - это paging, используемый во многих современных ОС.
Другим способом борьбы с внешней фрагментацией является сжатие, то есть перемещение всех занятых (свободных) участков в сторону возрастания (убывания) адресов, так, чтобы вся свободная память образовала непрерывную область. Этот метод иногда называют схемой с перемещаемыми разделами. В идеале фрагментация после сжатия должна отсутствовать.
Сжатие, однако, является дорогостоящей процедурой, алгоритм выбора оптимальной стратегии сжатия очень труден, и, как правило, сжатие осуществляется в комбинации с выгрузкой и загрузкой по другим адресам.
1) Назовите и охарактеризуйте виды адресов памяти
2) Назовите шаги, которые проходит программа при компиляции
3) Приведите схему этапов связывания адресов
4) Приведите шаги привязки инструкций и данных к памяти
5) Опишите схему управления памятью с фиксированными разделами
6) Опишите общую схему управления памятью с фиксированными разделами
7) Опишите частные случаи схем управления памятью с фиксированными разделами (один процесс в памяти и оверлейная структура)
8) Опишите схему управления памятью со свопинга
9) Опишите схему управления памятью с переменными разделами
На лекции рассматриваются следующие вопросы:
1) Проблема размещения больших программ. Понятие виртуальной памяти
2) Архитектурные средства поддержки виртуальной памяти (страничная память, сегментная организации памяти, сегментно-страничная организации памяти, таблица страниц, ассоциативная память, иерархия памяти, размер страницы)