Мультипрограммирование с фиксированными разделами. (Защита памяти при мультипрограммировании с фиксированными разделами.)
Мультипрограммирование с фиксированными разделами предполагает разделение адресного пространства на ряд разделов фиксированного размера. В каждом разделе размещается один процесс. Для защиты памяти при мультипрограммировании с фиксированными количеством разделов необходимо два регистра. Первый – регистр верхней границы (наименьший адрес) второй – регистр нижней границы (наибольший адрес). Прежде чем программа в разделе N начнет выполняться, границы ее адреса загружаются в соответствующие регистры. В процессе работы, все формируемые ею адреса контролируются на удовлетворения условия а<Адр>б.
При выходи любого адреса за отведенные ей границы работы программы прерывается.
|
|
|
|
|
б
Рис. 5. Регистр границы при мультипрограммировании.
Оверлейная структура (для фиксированных разделов)
Так как размер логического адресного пространства процесса может быть больше чем размер выделенного ему раздела (или больше чем размер самого большого раздела), иногда используется техника, называемая оверлей (overlay) или организация структуры с перекрытием. Основная идея - держать в памяти только те инструкции программы, которые нужны в данный момент времени.
Распределение памяти динамическими (переменными) разделами
В этом случае память ОЗУ делится на разделы, но границы разделов не фиксируются. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается, и на это место может быть загружена другая задача. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера.
По сравнению с методом распределения памяти фиксированными разделами данный метод обладает гораздо большей гибкостью, но ему присущ очень серьезный недостаток – фрагментация памяти. Фрагментация – это наличие большого числа несмежных участков свободной памяти очень маленького размера (фрагментов).
Перемещаемые разделы (Сжатие). Способ борьбы с фрагментацией
Одним из методов борьбы с фрагментацией – это уплотнение памяти или сжатие. Сжатием называется перемещение всех занятых участков в сторону старших либо в сторону младших адресов, так, чтобы вся свободная память образовывала единую свободную область.