Модель распределения памяти динамическими разделами — это метод распределения оперативной памяти компьютера для программных объектов, выделяющий память под объект непосредственно во время исполнения программы.
Введение
Память считается одним из важнейших ресурсов, который требует очень аккуратного управления со стороны мультипрограммных операционных систем. Распределяться должен полный объём оперативной памяти, не занятый операционной системой (ОС). Как правило ОС размещается в самых младших адресах, тем не менее, она может использовать и самые старшие адреса. В состав функций ОС по управлению памятью включены следующие процедуры:
- Контроль наличия свободных и занятых зон памяти.
- Предоставление необходимой памяти выполняемым процессам и очистка памяти при завершении процессов.
- Перемещение процессов из оперативной памяти на жёсткий диск, если объём основной памяти не достаточен для расположения в ней всех действующих процессов.
- Возврат процессов в оперативную память, когда в ней освободилось место.
- Выполнение настройки адресного пространства программы на определённую область физической памяти.
Для идентификации переменных и команд применяются символьные имена (метки), виртуальные адреса и физические адреса, как показано на рисунке ниже.
Рисунок 1. Способы идентификации переменных и команд. Автор24 — интернет-биржа студенческих работ
Символьные имена могут быть присвоены пользователями при формировании программ на алгоритмических языках или на ассемблере. Виртуальные адреса могут быть выработаны транслятором, который переводит программу в машинные коды. Поскольку при трансляции обычно неизвестно, в какой участок оперативной памяти будет загружаться программа, то транслятор должен присвоить переменным и командам виртуальные, иначе говоря, условные, адреса, как правило, полагая по умолчанию, что программа размещается, начиная с нулевого адреса.
Набор виртуальных адресов процесса является виртуальным адресным пространством. Все процессы обладают собственным виртуальным адресным пространством. Наибольший объём виртуального адресного пространства может ограничиваться разрядностью адреса, которая присуща данной архитектуре компьютера, и обычно она не совпадает с объемом физической памяти, имеющимся в компьютере.
Физические адреса должны соответствовать номерам ячеек оперативной памяти, в которых на самом деде располагается или будет располагаться весь набор переменных и команд. Переход от виртуальных адресов к физическим может быть осуществлён двумя методами:
- Замена виртуальных адресов на физические, реализуется специальной системной программой, а именно, перемещающим загрузчиком. Перемещающий загрузчик на базе присутствующих у него исходных данных о начальном адресе физической памяти, в которую нужно будет загрузить программу, и информации, выработанной транслятором об адресно-зависимых константах программы, исполняет загрузку программы, с одновременной заменой виртуальных адресов на физические.
- Программа заносится в память в исходном формате в виртуальных адресах, при этом операционная система должна зафиксировать смещение действительного размещения программного кода по отношению к виртуальному адресному пространству. Во время исполнения программы при любом обращении к оперативной памяти осуществляется преобразование виртуального адреса в физический адрес.
Второй метод считается более гибким, так как он позволяет перемещать программу во время ее выполнения, в то время как перемещающий загрузчик осуществляет жесткую привязку программы к изначально отведённому ей участку памяти. Однако применение перемещающего загрузчика позволяет уменьшить накладные расходы, поскольку преобразование всех виртуальных адресов выполняется только один раз во время загрузки, а во втором варианте это делается каждый раз при обращении по данному адресу.
Модель распределения памяти динамическими разделами
Все методы управления памятью подразделяются на следующие классы:
- Методы, использующие перемещение процессов между оперативной памятью и жёстким диском.
- Методы, не использующие перемещение процессов между оперативной памятью и жёстким диском.
Классификация методов распределения памяти изображена на рисунке ниже.
Рисунок 2. Классификация методов распределения памяти. Автор24 — интернет-биржа студенческих работ
Рассмотрим динамическое распределение памяти без использования жёсткого диска. В этом варианте память компьютера не подразделяется заранее на разделы, то есть, изначально вся память считается свободной. Каждая вновь поступающая задача получает необходимую ей память. Если достаточного объема памяти нет в наличии, то ОС задачу просто не принимает к исполнению и ставит её в очередь. После завершения задачи память должна освобождаться, и на это место загружается другая задача. Таким образом, в произвольные моменты времени оперативная память является случайной последовательностью занятых и свободных участков (разделов) произвольного размера. На рисунке ниже изображено состояние памяти в разные моменты времени в случае применения динамического распределения памяти.
Рисунок 3. Состояние памяти в разные моменты времени в случае применения динамического распределения памяти. Автор24 — интернет-биржа студенческих работ
Например, в момент t0 в памяти расположена только ОС, а к моменту t1 память поделена среди пяти задач, при этом задача П4 по завершению должна покинуть память. На освободившееся после задачи П4 место будет загружена задача П6, которая поступила в момент t3.
Операционная система при осуществлении этого метода управления памятью решает следующие задачи:
- Формирование таблиц свободных и занятых участков, в которых должны быть указаны начальные адреса и размеры участков памяти.
- При поступлении новой задачи выполняется анализ запроса, просмотр таблицы свободных областей и осуществляется выбор раздела, размер которого является достаточным для размещения данной задачи.
- Осуществление загрузки задачи в выделенный ей подраздел и корректировки таблиц свободных и занятых областей.
- По завершении задачи снова выполняется корректировка таблиц свободных и занятых областей.
Код программы не должен перемещаться во время исполнения, то есть допускается единовременная настройка адресов при помощи перемещающего загрузчика.