Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
17.04.2013
Размер:
194.56 Кб
Скачать

Методы поиска свободного участка

Метод первого подходящего участка.Последовательно просматривается список свободных участков до тех пор, пока будет найден участок большего размера, чем запрашиваемый. Найденный участок удаляется из списка свободных и делится на две части: размер одной части равен величине запрашиваемого участка, а размер второго – сколько осталось. Адрес первого участка возвращается в качестве результата операции резервирования памяти, а остаток включается в список свободных участков.

Метод наиболее подходящего участка.Последовательно просматриваетсявесьсписок свободных участков и находится наименьший участок, превышающий по размеру величину запроса. Последующие действия аналогичны предыдущему методу. Очевидно, что поиск дольше, чем в методе первого подходящего, но зато исключает возможность дробления участков, значительно превышающих по размеру величину запроса, если есть участки меньшего размера.

Метод точно подходящего участка.Помимо списка свободных поддерживается дополнительный указатель на нераспределенный пул памяти. Первоначально вся память представляет собой нераспределенный пул памяти, а список свободных – пуст. При запросе сначала просматривается список свободных участков и из него выбирается участок точно соответствующий по размеру величине запроса. Если в списке свободных участок не найден, то память выделяется из пула нераспределенной памяти. При освобождении памяти участок включается в список свободных, причем «склейка» соседних не выполняется. Далее просматривается список свободных и участки, примыкающие к пулу нераспределенной, исключаются из списка свободных и присоединяются к пулу нераспределенной памяти. Метод применяется для динамического распределения памяти в программах и минимизирует фрагментацию памяти (программа обычно работает с ограниченным количеством блоков разного размера). Процедура восстановления памяти («склейка») сложнее, чем в предыдущих методах.

Имеет ли значение порядок элементов в списке свободных участков? Дает ли преимущество список упорядоченный по адресам? Дает ли преимущество список упорядоченный по размеру свободных участков?

Оценка фрагментации памяти

Правило 50% (Дональд Кнут). В состоянии динамического равновесия (интенсивность запросов на резервирования памяти равна интенсивности запросов на освобождение памяти) число свободных участков равно ½ от числа занятых участков.

N – число занятых блоков,

s – средний размер занятого блока,

ks – средний размер свободного блока (k>0),

M – размер распределяемой памяти.

Размер свободной памяти равен M-Nsили по правилу 50% равенks*N/2.

M = Ns(1+k/2)

Доля памяти, занятой свободными участками:

Таким образом, если средний размер свободного участка равен ½ от размера занятого участка (k=1/2), то 20% памяти распределено между свободными участками.

Соседние файлы в папке вар1