Bellek Yönetimi (Kısa)

İşletim sistemlerinde, gerçekleştirilen işlemlerin geçici olarak saklandığı merkeze ana bellek (RAM) denir. Ana bellek, giriş-çıkış aygıtlarının kolaylıkla ulaşabildiği bir bilgi deposudur. Merkezi işlem birimi (MİB), işlemleri ana bellekten alır ya da ana belleğe koyar.

Çok görevli sistemlerde, ana belleğin işletim sistemi kullanımı dışında olan kısım, farklı programların kullanımı için değişik parçalara (bitişken alanlara) bölünür.

Ana belleğin işlemler arasında paylaştırılmasına ana bellek yönetimi ya da bellek yönetimi (memory management) adı verilir.

İşletim sisteminin bu amaçla oluşturulan kesimine de bellek yöneticisi (memory manager) adı verilir.

Bellek yöneticisinin başlıca görevleri:

  1. Belleğin hangi parçalarının kullanımda olduğunu, hangi parçalarının (bitişken alanların) kullanılmadığını izlemek,
  2. Süreçlere (işlemlere) bellek tahsis etmek (allocate), tahsis edilen belleği geri almak (deallocate),
  3. Bellek ile disk arasındaki yer değiştirme (swap) işlemlerini gerçekleştirmektir.

Yer Değiştirme (Swap)

  • Çalışma zamanında süreçler bellek ile disk arasında sürekli yer değiştirir.
  • Süreçlerin bu şekilde disk ile bellek arasında yer değiştirilmesinin nedeni, belleğin boyutunun yetersiz olmasıdır.
  • Sisteme sunulan iş, o an sistemde işletimde olan işlerden daha öncelikli ise hemen işletime alınması gerekir.
  • Bu durumda, eğer ana bellekte yeterli alan yoksa, daha az öncelikli görevlerin, işletimlerini sonradan tamamlanmak üzere geçici olarak diske taşınması ve boş bellek alanı oluşturulması gerekir.
  • Bu yolla açılan boş bellek alanları yeni görevlerin tanımlanabilmesine ve öncelikli işlerin çalışmasına olanak sağlar.
  • Bellekte boş alan oluşturulunca işlemin buraya taşınmasına belleğe taşıma (swap in) denir.
  • İşletimi tamamlanmamış bir görevin, daha öncelikli görevlere ana bellekte yer açmak üzere geçici olarak diskteki özel alanlara (sanal bellek) taşınmasına diske taşıma (swap out) denir.
Bellek Yönetimi Swap
Bellek Yönetimi Swap

Yer Değiştirme yöntemi kullanıldığında ve ana bellekte yer açmak gerektiğinde, hangi görevin diske taşınması gerektiğine karar verilmelidir.
Bekleyen görevler arasında, bellek alanı elinden alınacak görevi seçmek için aşağıdaki kriterleri göz önünde bulunduran değişik algoritmalar kullanılır.

  1. Görev önceliği
  2. En uzun kaynak bekleme suresi kalan
  3. Ana belleği o ana kadar en cok kullanan

Bazı görevler, yerine getirdikleri hizmetlerin önemi nedeniyle sistemden uzaklaştırılamazlar.

Bellek Bölümleme

Ana bellek, birden fazla program arasında paylaştırılması ve bölünmelidir.

Bunu yapabilmek için kullanılan yöntemler:

  1. Değişmez Bölümlü Bellek Yönetimi
  2. Devingen Bölümlü Bellek Yönetimi
  3. Sayfalı Bellek Yönetimi
  4. Kesimli Bellek Yönetimi

Değişmez Bölümlü Bellek Yönetimi

Bu yöntemde ana bellek, işletim sistemi ile birden çok kullanıcı programı arasında paylaşılır. Ana bellek, bitişken, irili ufaklı, birden çok bölüm olarak düzenlenir.

Bir iş, işletime alınmadan önce, ana bellekte kendisine, boyuyla uyumlu bir bölüm atanır. İş, kendisine atanan bu bölümü, işletimi tümüyle sonlanana kadar korur.
Bölümler, bilgisayar sisteminin işletimi başlamadan önce belirlenen boylarını sistem işletime kapanana kadar korurlar.

Değişmez bölümlü bellek yönetiminde bölümler sabit bir büyüklükte olabilir.
Toplam büyüklüğü 64M, bölüm boyutları da 8M olan bir bellek alt tarafta görünmektedir.

Değişmez bölümlü bellek yönetimi
Değişmez bölümlü bellek yönetimi

10M bir işlem istek yolladığında 2 bölüm birleştirilecek ve bu istek kaydedilince 6M’lık bir iç parçalanma (internal fragmentation) oluşacaktır.

Devingen Bölümlü Bellek Yönetimi

