tima-s@ya.ru

Кубики

Life is life

Created with Sketch.

Кубики

Тима играет в кубики. Для лучшего представления работы с памятью компьютера.

Оранжевый дальний кубик, самый последний — это граница выделенной памяти, она двигается системным вызовом brk.

Красный стоячий кубик — освобожденная память. Пока мы ее можем только пометить как свободную, но не можем освободить реально. Не можем подвинуть границу brk. Иначе бы нам пришлось сдвигать все кубики после красного.

Вероятно, если следующим освободится, например, зеленый кубик, то нужно будет как-то соединить вместе эти два участка, пометить их как единый свободный блок. Красно-зеленый.

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

И только когда освобождается последний блок перед нашей границей, на фото он синий кубик, тогда можно сдвинуть границу на уменьшение. Действительно вернуть оперативную память ядру.

Tags:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *