Разница между внутренней и внешней фрагментацией

Внутренняя и внешняя фрагментация
 

Разница между внутренней и внешней фрагментацией - тема, интересующая многих, кто любит совершенствовать свои компьютерные знания. Прежде чем понять эту разницу, мы должны увидеть, что такое фрагментация. Фрагментация - это явление, которое возникает в компьютерной памяти, такой как оперативная память (RAM) или на жестких дисках, что приводит к неэффективному использованию свободного пространства. Хотя эффективное использование доступного пространства затруднено, это также вызывает проблемы с производительностью. Внутренняя фрагментация возникает, когда распределение памяти основано на разделах фиксированного размера, где после того, как приложение небольшого размера назначено на слот, оставшееся свободное пространство этого слота теряется. Внешняя фрагментация возникает, когда память распределяется динамически, где после загрузки и выгрузки нескольких слотов здесь и там свободное пространство распределяется, а не является смежным.

Что такое внутренняя фрагментация?

Рассмотрим рисунок выше, где используется механизм выделения памяти фиксированного размера. Первоначально память пуста, и распределитель разделил память на разделы фиксированного размера. Затем три программы с именами A, B, C были загружены в первые три раздела, в то время как четвертый раздел все еще свободен. Программа A соответствует размеру раздела, поэтому в этом разделе нет потерь, но Программа B и Программа C меньше размера раздела. Таким образом, в части 2 и разделе 3 остается свободное место. Однако это свободное пространство непригодно для использования, поскольку распределитель памяти назначает только полные разделы программам, но не разделяет их. Эта потеря свободного пространства называется внутренней фрагментацией.

В приведенном выше примере это фиксированные разделы равного размера, но это может даже произойти в ситуации, когда доступны разделы различных фиксированных размеров. Обычно память или самое жесткое пространство делится на блоки, которые обычно имеют размер степеней 2, например 2, 4, 8, 16 байтов. Таким образом, программа или файл из 3 байтов будут назначены 4-байтовому блоку, но один байт этого блока станет непригодным для использования, что приведет к внутренней фрагментации.

Что такое внешняя фрагментация?

Рассмотрим рисунок выше, где выделение памяти выполняется динамически. При динамическом распределении памяти распределитель выделяет только точный необходимый размер для этой программы. Первая память совершенно свободна. Затем программы A, B, C, D и E разных размеров загружаются одна за другой и последовательно размещаются в памяти в указанном порядке. Затем, позже, программа A и программа C закрываются, и они выгружаются из памяти. Теперь в памяти есть три области свободного пространства, но они не являются смежными. Теперь будет загружена большая программа под названием Программа F, но ни одного из блоков свободного пространства недостаточно для Программы F. Добавление всех свободных мест определенно достаточно для Программы F, но из-за отсутствия смежности этот пробел непригоден для программы F. Это называется внешней фрагментацией.

В чем разница между внутренней и внешней фрагментацией?

• Внутренняя фрагментация происходит при использовании метода выделения памяти фиксированного размера. Внешняя фрагментация происходит при использовании метода динамического выделения памяти.

• Внутренняя фрагментация возникает, когда раздел с фиксированным размером назначается программе / файлу меньшего размера, чем раздел, в результате чего оставшееся пространство в этом разделе становится непригодным для использования. Внешняя фрагментация вызвана отсутствием достаточного смежного пространства после загрузки и выгрузки программ или файлов в течение некоторого времени, потому что тогда все свободное пространство тут и там распределяется.

• Внешняя фрагментация может быть добыта путем сжатия, когда назначенные блоки перемещаются в одну сторону, так что получается непрерывное пространство. Однако эта операция занимает много времени, и некоторые критически важные назначенные области, например системные службы, не могут быть безопасно перемещены. Мы можем наблюдать этот шаг сжатия на жестких дисках при запуске дефрагментатора диска в Windows.

• Внешнюю фрагментацию можно предотвратить с помощью таких механизмов, как сегментация и разбиение на страницы. Здесь дается логическое непрерывное пространство виртуальной памяти, в то время как на самом деле файлы / программы разбиты на части и размещены здесь и там.

• Внутренняя фрагментация может быть повреждена наличием разделов нескольких размеров и назначением программы на основе наилучшего соответствия. Тем не менее, внутренняя фрагментация еще не полностью устранена.

Резюме:

Внутренняя и внешняя фрагментация

И внутренняя фрагментация, и внешняя фрагментация - это явления, когда память тратится впустую. Внутренняя фрагментация происходит при выделении памяти фиксированного размера, тогда как внешняя фрагментация происходит при выделении динамической памяти. Когда выделенный раздел занят программой, которая меньше раздела, оставшееся пространство теряется, вызывая внутреннюю фрагментацию. Если после загрузки и выгрузки программ не может быть найдено достаточно смежного пространства, из-за того, что свободное место здесь и там распределено, это вызывает внешнюю фрагментацию. Фрагментация может происходить на любом устройстве памяти, таком как RAM, жесткий диск и флэш-накопители.