Interested Article - Менеджер памяти

Менеджер памяти — часть компьютерной программы (как прикладной , так и операционной системы ), обрабатывающая запросы на выделение и освобождение оперативной памяти или (для некоторых архитектур ЭВМ ) запросы на включение заданной области памяти в адресное пространство процессора .

Основное назначение менеджера памяти в первом смысле — реализация динамической памяти . Например, в языке C динамическое выделение памяти производится через функцию malloc .

Иерархия менеджеров памяти

Распределение памяти в монопрограммировании.

Менеджеры памяти часто образуют иерархию: нижестоящие менеджеры задействуют какие-либо закономерности выделения-освобождения памяти и этим снижают нагрузку на вышестоящие. Например:

  • Системный . Сверху находится менеджер памяти, встроенный в ОС. Он вносит ту или иную страницу в адресное пространство процесса — а значит, работает с дискретностью в 4 килобайта, что делает его очень медленным.
  • Принадлежащий процессу. Менеджер памяти, встроенный в стандартную библиотеку языка программирования , берёт у ОС блоки памяти «оптом» и раздаёт их сообразно с нуждами программиста. При этом он знает, что память отдаётся только одному процессу — а значит, синхронизация потоков производится не мютексами , а фьютексами . И переключение в режим ядра происходит в двух случаях: либо когда «оперативного запаса» памяти не хватает и нужно обратиться к ОС, либо когда один из потоков «натыкается» на занятый фьютекс.
  • Специализированные . Некоторые динамические структуры данных, например, std::vector , также берут память у стандартной библиотеки с запасом (обычно, блоками экспоненциально увеличивающегося размера). Таким образом, элементы добавляются по одному, но обращение к вышестоящему менеджеру происходит один раз на большое количество элементов. Объектный пул выделяет память под объекты конкретного типа и удобен, если они выделяются-освобождаются в больших количествах, и т. д.

Подобная иерархия приводит к тому, что на каждом из уровней «залёживается» свободная память. Но это оправдано: снижается фрагментация памяти и повышается скорость.

См. также

Примечания

  1. (неопр.) . kartaslov.ru . Дата обращения: 8 августа 2023. 10 августа 2023 года.
  2. (рус.) . Ravesli (7 октября 2017). Дата обращения: 8 августа 2023.


Same as Менеджер памяти