Разные ОС по-разному распределяют память между процессами
Методы распределения памяти можно разделить на:
- без использования внешней памяти
- фиксированными разделами
- динамическими разделами
- перемещаемыми разделами
- с использованием внешней памяти
- страничное распределение
- сегментное распределение
- сегментно-страничное распределение
Фиксированные разделы
Наиболее простой и примитивный способ распределения памяти. Во время старта или загрузки системы память разбивается на разделы фиксированной величины, после чего границы разделов не сдвигаются.
Новый процесс поступает либо в общую очередь, либо в очередь конкретного раздела.
Система:
- сравнивает требуемый объем памяти с памятью раздела
- загружает программу в один из разделов и настраивает адреса
Недостаток системы:
- жесткость
- уровень мультипрограммирования заранее ограничен числом разделов
- невозможно выполнить прогу, которая больше самого большого раздела
Все же используется в системах реального времени, т.к. там детерминированность компенсирует недостаточную гибкость.
Динамические разделы
· Память изначально свободна и не разбита на разделы
· При поступлении процесса на исполнение ей выдается столько памяти, сколько нужно, если памяти не хватает, то процесс не исполняется
· После завершения процесса память освобождается
ОС должна:
- вести таблицы свободных и занятых областей
- анализировать требования к памяти при создании нового процесса, подыскивать ему незанятую область
- загружать процесс в выделенный ему раздел, корректировать таблицы
- корректировать таблицы после завершения процесса
Плюсы:
- гибче
Минусы – фрагментация памяти.
Так организована память в ОС/360
Перемещаемые разделы
Выделение памяти перемещаемыми разделами призвано решить проблему фрагментации. Суть его – сжатие, то есть перемещение всех занятых участков в сторону старших или младших адресов, чтобы вся свободная память собралась в одном месте.
Ко всем функциям, исполняемым ОС в динамических разделах, добавляется сжатие, которое должно производиться:
- либо при каждом завершении процесса
- либо когда для нового процесса не хватает места.
Физические адреса здесь постоянно меняются, поэтому перемещающий загрузчик для их настройки использовать нельзя, нужно динамическое преобразование адресов.
Минусы:
- затраты времени