Пулы памяти, называемые также выделением блоков фиксированного размера, является использованием пулов для управления памятью, что позволяет динамическое распределение памяти, сравнимое с таНос или C ++ «с оператором нового. Поскольку эти реализации страдают от фрагментации из-за переменных размеров блоков, не рекомендуется использовать их в системе реального времени из-за производительности. Более эффективное решение - это предварительное выделение нескольких блоков памяти одинакового размера, называемых пулом памяти. Приложение может выделять, получать доступ и освобождать блоки, представленные дескрипторами, во время выполнения.
Многие операционные системы реального времени используют пулы памяти, такие как средство обработки транзакций.
Некоторые системы, такие как веб-сервер Nginx, используют термин « пул памяти» для обозначения группы распределений переменного размера, которые впоследствии могут быть освобождены сразу. Это также известно как регион ; см. Управление памятью на основе регионов.
Простой модуль пула памяти может выделить, например, три пула во время компиляции с размерами блоков, оптимизированными для приложения, развертывающего модуль. Приложение может выделять, получать доступ и освобождать память через следующий интерфейс:
unsigned int
. Модуль может интерпретировать дескриптор внутри, разделив его на индекс пула, индекс блока памяти и версию. Индекс пула и блока памяти обеспечивает быстрый доступ к соответствующему блоку с помощью дескриптора, в то время как версия, которая увеличивается при каждом новом распределении, позволяет обнаруживать дескрипторы, блок памяти которых уже освобожден (из-за того, что дескрипторы сохраняются слишком долго).Преимущества
Недостатки