Виртуализация оперативной памяти. Свопинг и виртуальная память
Необходимым условием для того чтобы каждый процесс мог начать свое выполнение, является присутствие программ и данных процесса в оперативной памяти. Размеры оперативной памяти компьютера существенно влияет на характер вычислительного процесса, в особенности, если он выполняется в мультипрограммном режиме. Объем свободной ОП ограничивается следующими факторами:
1. Количество одновременно выполняющихся процессов;
2. Размеры выделяемых для них ФАП.
В том случае, когда большинство процессов в мультипрограммном режиме являются главным вычислительными, то есть выполняют относительно мало операций ввода/вывода, разгружающих ЦП, для достижения высокой загрузки процессора (~90%) достаточно, в среднем, от трех до пяти одновременно выполняющихся процессов. Если же ЭВМ в основном выполняет диалоговые (интерактивные) процессы, что характерно для многопользовательского режима, то в этом случае, для эффективного использования процессора может потребоваться несколько десятков или даже сотен одновременно выполняющихся процессов. Существует экспериментально полученная зависимость, которая показывает загрузку процессора в зависимости от количества параллельно выполняющихся процессов и интенсивности операций ввода/вывода.
ГРАФИК
Эти зависимости показывают, что загрузка процессора возрастает с увеличением коэффициента мультипрограммирования, но возрастание происходит с разной скоростью, которая зависит от интенсивности операций ввода/вывода.
Для увеличения загрузки процессора в системе должно присутствовать большее число одновременно выполняющихся процессов. Вместе с тем возрастание числа таких процессов требует для их размещения в памяти большего объема ОП. В условиях, когда размеры ОП принципиально ограничены, в ОС для решения этой задачи используется метод организации вычислительного процесса, при котором образы процессов, полностью или частично, временно размещаются во внешней памяти в специально создаваемом файле. Подобная замена ОП внешней памятью называется виртуализацией оперативной памяти.
Под образом процесса понимаются программные коды и данные, существующие в ВАП.
Виртуализация ОП позволяет повысить уровень мультипрограммирования, и, следовательно, добиться большей загрузки процессора. Это объясняется тем, что только объем свободной имеющейся ОП в этом случае жестко не ограничивает количество одновременно выполняющихся процессов, и суммарный объем ФП, занимаемый образами процессов, то есть часть ОП и часть внешней памяти, может заметно превышать объем свободной ОП.
Виртуализация ОП реализуется системными модулями, входящими в подсистему управления памятью, и некоторыми аппаратными элементами процессора. Она включает решение следующих задач:
1. Размещение программных кодов и кодов данных в запоминающих устройствах разного типа;
2. Выбор образов процессов, либо их частей для временного перемещения из ОП во внешнюю и обратно;
3. Выполнение перемещения программ и данных по мере необходимости между ОП и внешней памятью;
4. Преобразование виртуальных адресов программ и данных в адреса ФАП.
Перечисленные задачи решаются системными программами и аппаратурой процессора автоматически, без какого-либо участия программиста, и никак не сказываются на логике работы программы процесса. Это называется прозрачностью режима виртуализации памяти для пользователя.
Виртуализация может быть реализована на основе двух подходов:
1. Свопинг. В этом случае, образы процессов выгружаются во внешнюю память, и возвращаются в ОП целиком.
2. Виртуальная память. В этом случае, между ВП и ОП перемещаются только части данных, которые могут являться сегментами или страницами.
Свопинг представляет собой частный случай режима виртуальной памяти. Он отличается простотой в реализации, поскольку каждый раз между ОП и внешней памятью перемещаются все программные коды и все коды данных. Однако, этот способ имеет существенные недостатки:
1. Избыточность перемещаемой информации. Если, например, процесс прерывается, то для его возобновления как правило не требуется загружать в ОП всю информацию, достаточно загрузить только часть программных кодов или часть данных, и выделить место в памяти для стека. Аналогично, при освобождении ОП с целью загрузки в нее нового процесса необязательно выгружать какой-либо прежний процесс во внешнюю память целиком, а достаточно переместить только часть его образа. Перемещение избыточной информации требует дополнительного времени, и замедляет работу системы;
2. Возникают сложности при загрузке процессов, ВАП которых превышает имеющуюся в наличии свободную ОП.
По указанным причинам, реализация принципа виртуализации ОП осуществляется на основе второго подхода.
Одной из основных задач при виртуализации является отображение ВАП на ФАП. Решение этой задачи зависит, прежде всего, от того, какой способ структуризации ВАП используется в подсистеме управления памятью. В настоящее время, известны три основных способа, которые соответствуют трем способам распределения:
1. Страничная виртуальная память. Применяется страничная структуризация ВАП, и перемещение программ и данных процесса между ОП и ВП осуществляется страницами, то есть относительно небольшими частями виртуального пространства фиксированного размера. При этом, пространство физической памяти также структурируется на страницы того же размера. Эти страницы называются физическими страницами, в отличие от виртуальных;
2. Сегментная виртуальная память. Здесь используется сегментная структуризация ВАП, и предусматривается обмен между ОП и ВП частями ВАП произвольного размера. Эти части создаются с учетом смыслового содержания информации, хранящейся в них. Указанные части называются сегментами памяти. Размеры сегментов, как правило, значительно больше размеров страниц;
3. Сегментно-страничная виртуальная память. Используется двухуровневая структуризация ВАП, то есть в нем выделяются сегменты и страницы. При этом, единицей перемещения данных между ОП и ВП является страница.
Для временного хранения сегментов и страниц во ВП создается специальный системный файл, который в разных ОС имеет различные названия, такие как файл свопинга или страничный файл, файл подкачки, ФВП. Одним из основных параметров этого файла является его размер, который оказывает существенное влияние на возможности ОС. Чем больше размер страничного файла, тем больше процессов могут одновременно выполняться в системе при фиксированном размере ОП.
В современных ОС, размер этого файла является одним из настраиваемых параметров системы. Он задается при установке ОС или выбирается администратором системы с учетом компромисса между желаемым уровнем мультипрограммирования и быстродействием системы. Чем больше размер файла, тем выше коэффициент мультипрограммирования, но вместе с тем, с увеличением количества одновременно выполняющихся процессов, возрастают затраты времени на перемещение программ и данных между ОП и ВП, что ведет к снижению быстродействия системы.