Bu yöntemin temel ilkesi, bölümlerin, işlerin görevlere dönüştürülüp sisteme sunuluşları aşamasında, devingen olarak yaratılmasıdır. Bu yöntemde, ana bellekte kullanıcı işlemleri boşluklara bloklar halinde yerleştirilmektedir. Bu yöntemle bir işlem ana belleğe yükleneceği zaman, işlem için gerekli miktarda yeni bir bölüm oluşturularak, işlem oluşturulan yeni bölüme yüklenir.

Yeni bir işlem geldiğinde bu belleğe işlemin yeteceği kadar bir alan ayrılarak konumlandırılmakta ve işletim sistemi boş alanlar ve dolu alanlar ile ilgili bilgileri kayıt altına almaktadır. Bölümlerle ilgili bölüm başlangıç adresi, boyu gibi bilgiler tutulmaktadır. Bu yöntemde görevlere atanan bölümlerin yanı sıra, bu bölümler arasında kalan boş alanların da izlenmesi gereklidir.

Örnek : 64M ana belleğin aşağıdaki dört program için kullanılacağını varsayalım.

devingen_bolumlu_bellek_yonetimi

Başlangıçta ana belleğin işletim sistemi dışında boş olduğunu varsayalım. Programlar birbirleri ardına gerekli bölümleri oluşturarak ana belleğe yüklenirler.

devingen_bolumlu_bellek_yonetimi_d1

Bu durumda P4 işlemi için bellekte yeterli yer yoktur.
Yer değiştirme (swap) işlemiyle bir işlem sanal belleğe taşınır.devingen_bolumlu_bellek_yonetimi_d2
P2’nin yer değiştireceğini varsayalım.

P2’nin yer değiştirmesinden sonra bellekte 14M’lık bir bölüm serbest kalır.
Bu bölüme P4 yüklenebilir.

devingen_bolumlu_bellek_yonetimi_d3

P2’nin çalışması için tekrar ana belleğe yüklenmesi gerektiğini varsayalım.
Bu sefer P1’in bekleme durumunda olduğunu ve yer değiştireceğini varsayalım.
Yer değiştirme olayından sonra P2 tekrardan ana belleğe yüklenebilir.

devingen_bolumlu_bellek_yonetimi_d4

Ana Belleğin Parçalanması Sorunu

Ana belleğin parçalanması, bitişken alanların görevlere atanan bölümlerle, zaman içinde ufalanması olarak tanımlanır.
Bu sorun, kullanılan bölümler arasına sıkışmış, işletim için bekleyen görevlerin gereksinimini karşılayamayan boş alanların varlığıyla ortaya çıkar.
Belleğin parçalanması sonucu, bellekteki boş alanların toplamı, gerekli sığmaları karşılıyor olmasına karşın yeni görevlere yer sağlanamaz durumlarla karşılaşılır.

Görevlere sağlanan alanların konumlarının işletim sırasında değiştirilememesi parçalanma sorununun temel nedenleridir.
Bölüm içi yararlanılamayan boş alanlar iç parçalanma, bölümler arasında kalan boş alanlar ise dış parçalanma olarak adlandırılır.

Devingen bölümlü bellek yönetiminde bölümler arasında boş alanlar kalmakta, yani dış parçalanma oluşmaktadır.

Bitiştirme (Compaction)

Tüm bellek alanına dağılmış durumdaki bölümleri, yerlerini değiştirerek yan yana yerleştirip tek bir bitişken boş alan yaratma işlemine bitiştirme işlemi (compaction) denir.

Verilen örnekte, görevlere bellek ataması yapılması ve bir göreve atanan bellek konumunun işletim sırasında değiştirilememesi sonucu bitişkin alanların parçalandığı görülmektedir.

Bu sakıncalı durumun yok edilebilmesi için bitiştirme işlemi kullanılabilir.

Bitiştirme işlemiyle tüm kullanılmayan parçalar bir yerde toplanır. Bitiştirme işlemi, işlemciyi meşgul eden, zaman alan ve dolayısıyla bilgisayarı yavaşlatan bir işlemdir. Bitiştirme ihtiyacını azaltmak için farklı yerleştirme algoritmaları kullanılır.

Bitiştirme
Bitiştirme

Yerleştirme Algoritmaları

İşletim sistemi, bellekteki boşlukların bulunduğu listeden işlem için en uygun boşluğu belirlemede 3 başlıca strateji kullanır:

  1. İlk Uygun Yer Algoritması (First Fit)
  2. Sonraki Uygun Yer Algoritması (Next Fit)
  3. En Uygun Yer Algoritması (Best Fit)

İlk Uygun Yer Algoritması

Bir süreç (işlem) bellek isteğinde bulunduğunda, bellek baştan sona taranır ve süreç için gerekli olan bellek boyutunu sağlayan ilk boş alana yerleştirilir. Gerçekleştirmesi kolay ve en hızlı çalışan algoritmadır.

Sonraki Uygun Yer Algoritması

