(Динамическое распределение памяти), почему максимизировать пиковое использование? - PullRequest
0 голосов
/ 10 декабря 2018

Я читал учебник, в котором говорится: enter image description here

Я полностью потерян, давайте скажем:

n = 10 и p (необходимая полезная нагрузка) = 800 байт,

Означает ли это, что для n = 9 , который является 9-м запросом на выделение,P 9 должен быть 792 байта (предположим, что одно минимальное выделение составляет 8 байтов)?Правильно ли мое понимание?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Насколько я понимаю текст, цель распределителя состоит в том, чтобы максимизировать Pi (сумма выделенной памяти в момент i ).Пиковое использование до k является отношением максимума того, что может быть выделено, деленным на размер кучи при k .

, поскольку существует ряд alloc и free at i , если распределитель слишком простой и плохо обрабатывает запросы, он может быть не в состоянии ответить на другой запрос выделения (например, из-задля фрагментации, см. пример ниже).

Интеллектуальный распределитель может обеспечить максимальную полезную нагрузку за счет более медленного ответа.

С другой стороны, у вас может быть быстрый распределитель, который не сможет максимизировать совокупную полезную нагрузку Pk после ряда запросов.

Чтобы дать (простой) пример, имеющий эту цепочку запросов

R1: alloc(1000)
R2: alloc(2000)
R3: alloc(1500)
R4: free(R1)
R5: free(R2)
R6: alloc(3000) => use space from R1+R2?

На R6 базовый распределитель может быть не в состоянии понятьон может повторно использовать пространство, освобожденное от R1 и R2, что дает низкое отношение пиковое , а размер кучи не нужен больше, чем следовало бы.

Умнее, но с вероятностьюза счет большего количества процессоров /resources .

0 голосов
/ 10 декабря 2018

Предположение за этим заключается в том, что память - это драгоценный товар, и мы должны стараться не тратить его впустую.Если пиковое использование низкое, это означает, что для кучи, которая не используется, зарезервировано много памяти.

Пиковое использование не относится к какому-либо определенному распределению.P i - общая полезная нагрузка от i последовательных запросов.Поэтому нет смысла ссылаться на один p = 800 bytes в этом анализе.max i≤k P i - это пик графика P i от запроса 0 до k.Каждое распределение добавляет к использованию кучи, хотя освобождение уменьшит это.

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

...