/DoSSA-Lab-4

Финальная лабораторная работа по разработке архитектуры ПО

Primary LanguageC

Лабораторная работа 4. Отчёт.

Задача

В данной лабораторной работе ставилась задача реализовать компонент-аллокатор, использующий в своей работе алгоритм "Best Fit".

Описание работа аллокатора

Аллокатор работает следующим образом: для пользования программой выделяется буффер размером 8 МБ. По запросу пользователя компонентом, ему под необходимый размер резервируется блок (chunk) памяти. Поиск свободного блока осуществляется по алгоритму "Best Fit", т.е. находится блок, размер которого ближе всего к запрашиваемому размеру (наименее больше или равен). Поскольку изначально буффер не делится на блоки (состоит из одного большого), при выделении происходит расщепление свободного блока на свободный и занятый.

При необходимости освободить память происходит также вызов процедуры vacuumBuffer, которая объединяет освобожденные блоки, тем самым обеспечивая защиту от фрагментирования памяти.

Блоки памяти хранятся в односвязанном списке.

Возможные пути оптимизации

Как самый явный путь оптимизации, возможно добавить в программу счётчик, по которому будет вызывать процедура vacuumBuffer. До определенного момента фрагментация памяти не является настолько критичной, а поиск смежных свободных блоков для слияния, хоть и происходит за линейное время, всё равно тормозит работу компонента.