TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.81K subscribers
Post #1583 1.83K
Фрагментация памяти. Часть 2: Разрозненные свободные блоки - внешняя фрагментация памяти. Описание (к рисунку из предыдущего поста)

Пусть у нас есть куча блоков памяти, некоторые из которых используются, некоторые свободны, и процесс размером 50 КБ, который нужно где-то разместить. Проблема здесь в том, как разместить этот процесс размером 50 КБ в этой разбросанной памяти.
Обратите внимание на свободные блоки: 10 КБ, 5 КБ, 15 КБ, 5 КБ, 10 КБ и 5 КБ. Если их сложить, то получится 50 КБ свободного места. Похоже, что это достаточно для процесса с потребностью в 50 КБ
Но эти свободные блоки не находятся в одном непрерывном куске. Они разбросаны, разделены выделенной памятью.

Вот как выглядит внешняя фрагментация: достаточно общего пространства, но не в едином куске, достаточно большом для использования. Самый большой свободный блок — 15 КБ, что слишком мало для 50 КБ.
Этот тип фрагментации происходит в системах динамической памяти, где процессы приходят и уходят. По мере того, как память выделяется и освобождается, вы в конечном итоге получаете эти небольшие, разбросанные свободные пространства.
Это как куча маленьких пустых мест на парковке — места в целом предостаточно, но ни одного достаточно большого для большого грузовика.
На схеме показано, как эти промежутки (10 КБ, 5 КБ, 15 КБ и т. д.) не могут быть объединены для размещения процесса объемом 50 КБ, в результате чего он не может быть запущен, даже если технически имеется достаточно свободной памяти.
Один из способов исправить это — сжатие, когда вы перемещаете всю выделенную память вместе, чтобы создать больший свободный блок. Но это требует времени и ресурсов, и не все системы могут это сделать.
Другой подход заключается в использовании более эффективных стратегий распределения, таких как «наилучшее соответствие» (best-fit) или «первое соответствие» (first-fit), чтобы уменьшить частоту возникновения подобных ситуаций.
  • 👍 6
  • 🥰 1
  • 👏 1
  • 🍌 1
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 →