Published on

Bellek Yönetiminde Bellek Tahsisi

Authors
  • avatar
    Name
    Alperen Önal
    Twitter

Bir programı çalıştırmak istediğimiz zaman işletim sistemi tarafından ilgili programın 2.cil bellekteki adresinin belirlenerek anabellege aktarılması gerekmektedir. Anabellekte, process için gerekli olan alanı tahsis etmek için çeşitli bellek yönetimi algoritmaları kullanılır.

Her biri, sistem belleği içinde uygun bir blok bulmak için farklı stratejiler kullanır ve işlemci için gereken bellek alanını tahsis etmek için farklı yaklaşımlar benimser. Bu algoritmalar, işletim sistemi tarafından bellek bloklarının tahsis edilmesi ve serbest bırakılması için kullanılır.

Bellek tahsisi 2’ye ayrılır:

  1. Statik Bölümleme: Statik bölümleme, belleği önceden tanımlanmış sabit boyutlu parçalara böler. Bu parçalar, önceden belirlenmiş işlemci veya işlemlere tahsis edilir. Her işlem, kendisine ayrılmış olan sabit boyuttaki bellek bölümünü kullanır.

  2. Dinamik Bölümleme: Dinamik bölümleme, belleği değişken boyutlarda parçalara böler. Bellek ihtiyacı olan her işlem, belleğe ihtiyacı olan kadar alanı dinamik olarak alır. Bu yöntemde, bellek bölümleri işlemci taleplerine göre dinamik olarak oluşturulur ve serbest bırakılır.

Dinamik Bölümlemede Kullanılan Algoritmalar

  • First Fit: Bellek baştan sırasıyla taranır ve process’i yerleştirmek için ilgili process’in boyutuna uyumlu olan ilk boş bellek bloğuna yerleştirilir.
  • Best Fit: Bellek sırayla taranır ve ilgili process, process’in boyutuna en uygun olan ilk boş bellek bloğuna yerleştirilir.
  • Worst Fit: Bellek sırayla taranır ve process için en büyük boş bellek bloğuna yerleştirir.
  • Next Fit: Bellekte bir önceki process’in yerleştirildiği bloktan başlayarak belleği taramaya devam eder ve işlem için uygun ilk boş bloğa yerleştirir.

Buddy Sistemleri

  • Fibonacci Buddy: Fibonacci buddy sistemi, Fibonacci sayılarına dayanır ve belleği bu sayıların boyutlarına göre böler.
  • Binary Buddy: Bellek blokları 2’nin üslerine göre boyutlandırılır ve işlemcilere tahsis edilir. Bellek talepleri, 2’nin üslerine göre uygun boyuttaki bellek bloklarına atanır.
  • Weighted Buddy System: Bu sistemde, her bellek bloğuna bir ağırlık atanır ve bellek talepleri, bu ağırlıklara göre uygun bloklara tahsis edilir.
  • Tertiary Buddy System: Bu sistemde, bellek blokları üç gruba ayrılır: küçük, orta ve büyük boyutlu bloklar. Bellek talepleri, bu üç gruptan uygun boyuttaki bloklara atanır.
Buddy Sistemi

Buddy algoritmalarında en çok bilineni Binary Buddy olduğu için onun ile alakalı bir örnek yapalım.

Örnek

Bilgisayarda 1MB RAM var. Ve biz 100kb’lik bir process için alan ayırmak istiyoruz.

Örnek

1MB = 1024KB’dir. Toplam alanımızı her seferinde 2’ye bölerek en uygun olan alana ulaşmaya çalışıyoruz.

Aşağıda göründüğü gibi en son 128KB’ye ulaşabiliyoruz. 28KB burada internal fragmentation (iç parçalanma) oluyor. Yani 128KB’nin 100KB’sini process’imiz için ayırırken 28KB’si israf oluyor.

Bölünmüş hali

Bölünmüş hali:

Bölünmüş hali

Bu soruyu tree mantığı ile izah edecek olursak:

Tree mantığı

Kaynaklar: