Internal fragmentation ile external fragmentation arasındaki fark nedir? Paging ve segmentation bunları nasıl etkiler?

Cevap

Internal fragmentation: bir process'e ihtiyacından büyük sabit boyutlu blok verildiğinde bloğun içinde kullanılmayan alan kalmasıdır. External fragmentation: toplamda yeterli boş bellek olduğu hâlde boş alanların dağınık ve bitişik olmaması yüzünden büyük bir isteğin karşılanamamasıdır.

Örnekler

  • Internal: sayfa boyutu 4 KB, process 4097 byte istiyor -> 2 sayfa (8 KB) verilir, yaklaşık 4 KB boşa gider.
  • External: bellekte 3 adet 10 KB'lık dağınık boşluk var (toplam 30 KB) ama 25 KB'lık bitişik istek karşılanamaz.
InternalExternal
Nerede oluşurAyrılan bloğun içindeBloklar arasında
NedeniSabit boyutlu ayırmaDeğişken boyutlu ayırma ve serbest bırakma
Tipik kaynakPaging, slab/size-class allocator'larSegmentation, contiguous allocation, heap'te malloc/free
ÇözümDaha küçük blok/sayfa boyutu, size class'ları iyi seçmekCompaction, paging, buddy/slab allocator

Paging ve segmentation

  • Paging: fiziksel bellek sabit boyutlu frame'lere bölünür; bir process'in sayfaları herhangi bir boş frame'e yerleşebilir. Bu external fragmentation'ı ortadan kaldırır, karşılığında son sayfada küçük bir internal fragmentation kalır.
  • Segmentation: bellek mantıksal birimlere (code, stack, heap) değişken boyutta bölünür; internal fragmentation yoktur ama external fragmentation oluşur.

Uygulama düzeyinde

Uzun süre çalışan sunucularda heap fragmentation bellek kullanımını yavaşça büyütebilir. jemalloc / tcmalloc gibi allocator'lar size class ve arena yaklaşımıyla bunu azaltır. Java/.NET'teki compacting GC'ler nesneleri taşıyarak external fragmentation'ı temizler.

Compaction neden her zaman çözüm değil?

Bellekteki blokları kaydırmak pahalıdır ve adreslerin yeniden haritalanabilmesini (relocation) gerektirir; C gibi ham pointer kullanan dillerde heap compaction yapılamaz.

  1. Concurrency ile parallelism arasındaki fark nedir?Kolayİşletim SistemleriYazılım Müh.
  2. Race condition nedir? Bir örnekle nasıl önleneceğini gösterin.Ortaİşletim SistemleriYazılım Müh.
  3. Context switch nedir? Neden maliyetlidir?Ortaİşletim SistemleriYazılım Müh.
  4. Virtual memory ve paging nasıl çalışır? Page fault nedir?Zorİşletim SistemleriYazılım Müh.
  5. Mutex ile semaphore arasındaki fark nedir?Ortaİşletim SistemleriYazılım Müh.
  6. Deadlock nedir? Oluşması için gereken dört koşul nelerdir ve nasıl önlenir?Zorİşletim SistemleriYazılım Müh.

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle