Как указано в заголовке, некоторые из них сталкиваются с трудностями при анализе использования памяти в среднем слое памяти (быстроразъем). Моя цель - определить среднюю внутреннюю фрагментацию выделенного блока (используя быстродействующий распределитель памяти).Использование памяти в среднем случае - анализ алгоритмов
До сих пор я не получил никуда, так как я действительно не знаю, как анализировать средний случай. Мои первые мысли заключались в том, что у вас есть T (n), то есть память теряется при распределении блока памяти размера n (внутренняя фрагментация). Кроме того, предположим, что вероятностью для распределения блока памяти размера n является P (n), тогда средняя потеря памяти памяти должна в основном быть суммой T (n1) P (n1) + (Tn2) P (n2) + .... + T (nk) P (nk)
Проблема в том, что я не знаю T (n) и P (n) .. или это возможно даже без каких-либо предположения?
Для наихудшего случая я просто думаю, что это O (n-1) = O (n). Так как в худшем случае у нас есть только один «быстрый список», который обрабатывается, скажем, в первую очередь. Тогда самый худший возможный сценарий состоит в том, что у нас есть только один большой блок размером n байтов, доступный для выделения, а запрошенная память составляет всего 1 байт, тогда n-1 байт пропадает больше всего?
Я, возможно, не имел никакого смысла, но любая помощь в этом становится понятной. Спасибо
Можете ли вы начать с примера? Предположим, у вас есть память объемом 10 байт (livin large!). Если вы выделите 5 байтов, оставшиеся 5 байтов будут потрачены впустую? Или это зависит от вероятности нахождения требования к распределению, которое меньше 5 байтов? – ElKamina
Да, точно так же, как вы сказали, если у нас есть 10-байтовый блок, и мы только запросили 5 байт, тогда оставшиеся 5 байтов потрачены впустую. –