TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2768 1.55K
Управление памятью в Linux
(продолжение предыдущего поста)

1. Введение.

→ Система управления памятью в Linux контролирует, как операционная система использует оперативную память (RAM), пространство подкачки (swap) и виртуальную память.
→ Ядро гарантирует, что каждый процесс получает необходимый объём памяти, сохраняя при этом стабильность и производительность системы.
→ В Linux используется система виртуальной памяти, которая предоставляет каждому процессу собственное изолированное адресное пространство.

2. Виртуальная память

→ Виртуальная память позволяет процессам работать так, будто у них есть доступ к большому непрерывному объёму памяти — даже если физическая оперативная память меньше.
→ Linux сопоставляет виртуальную память с физической с помощью таблиц страниц.
→ Обеспечивает:
 → Изоляцию между процессами;
 → Эффективное использование оперативной памяти;
 → Поддержку крупных приложений.

3. Страничная организация памяти (paging)

→ Память разделена на небольшие блоки фиксированного размера — страницы (обычно 4 КБ).
→ Ядро загружает страницы программы в оперативную память по мере необходимости.
→ Если оперативная память заполнена, неиспользованные страницы перемещаются в пространство подкачки.
→ Страничная организация повышает эффективность многозадачности.

4. Роль блока управления памятью (MMU, Memory Management Unit)

→ MMU — это аппаратный компонент, который преобразует виртуальные адреса в физические.
→ Сохраняет преобразования в кэше, называемом TLB (Translation Lookaside Buffer, буфер ассоциативной трансляции).
→ Быстродействие доступа к памяти зависит от эффективного использования MMU и TLB.

5. Распределение физической памяти

→ В Linux используются два основных распределителя памяти:
 → Система buddy (Buddy System) — выделяет большие непрерывные блоки памяти.
 → Распределитель slab (Slab Allocator) — выделяет память для объектов ядра (inodes, дескрипторы файлов).

→ Обеспечивает минимальную фрагментацию и более быстрое выделение памяти.

6. Пространство подкачки (swap)

→ Swap — это область на диске, используемая как буфер переполнения, когда физическая оперативная память заполнена.
→ Неактивные страницы перемещаются в swap.
→ Помогает системе работать стабильно, но работает значительно медленнее, чем оперативная память.

→ Команды:
 → swapon -s — просмотр информации о swap;
 → free -h — проверка использования swap.

7. Зоны памяти

→ Linux разделяет физическую память на зоны в зависимости от аппаратных ограничений:
 → ZONE_DMA — память, используемая для прямого доступа к памяти (DMA).
 → ZONE_NORMAL — обычная память, доступная ядру.
 → ZONE_HIGHMEM — верхняя память, не отображаемая напрямую ядром (в 32‑битных системах).

→ Помогает ядру распределять память в зависимости от архитектуры системы.

8. Кэширование и буферы

→ Linux использует свободную память для кэширования, чтобы повысить производительность.
→ Типы:
 → Page Cache — хранит недавно использованные файлы.
 → Buffer Cache — хранит метаданные для ускоренного доступа к диску.

→ Кэшированные данные автоматически освобождаются, когда программам требуется больше памяти.

9. OOM Killer (Out‑of‑Memory Killer, «убийца при нехватке памяти»)

→ Когда память и swap полностью использованы, Linux запускает OOM Killer.
→ Выбирает и завершает процессы, потребляющие много памяти, чтобы освободить оперативную память.
→ Предотвращает зависание системы.

10. Инструменты мониторинга памяти

→ Распространённые команды для проверки использования памяти:
 → free -h — обзор оперативной памяти и swap;
 → top — использование памяти процессами в реальном времени;
 → htop — интерактивный монитор памяти;
 → vmstat — статистика виртуальной памяти;
 → cat /proc/meminfo — подробная информация о памяти.

11. Интерфейсы памяти в /proc

→ Linux предоставляет информацию о памяти через файловую систему proc:
 → /proc/meminfo — обзор памяти;
 → /proc/<pid>/maps — структура памяти процесса;
 → /proc/<pid>/smaps — детальное использование по сегментам памяти.
  • ❤ 8
  • 👍 2
  • 💯 2
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →