Понятие о страничной модели памяти.
ОП делится на блоки фиксированного размера 4 Кб (должно быть число, кратное степени двойки, чтобы операции сложения можно было бы заменить на операции конкатенации). Каждый такой блок называется страницей.
Суть его заключается в том, что у микропроцессора существует возможность по обмену страницами памяти с жестким диском. В случае, если программа требует памяти больше, чем объем физической памяти, редко используемые страницы памяти записываются на жесткий диск в специальный файл виртуальной памяти(файл подкачки). В настоящее время файл подкачки может динамически изменять свой размер в зависимости от потребностей системы.
Основное достоинство страничного способа распределения памяти -минимально возможная фрагментация (эффективное распределение памяти).
Недостатки: 1)потери памяти на размещение таблиц страниц 2) потери процессорного времени на обработку таблиц страниц (диспетчер памяти).
Типы адресов.
Для идентификации переменных и команд на разных этапах жизненного цикла программы используются символьные имена (метки), виртуальные адреса и физические адреса
► Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды.
► Символьные имена, называемые иногда логическими адресами, присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.
► Виртуальные адреса называемые иногда математическими, вырабатывает транслятор, переводящий программу на машинный язык.
Простейшие схемы управления памятью
8.5.1.Схема с фиксированными разделами
Схема с фиксированными разделами является самым простым способом управления оперативной памятью. На этапе генерации или в момент загрузки системы оперативная память разбивается на несколько разделов фиксированной величины. Очередь может быть организована по разделам или быть общей для всех разделов.
Подсистема управления памятью оценивает размер поступившего процесса, выбирает подходящий для него раздел, осуществляет загрузку процесса в этот раздел и настройку адресов.
Недостатками представленной схемы организации памяти являются:
· ограничение числа одновременно выполняемых процессов из-за ограниченного количества разделов;
· потеря части памяти в результате сильной фрагментации (память выделена процесса, но не используется им)
8.5.2.Один процесс в памяти
Частным случаем схемы с фиксированными разделами является случай размещения в памяти одного пользовательского процесса. По данному принципу построена операционная система MS-DOS. В этом случае необходимо определить расположение пользовательской программы по отношению к ОС. Это может быть верхняя, нижняя или средняя части памяти. Решение зависит от расположения вектора прерываний. Обычно он находится в нижней части памяти. Поэтому ОС размещают в нижней части памяти.
Защита адресного пространства ОС от пользовательской программы осуществляется при помощи одного граничного регистра, содержащего адрес границы ОС.
8.5.3.Оверлейная структура
Оверлейная структура или структура с перекрытием используется, когда размер логического адресного пространства процесса больше размера выделенного ему раздела физической памяти.
Коды ветвей оверлейной структуры программы находятся на диске как абсолютные образы памяти и по мере необходимости считываются драйвером оверлеев. Для описания оверлейной структуры используется специальный несложный язык. Совокупность файлов исполняемой программы дополняется файлом (обычно с расширением .odl), который описывает дерево вызовов внутри программы. Синтаксис данного файла распознается загрузчиком. Привязка к физической памяти происходит в момент очередной загрузки одной из ветвей программы.
Оверлеи применяются на пользовательском уровне в системах с простой файловой структурой. Тщательное проектирование оверлейной структуры отнимает много времени, требует знаний устройства программы, ее кода, данных и языка описания оверлейной структуры. Оверлейные структуры использовались компьютерами с небольшим логическим адресным пространством. Появление виртуальной памяти привело к устранению проблемы оверлейных сегментов.
8.5.4.Динамическое распределение. Свопинг
Свопинг используется при нехватке памяти. Свопингом называется полное перемещение процессов из оперативной памяти на диск и обратно. Частичная выгрузка процессов на диск осуществляется в системах со страничной организацией памяти.
Свопинг не имеет отношения к управлению памятью, он связан с планированием процессов. Свопинг увеличивает время переключения контекста. Время выгрузки может быть сокращено за счет организации специально отведенного пространства на диске (раздел для свопинга). Обмен с диском при этом осуществляется блоками большего размера и быстрее, чем через стандартную файловую систему. Во многих версиях Unix свопинг начинает работать при возникновении необходимости в снижении загрузки системы.
8.5.5.Схема с переменными разделами
При схеме с переменными разделами память заранее не делится на разделы, необходимое количество памяти выделяется вновь поступающему процессу, после выгрузки процесса память временно освобождается, два соседних свободных участка могут объединяться между собой.
По истечении некоторого времени память представляет собой переменное число разделов разного размера.
Существуют разные способы выбора раздела памяти при поступлении нового процесса.
· Стратегия первого подходящего. Процесс помещается в первый подходящий по размеру раздел.
· Стратегия наиболее подходящего. Процесс помещается в тот раздел, где после его загрузки останется меньше всего свободного места.
· Стратегия наименее подходящего. Процесс помещается в самый большой раздел и в нем остается достаточно места для возможного размещения еще одного процесса.
По результатам моделирования доля полезно используемой памяти в первых двух случаях больше, при этом первый способ работает быстрее.
Типовой цикл работы диспетчера памяти
· анализ запроса на выделение свободного участка и выбор свободного участка по тому или иному способу;
· загрузка процесса в выбранный раздел и последующие изменения таблиц свободных и занятых областей.
Аналогичная корректировка требуется и после завершения процесса. Связывание адресов осуществляется на этапах загрузки или выполнения.
Данный метод более гибок по сравнению с методом фиксированных разделов. Недостатком метода является внешняя фрагментация – наличие большого числа участков неиспользуемой памяти, не выделенной ни одному процессу. Выбор стратегии размещения процесса слабо влияет на величину фрагментации. Статистический анализ показывает, что пропадает в среднем 1/3 памяти.
Проблему внешней фрагментации решается за счет сжатия, то есть перемещения всех занятых (свободных) участков в сторону возрастания (убывания) адресов. После сжатия фрагментация в идеале должна отсутствовать. Сжатие является дорогостоящей процедурой.