Loading

Ana Bellek Yönetimi

AİB ve ana bellek en önemli sistem kaynaklarıdır. AİB’nin görevler arasında paylaşımı, ana bellek paylaşılmaksızın gerçekleşemez. Ana belleğin, görevler arasında paylaştırılması işlevini karşılayan kesime bellekyönetici denir. Bellek yöneticisinin üç ana görevi vardır. Bunlar:

  • Programların ve işlenen verilerin ana bellekte yer alacakları konumların belirlenmesi,
  • Programların gereksinim duyduğu alanların sağlanması ve bu bellek alanlarının düzenlenmesi
  • Programların kendine ayrılan alanların dışına tasmalarının denetlenmesi

Şeklindedir. Bu görevleri yerine getirmek için çeşitli yönetim yöntemleri vardır. Şimdi bunlara kısaca değinelim.

Tek ve bitişken bölümlü bellek yönetimi

Bu yönetimde bellekte işletim sisteminin dışında kalan bölüm parçalanmadan tümüyle tek bir işe atanır. Bellek yönetiminin en önemli görevi, kullanıcı programlarının kendilerine atanan bu bellek bölümünden dışarı çıkmasını ve işletim sistemini bozmasını engellemektir.  Bu görevi de adres yazmacı adında bir yazmaç tutarak ve yazmaçtaki adresin dışına çıkmasını engelleyerek yerine getirir.

 

sekil-1 Şekilde görüldüğü gibi ana bellekte, işletim sistemimin bulunduğu bölge dışı tek bir programa atanmıştır. AİB de bellek yönetimi gerçekleştirilir. Adres yazmacı programın adreslere ulaşmak için kullandığı yazmaçtır. Sınır yazmacı ise İşletim sistemleri bölümünden Kullanıcı programı bölümüne geçiş adresini tutmaktadır. Karşılaştırıcı her işlemde iki yazmacı karşılaştırır ve programın işletim sistemi alanına girmesini engeller.

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

Tek is düzeninden çok is düzenine geçebilmek için ana belleğin, eşanlı olarak isler arasında paylaşılması yöntemidir. Değişmez bölümlü bellek yönetiminde ana bellek, çeşitli boyutlarda bölümlere ayrılır. Bu bölümlerin boyutunu programcı belirler ve işletim boyunca boyut değişmez. Ve her bir bölüm yalnızca tek bir işe atanabilir.

 sekil-2 Bölümleri yönetmek için Bölüm Tanım Çizelgesi adında çizelge tutarız. Bu çizelgede, tüm bölümlerin boyları, giriş adresleri ve kullanımda olup olmadıklarını gösteren bir durum biti bulunur.

 

sekil-3 Kullanıcı programlarının, işletim sistemine ayrılan alanı bozmalarının engellenmesinin yanında, birbirlerinin bellek alanlarını bozmaya karsı da korunması gerekir. Bu amaçla, ana işlem biriminde bir taban, bir de tavan yazmacı öngörülür. Taban ve tavan yazmaçları, AİB’yi kullanan isin, ana belleğe erişimde asmaması gereken alt ve üst adres değerlerini tutarlar. Her bellek erişim döngüsünde, erişilen bellek sözcük adresi bu iki değerle karşılaştırılarak tasma denetlenir.

 

Değişmez bölümlü bellek yönetimi bazı sorunlar taşımaktadır. Bunlardan biri bölümlerin boyları ve konumlarının programcı tarafından ayarlanması gerekliliğidir. Programcı sisteme sunulan işlerin bir istatistiğini bilmelidir. Diğer sorun ise belleğin verimsiz kullanma sorunudur. Bir bölüme yerleştirilen işin, bölüm içinde kullanmadığı kısım diğer islere ayrılamaz. Ayrıca büyük bellek gereksinimi olan bir iş geldiğinde, uygun bellek bölümü bulunamayabilir. Bu durumda daha büyük bölümler oluşturmak için programcı müdahalesi gerekebilir.

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

Değişmez bölümlü yönetimin aksine bölümlerin konum ve boyları, işlerin görevlere dönüştürülüp sisteme sunuluşları aşamasında, dinamik olarak yaratılır. Değişmez bölümlüde olduğu gibi bölüm tanım çizelgesi kullanılır. Buna ek olarak boş alanlarda bu yönetimde yönetildiği için boş alan çizelgesi adında bir çizelgede tutulur.

 sekil-4 Yeni bir görev geldiğinde, görevin ihtiyacına göre boş alan çizelgesinden yararlanılarak yeni bir alan göreve atanır. Atandıktan sonra bölüm tanım çizelgesi ile boş alan çizelgesi günlenir. Alan boyu değişken olduğundan görevlere bu alanlar parçalanıp atandıkça kullanılamayacak küçüklükte boş alanlar kalabilir. Buda belleğin verimsiz kullanımına sebep olur. Bu sorunu çözmek için boş alanların birleştirilmesi işlemi yapılabilir. Fakat bu işlem çoğu zaman çeşitli sorunlar üretir.

Sayfalı Bellek Yönetimi

Değişken bölümlü bellek yönetiminde boş alan birleştirme sorunundan bahsetmiştik. Bu sorunla uğraşmamak için geliştirilen bir diğer yöntem sayfalı bellek yönetimidir. Sayfalı bellek yönetimi görevlere atanacak bitişken bellek parçalarını küçülterek kullanılmayan en küçük parçayı bile değerlendirebilmeyi amaçlar. Şimdi birkaç bilgi verdikten sonra şekil üzerinde çalışalım.

Sayfalı bellek yönetiminde görevler, birbirini izleyen, eşit uzunlukta program sayfalarından oluşur ve bu sayfalara mantıksal adresler atanır. Bu adreslerin iki birleşeni bulunur: (s,x). Bu birleşenlerden ilki (s) sayfa numarası, ikincisi ise (x) sayfa başına göreli adrestir.

Hangi program sayfasının, hangi bellek sayfasında bulunduğunu belirleyebilmek amacıyla, her görev için bir sayfa tanım çizelgesi tutulur.

Hangi bellek sayfasının dolu, hangisinin bos olduğunu anlamak amacıyla, tüm ana bellek için bellek tanım çizelgesi tutulur.

sekil-5

Yukarıdaki şekilde verilen bilgilerin olduğu bir yönetimi varsayarak örnek üzerinde çalışalım. Mantıksal adres olarak “0001101000100011” gibi bir değer gelmiş olsun ve programın anabellekte nereye erişeceğini bulalım. Öncelikle mantıksal adresi ikiye bölüp sayfa numarası ve sayfa içi göreli adresi bulmamız gerekmektedir. Sayfa boyu 2KB olarak verilmiş. 2KB ikilik olarak 2^11 e denk olduğu için mantıksal adresteki 11 bit sayfa içi göreli adresi kalan bitler ise sayfa numarasını vermektedir. O halde 00011 ve 01000100011 şeklinde mantıksal adresi bölmüş olduk. 16’lık tabana dönüştürdüğümüzde 3|223 sayısını elde etmiş oluruz. Erişeceğimiz adres 3. sayfada bulunan adresten 223 sıra sonraki adrestir. 3. sayfada 02C0C00 başlangıç adresi vardır. 223 ile topladığımızda ulaşacağımız adresi 02C0E23 olarak elde ederiz. Yani “0001101000100011” mantıksal adresin karşılığı ana bellekte 02C0E23. satırdır.

Sayfalı bellek yönetiminin olum yanları olarak;

  •  anabelleği parçalanma yönünden daha etkin şekilde kullanması,
  • Görevlere bitişken alan atama zorunluğunun ortadan kalktığı için, bitiştirme işlemlerinin ortadan kalkmasını sağlaması,
  • Bellek eşit uzunlukta sayfalar halinde düzenlendiği için, bellek atama işlemleri yalın işlemler olarak yapılabilme imkânını vermesi,

Verilebilir. Olumsuz olarak ise ;

  • Her görev için tutulan sayfa tanım çizelgeleri ile bellek tanım çizelgesi, harcanan bellek alanı yönünden işletim yükünü artırması,

Verilebilir.

Kesimli Bellek Yönetimi:

Sayfalı gibi kesimli bellek yönetimi de görevlere atanacak bitişken bellek parçalarını küçülterek kullanılmayan en küçük parçayı bile değerlendirebilmeyi amaçlar. Bunu program adres evrenlerini kesimlere ayırarak yapar. Bu kesimlere örnek olarak ana yordamın bulunduğu bölüm, dizi dizgi gibi verilerin topluca bulunduğu bölüm, yığıt olarak kullanılan bölüm örnek verilebilir. Sayfalı ve kesimli bellek yönetimleri birbirlerine çok benzerler fakat programların mantıksal adres evrenleri; sayfalı bellek yönetiminde eşit uzunlukta sayfalara, kesimli bellek yönetiminde ise değişken uzunlukta, mantıksal bütünlüğü taban alan kesimlere ayrılır.

sekil-6 Şekilde görüldüğü gibi program üç adet kesim tanımlamış ve hepsini ana bellekte ayrı bir yerde tutmuş. Başlangıç adreslerini de üç ayrı yazmaca atamış. Ulaşmak istediği kesim içindeki veri için önce kesim başlangıç adresini elde eder, sonra kesim içi adresini bu adresle toplayıp ulaşmak istediği verinin ana bellekteki yerini tespit eder.

Görevlerin kesimler biçiminde düzenlenmesi, ana bellekteki parçalanma sorununu sayfalı bellek yönetiminin etkinliği düzeyinde çözemez. Kesimli bellek yönetimiyle de, dönem dönem bitiştirme işlemlerine başvurma gereği bulunur. Ayrıca ana belleğin değişik uzunlukta kesimler biçiminde düzenlenmesi bellek atama yöntemlerini karmaşıklaştırabilir.

Leave a Reply

Your email address will not be published. Required fields are marked *