İlk uygun yer algoritması ile aynı mantıkta çalışır, fakat bu algoritma en son bulduğu uygun yer bilgisini saklar. Bir sonraki aramada belleğin en başından değil de, saklamış olduğu noktadan itibaren aramaya başlar. İlk uygun yer algoritmasına göre biraz daha yavaş çalışır.

En Uygun Yer Algoritması

Bu algoritma belleğin başından sonuna kadar tüm boş alanları tarar ve süreç için gerekli olan bellek boyutuna en uygun olan (en yakın boyuttaki) boş bellek alanına süreci yerleştirir.
En yavaş algoritma çalışan algoritmadır. Çok küçük ve kullanışsız parçalanmalara sebep olur.

Sayfalı Bellek Yönetimi

İç ve dış parçalanma sorununun üstesinden gelmek için sayfalı bellek yönetimi (paging) kullanılabilir. Fiziksel bellek üzerindeki aynı uzunluktaki bloklara çerçeve (frame), mantıksal bellek üzerindeki aynı uzunluktaki bloklara ise sayfa (page) denilmektedir. Bir sistemde çerçeve ve sayfa uzunlukları eşittir. Sayfaların uzunlukları donanım tarafından belirlenmektedir.

Sayfalı bellek yönetimi olan sistemlerde bellek adresi iki bölümden oluşmaktadır: sayfa numarası ve sayfa ofseti.
Sayfa numarası (p) fiziksel bellekteki her bir sayfanın taban adresini tutan sayfa tablosundaki göstergedir.
Sayfa ofseti (d) taban adresi ile birleştirilerek fiziksel bellekte sayfanın içerisindeki yerin belirlenmesinde kullanılır.

Mantıksal bellekteki bir adres, sayfa numarası ve sayfa ofsetinden oluşmaktadır. Bu adresin fiziksel bellekteki karşılığının bulunması için sayfa tablosu kullanılır.

Sayfalı Bellek Yönetimi
Sayfalı Bellek Yönetimi

İşletim sistemi bu yöntemi kullanırken boş çerçevelerin de listesini tutar.

sayfali_bellek_yonetimi_2

Kesimli Bellek Yönetimi

Kesimli bellek yönetiminde (segmentation) mantıksal adres alanı sayfalar yerine kesimlerden (bölümlerden) oluşmaktadır. Bir adres, hem kesim (bölüm) numarası (s) hem de kesim içerisindeki adresi belirten ofset numarasından (d) meydana gelmektedir.

Mantıksal adreslerin fiziksel adreslere dönüştürülmesi için kesim tablosuna ihtiyaç vardır. Kesim tablosu, her kesimin başlangıç (taban) adresi ve uzunluğu bilgisini tutmaktadır. Böylece her kesimin başlama ve bitiş (tavan adresi) noktaları hesaplanabilir.

Bir mantıksal adresin ofset değeri, taban ve tavan değerleri arasında olmalıdır. Eğer ofset değeri fazla olursa mantıksal adresin kesimi aşması bellek erişim hatası (segment fault) oluşur. Eğer ofset değeri belirtilen sınırlar arasında ise kesim taban değeri ile ofset adresi toplanarak, fiziksel adres oluşturulmaktadır.

Fiziksel Adres (FA) = Kesim Taban Adresi (TA) + Ofset (d)

Sayfalı ve Kesimli Bellek Yönetimleri Arasındaki Farklar

- Kesimli bellek yönetiminin amacı adres alanının mantıksal olarak dilimlenmesidir. Sayfalı bellek yönetiminde ise bellek fiziksel olarak dilimlenip oluşturulur.
- Sayfalar makine donanımına bağlı olarak sabit boyuttadır. Bölümler ise değişken boyuttadır.
- Program adresinin sayfa ve ofset numaralarına ayrılması donanımın bir işlevidir. Ofset numarasının sınırı aşması otomatik olarak sayfanın çevrilmesine sebep olur. Oysa kesim ve ofset numarasında bir sınır aşması söz konusu değildir. Bu durumda bellek erişim hatası oluşur.

Kesimlemenin Sayfalama ile Birlikte Kullanılması

Kesimli bellek yönetimi ile sayfalı bellek yönetimi birlikte kullanılabilir. Bu yöntemde bölümler (kesim) kendi içerisinde sayfalara ayrılmaktadır. Mantıksal adres üç parçadan oluşmaktadır: kesim numarası, sayfa numarası ve ofset adresi.

Kesimlemenin Sayfalama ile Birlikte Kullanılması
Kesimlemenin Sayfalama ile Birlikte Kullanılması

Fiziksel adres hesaplanırken kesim tablosu, sayfa tablosu ve ofsete ihtiyaç vardır.

Kesimlemenin_Sayfalama_ile_Birlikte_Kullanilmasi_2

 

7,402 total views, 1 views today