Interested Article - Менеджер памяти
- 2021-05-25
- 1
Менеджер памяти — часть компьютерной программы (как прикладной , так и операционной системы ), обрабатывающая запросы на выделение и освобождение оперативной памяти или (для некоторых архитектур ЭВМ ) запросы на включение заданной области памяти в адресное пространство процессора .
Основное назначение менеджера памяти в первом смысле — реализация
динамической памяти
.
Например, в
языке
C
динамическое выделение памяти производится через функцию
malloc
.
Иерархия менеджеров памяти
Менеджеры памяти часто образуют иерархию: нижестоящие менеджеры задействуют какие-либо закономерности выделения-освобождения памяти и этим снижают нагрузку на вышестоящие. Например:
- Системный . Сверху находится менеджер памяти, встроенный в ОС. Он вносит ту или иную страницу в адресное пространство процесса — а значит, работает с дискретностью в 4 килобайта, что делает его очень медленным.
- Принадлежащий процессу. Менеджер памяти, встроенный в стандартную библиотеку языка программирования , берёт у ОС блоки памяти «оптом» и раздаёт их сообразно с нуждами программиста. При этом он знает, что память отдаётся только одному процессу — а значит, синхронизация потоков производится не мютексами , а фьютексами . И переключение в режим ядра происходит в двух случаях: либо когда «оперативного запаса» памяти не хватает и нужно обратиться к ОС, либо когда один из потоков «натыкается» на занятый фьютекс.
- Специализированные . Некоторые динамические структуры данных, например, std::vector , также берут память у стандартной библиотеки с запасом (обычно, блоками экспоненциально увеличивающегося размера). Таким образом, элементы добавляются по одному, но обращение к вышестоящему менеджеру происходит один раз на большое количество элементов. Объектный пул выделяет память под объекты конкретного типа и удобен, если они выделяются-освобождаются в больших количествах, и т. д.
Подобная иерархия приводит к тому, что на каждом из уровней «залёживается» свободная память. Но это оправдано: снижается фрагментация памяти и повышается скорость.
См. также
- Memory Management Unit (MMU) и Контроллер памяти — менеджер памяти как часть аппаратного обеспечения
- Virtual Memory Manager (VMM) — менеджер памяти как часть операционной системы
- Виртуальная память
- Иерархия памяти
- Компьютерная память
Примечания
- (неопр.) . kartaslov.ru . Дата обращения: 8 августа 2023. 10 августа 2023 года.
- (рус.) . Ravesli (7 октября 2017). Дата обращения: 8 августа 2023.
- 2021-05-25
- 1