Распределение памяти динамическими разделами
Каждому новому поступающему на выполнение процессу выделяется вся необходимая ему память, если ее не хватает, процесс не запускается.
Функции ОС, для реализации этого метода:
Ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти.
При создании нового процесса – анализ требований к памяти, просмотр таблицы свободных областей и выбор раздела. Выбор раздела может осуществляться по разным правилам: первый попавшийся раздел достаточного размера, раздел, имеющий наименьший достаточный размер, раздел, имеющий наибольший достаточный размер.
Загрузка программы в выделенный ей раздел и корректировка таблиц свободных и занятых областей.
Корректировка таблиц свободных и занятых областей.
Этому методу присущ серьёзный недостаток – фрагментация памяти.
Фрагментация – наличие большого числа несмежных участков свободной памяти маленького размера. Такого, что ни одна из вновь поступающих программ не может поместиться ни в одном из участков, хотя суммарный объем фрагментов может составить величину, превышающую требуемый объем памяти.
Примером этого метода является популярная в прошлом OS/360 и EC – ЭВМ..
Перемещаемые разделы
Борьба с фрагментацией – перемещение всех занятых участков в сторону старших или младших адресов, так, чтобы вся свободная память образовала свободную единую область.
В дополнение к функциям, которые выполняет ОС с динамическими разделами, она еще время от времени копирует содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется сжатием.
Сжатие выполняется либо при каждом завершении процесса, либо когда для создаваемого процесса нет свободного раздела достаточного размера.
Так как программы перемещаются в оперативной памяти в ходе своего выполнения, то в данном случае невозможно выполнить настройку адресов с помощью перемещающего загрузчика. Здесь необходима реализация динамического преобразования адресов.
Хотя этот метод приводит к более эффективному использованию памяти, но требует значительных временных затрат, что перевешивает имущества данного метода.
Метод используется в ранних версиях ОС OS/2.
ОС
П1
a
П2
П2
b
П4
П4
Процедура
сжатия
c
ОС
П1
a+b+c
Распределение
памяти перемещаемыми разделами
Свопинг и виртуальная память
Объем оперативной памяти, который имеется в компьютере, существенно сказывается на протекании вычислительного процесса. Он ограничивает число одновременно выполняющихся программ и размеры их виртуальных адресных пространств.
Если все задачи мультипрограммной смеси являются вычислительными (мало операций ввода-вывода), для хорошей загрузки процессора может оказаться достаточным всего 3-5 задач.
Если вычислительная система загружена выполнением интерактивных задач, для эффективного использования процессора может потребоваться уже несколько десятков, а то и сотен задач.
Большое количество задач требует больших объемов оперативной памяти.
В условиях, когда для обеспечения приемлемого уровня мультипрограммирования имеющейся памяти оказывается недостаточно, был предложен метод организации вычислительного процесса, при котором образы некоторых процессов целиком или частично временно выгружаются на диск.
В мультипрограммном режиме помимо активного процесса, имеются также приостановленные процессы, ожидающие завершения ввода-вывода или освобождения ресурсов, а также процессы в состоянии готовности, стоящие в очереди к процессору.
Образы таких неактивных процессов могут быть временно, до следующего цикла активности, выгружены на диск. Несмотря на это, ОС «знает» о существовании процессов и учитывает это при распределении процессорного времени и других ресурсов. К моменту, когда подходит очередь выполнения выгруженного процесса, его образ возвращается с диска в оперативную память. Если при этом оказывается, что свободного места в оперативной памяти не хватает, то на диск выгружается другой процесс.
Такая подмена (виртуализация) оперативной памяти дисковой позволяет повысить уровень мультипрограммирования.
Виртуальным называется ресурс, который пользователю или пользовательской программе представляется обладающим свойствами, которыми он, в действительности, не обладает.
Ясно, что работа виртуальной оперативной памяти происходит медленнее, чем реальной.
Виртуализация оперативной памяти осуществляется совокупностью программных модулей ОС и аппаратных схем процессора и включает решение следующих задач:
размещение данных в запоминающих устройствах различного типа;
выбор образов процессов или их частей для перемещения из оперативной памяти на диск и обратно;
перемещение по мере необходимости данных между памятью и диском;
преобразование виртуальных адресов в физические.
Заметим, что с проблемой размещения в оперативной памяти программ, которые превышают ее размеры, программисты столкнулись достаточно давно. Одним из решений было разбиение программы на части, которые назывались оверлеями. Когда один оверлей заканчивал свое выполнение, он вызывал другой оверлей. Все оверлеи хранились на диске и перемещались между памятью и диском средствами ОС на основании директив программиста, содержащихся в программе.
Несмотря на внешнее сходство, имеет принципиальное отличие от виртуальной памяти. Оно состоит в том, что при оверлее разбиение программы на части и планирование их загрузки в оперативную память выполняются программистом заранее во время написания программы.
Виртуализация памяти может быть осуществлена на основе двух различных подходов:
свопинг — образы процессов выгружаются на диск и возвращаются в оперативную память целиком;
виртуальная память — между оперативной памятью и диском перемещаются части (сегменты, страницы) образов процессов.
Свопинг – частный случай виртуализации. Это наиболее простой способ совместного использования оперативной памяти и диска.
Недостаток – избыточность. Когда ОС решает активизировать процесс, для его выполнения, часто не требуется загружать в оперативную память все его сегменты полностью. Аналогично при освобождении памяти для загрузки нового процесса очень часто не требуется выгружать другой процесс на диск целиком. Достаточно выгрузить только часть его образа. Перемещение избыточной информации замедляет работу системы и неэффективно используется оперативная память.
Еще один недостаток. Системы, поддерживающие свопинг не способны загрузить для выполнения процесс, виртуальное адресное пространство которого превышает имеющуюся в наличии свободную память.
В современных ОС свопинг применения не находит.
Ключевой проблемой виртуальной памяти, возникающей в результате многократного изменения местоположения в оперативной памяти образов процессов или их частей, является преобразование виртуальных адресов в физические.
В настоящее время все множество реализаций виртуальной памяти может быть представлено тремя классами:
Страничная виртуальная память. Перемещение данных осуществляется страницами — частями виртуального адресного пространства, фиксированного и сравнительно небольшого размера.
Сегментная виртуальная память –перемещение осуществляется сегментами — частями виртуального адресного пространства произвольного размера.
Сегментно-страничная виртуальная память. Здесь используется двухуровневое деление: виртуальное адресное пространство делится на сегменты, а затем сегменты делятся на страницы. Единицей перемещения здесь является страница.
Для временного хранения сегментов и страниц на диске отводится либо специальная область, либо специальный файл, который носит название страничный файл.
Текущий размер страничного файла является важным параметром ОС, чем он больше, тем больше приложений может одновременно выполнять ОС. Однако, с увеличением страничного файла увеличивается время на перекачку информации и общая полезная производительность системы уменьшается.
Размер страничного файла в современных ОС является настраиваемым параметром.
