This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. (June 2014) |
Пулы памяти , также называемые выделением блоков фиксированного размера , — это использование пулов для управления памятью , что позволяет осуществлять динамическое выделение памяти . Динамическое выделение памяти может быть достигнуто и достигалось с помощью таких методов, как malloc и оператор new в C++ ; хотя устоявшиеся и надежные реализации страдают от фрагментации из-за переменного размера блоков, их не рекомендуется использовать в системах реального времени из-за производительности. Более эффективным решением является предварительное выделение нескольких блоков памяти одинакового размера, называемых пулом памяти . Приложение может выделять, получать доступ и освобождать блоки, представленные дескрипторами , во время выполнения .
Многие операционные системы реального времени используют пулы памяти, такие как Transaction Processing Facility .
Некоторые системы, такие как веб-сервер Nginx , используют термин пул памяти для обозначения группы распределений переменного размера, которые впоследствии могут быть освобождены все сразу. Это также известно как регион ; см. управление памятью на основе региона .
Простой модуль пула памяти может выделить, например, три пула во время компиляции с размерами блоков, оптимизированными для приложения, развертывающего модуль. Приложение может выделять, получать доступ и освобождать память через следующий интерфейс:
unsigned int
. Модуль может интерпретировать дескриптор внутренне, разделив его на индекс пула, индекс блока памяти и версию. Индекс пула и блока памяти обеспечивает быстрый доступ к соответствующему блоку с дескриптором, в то время как версия, которая увеличивается при каждом новом выделении, позволяет обнаруживать дескрипторы, блок памяти которых уже освобожден (из-за слишком долгого удержания дескрипторов).Преимущества
Недостатки