Різниця між внутрішньою та зовнішньою фрагментацією - тема, яка цікавить багатьох, хто любить вдосконалювати свої знання на комп’ютері. Перш ніж знати цю різницю, ми повинні побачити, що таке фрагментація. Фрагментація - це явище, яке виникає в пам'яті комп'ютера, наприклад, оперативної пам'яті з випадковим доступом (RAM) або жорстких дисках, що спричиняє марнотратство та неефективне використання вільного місця. Хоча ефективне використання наявного простору перешкоджає, це також спричиняє проблеми з продуктивністю. Внутрішня фрагментація виникає, коли розподіл пам'яті базується на розділах фіксованого розміру, де після того, як додатку невеликого розміру буде призначено слот, витрачається решта вільного простору цього слота. Зовнішня фрагментація виникає тоді, коли динамічно розподіляється пам'ять, де після завантаження та вивантаження декількох слотів тут і там вільний простір поширюється, а не є суміжним.
Розгляньте малюнок вище, де дотримується механізм розподілу пам'яті фіксованого розміру. Спочатку пам'ять порожня, і розподільник поділив пам'ять на розділи фіксованого розміру. Потім пізніше три програми з назвою A, B, C були завантажені в перші три розділи, поки четвертий розділ ще вільний. Програма A відповідає розміру розділу, тому в цьому розділі немає марних витрат, але програма B і програма C менші за розмір розділу. Тож у частині 2 та 3 розділі залишається вільний простір. Однак цей вільний простір є непридатним, оскільки розподільник пам'яті призначає програмам лише повні розділи, але не має їх частин. Ця втрата вільного простору називається внутрішньою фрагментацією.
У наведеному вище прикладі це фіксовані перегородки однакового розміру, але це може статися навіть у ситуації, коли доступні перегородки різного фіксованого розміру. Зазвичай пам'ять або найскладніший простір поділяється на блоки, які зазвичай мають розмір потужностей 2, таких як 2, 4, 8, 16 байт. Таким чином, програма або файл з 3 байтів буде призначений блоку 4 байти, але один байт цього блоку стане непридатним, викликаючи внутрішню фрагментацію.
Розгляньте малюнок вище, де розподіл пам’яті здійснюється динамічно. При динамічному розподілі пам’яті розподільник виділяє тільки потрібний розмір для цієї програми. Перша пам'ять повністю вільна. Потім програми A, B, C, D і E різного розміру завантажуються одна за одною і постійно поміщаються в пам'ять у тому порядку. Потім пізніше програми A і Program C закриваються, і вони вивантажуються з пам'яті. Зараз у пам'яті є три зони вільного простору, але вони не є суміжними. Тепер буде завантажена велика програма під назвою Program F, але жодного блоку вільного простору недостатньо для програми F. Додавання всіх вільних просторів, безумовно, достатньо для програми F, але через відсутність суміжності цей простір є непридатний для програми F. Це називається Зовнішня фрагментація.
• Внутрішня фрагментація виникає, коли використовується техніка розподілу пам'яті фіксованого розміру. Зовнішня фрагментація виникає при використанні динамічної техніки розподілу пам'яті.
• Внутрішня фрагментація виникає, коли розділ фіксованого розміру присвоюється програмі / файлу меншого розміру, ніж розділ, що робить решту місця в цьому розділі непридатною. Зовнішня фрагментація пояснюється відсутністю достатнього суміжного простору після завантаження та вивантаження програм чи файлів на деякий час, оскільки тоді весь вільний простір розподіляється тут і там.
• Зовнішня фрагментація може бути видобута шляхом ущільнення, коли призначені блоки переміщуються в одну сторону, щоб отримати суміжний простір. Однак ця операція потребує часу, а також певні критично відведені області, наприклад, системні служби, не можуть бути безпечно переміщені. Ми можемо спостерігати цей крок ущільнення, виконаний на жорстких дисках при запуску дефрагментатора диска в Windows.
• Зовнішню фрагментацію можна запобігти механізмами, такими як сегментація та пейджинг. Тут дається логічний суміжний простір віртуальної пам'яті, тоді як насправді файли / програми розбиті на частини і розміщуються тут і там.
• Внутрішня фрагментація може бути пошкоджена розділами декількох розмірів та призначенням програми на основі найкращого підходу. Однак внутрішня фрагментація все ще не повністю усунена.
Підсумок:
Як внутрішня роздробленість, так і зовнішня фрагментація - явища, де пам’ять витрачається. Внутрішня фрагментація відбувається при розподілі пам'яті фіксованого розміру, тоді як зовнішня фрагментація відбувається в динамічному розподілі пам'яті. Коли виділений розділ зайнятий програмою, меншою за розділ, решта місця залишається витраченою, викликаючи внутрішню фрагментацію. Коли після завантаження та вивантаження програм не можна знайти достатньо сусіднього простору, через те, що тут і там розподіляється вільний простір, це викликає зовнішню фрагментацію. Фрагментація може виникати на будь-якому пристрої пам'яті, такому як оперативна пам'ять, жорсткий диск та флеш-накопичувачі.