38
недостатком рассматриваемого
способа является наличие достаточно
большого объема неиспользуемой памяти, которая может быть в каждом из
разделов. Такие потери памяти называют
фрагментацией памяти.
В
отдельных разделах потери памяти могут быть значительными,
однако использовать фрагменты свободной памяти при таком способе
распределения невозможно.
Чтобы избавиться от фрагментации, можно размещать в ОП задачи
плотно, одну за другой, выделяя ровно столько памяти, сколько задача
требует. Для этого система использует специальный планировщик, который
ведет список адресов свободной ОП. При появлении новой задачи диспетчер
памяти просматривает этот список и выделяет для задачи раздел, объем
которой либо равен необходимому, либо чуть больше, если память выделяется
не ячейками, а некими дискретными единицами. Список при этом изменяется.
При освобождении раздела диспетчер памяти пытается объединить
освобождающийся раздел с
одним из свободных участков, если таковой
является смежным. Список свободных участков может быть упорядочен либо
по адресам, либо по объему. Память под новый раздел выделяется одним из
способов:
1)
первый подходящий участок – список свободный областей
упорядочивается по адресам. Диспетчер просматривает список и выделяет
задаче раздел в той области, которая первой подойдет по объему;
2)
самый подходящий участок – список свободных областей
упорядочен по возрастанию объема фрагментов. В этом случае при просмотре
списка для нового раздела будет использован фрагмент свободной памяти,
объем которой наиболее точно соответствует требуемому;
3)
самый неподходящий участок – как ни странно является наиболее
эффективным способом. Список свободных адресов упорядочивается по
убыванию объема свободного фрагмента. Следовательно, подходящий объем
будет найден сразу, а оставшийся неиспользованный фрагмент может
оказаться еще пригодным для дальнейшего использования.
При любой дисциплине обслуживания в памяти всегда будет
наблюдаться сильная фрагментация. При этом возможны ситуации, когда из-
за сильной фрагментации памяти диспетчер задач не сможет образовать
новый раздел, хотя суммарный объем свободных областей будет больше, чем
это
необходимо для задачи. В этой ситуации организуется
уплотнение
памяти, для чего все вычисления приостанавливаются, и диспетчер памяти
корректирует свои списки, перемещая разделы в начало памяти. Недостаток –
потеря времени на уплотнение и невозможность при этом выполнять
вычисления.
Достарыңызбен бөлісу: