Bellek Yönetim Birimi Bilgisayar İşletim Sistemleri BLG 312 Bellek Yönetimi - 1 bellek kritik bir kaynaktır etkin kullanılmalı paylaşılmalı bellek yönetim birimi var Bellek Yönetim Biriminin Temel Amaçları yeniden yerleştirme (relocation) prosese ayrılan fiziksel bellek her çalışmada farklı olabilir fiziksel ve mutlak adresler kullanılmaz koruma (protection) prosesler birbirlerinin bellek bölgelerine erişemez paylaşma (sharing) prosesler bazı bellek alanlarını paylaşmak isteyebilir (örn. kod / veri paylaşımı) Bellek Yönetim Biriminin Temel Amaçları mantıksal organizasyon (logical organization) geleneksel sistemlerde tek boyulu lineer adres uzayı (0 max) programlar modüller / prosedürler şeklindedir programın mantıksal bölümleri adres yönetimine yansırsa daha etkin olur fiziksel organizasyon ana bellek ve ikincil bellek arası aktarım konuları Bellek Yönetim Fonksyonları adlandırma fonksyonu (naming) (N) kullanıcının tanımladığı değişken referansın yapıldığı birim ilişkilendirmesi bellek fonksyonu (memory) (M) değişkenler fiziksel adres dönüşümü içerik fonksyonu (contents) (C) bellek adresinden taşıdığı değerin üretilmesi N M C kullanıcı değişkeni sistem değişkeni bellek adresi değer (sembol tablosu) Bellek Yönetim Fonksyonları fonksyonların zamanları var M bağlanma (link) aşamasında N yüklenme (load) aşamasında C bellek atamasıyla değişikliğe uğrar bağdaştırma (binding) bağdaştırma zamanı M ve N sistem açısından önemli erken/geç bağdaştırma (early/late binding) 1
Adlandırma aynı değişken adı farklı bağlamlarda farklı yerlere işaret edebilir örnek: aynı isimli yerel değişkenler isimleri farkli birimlerle bağdaştırma problemini derleyici çözer örnek program: kullanıcı ve sistem (derleyici) tarafında tanımlı veri yapıları ve prosedürler var programın ayrı ayrı derlenen parçaları: modül her biri 0 adresine göre kodlanmış modüller birbirlerinin veri ve prosedürlerine erişir sadece veri ve prosedür adlarını bilir (taban adresi belli değil) bağlanma aşaması: program belleğe yüklenirken adres bilgisinin sağlanması gerek bağlanma 3 şekilde: tüm prosedürler derleme öncesi belli; bağlanmayı derleyici gerçekleştirir yüksek düzeyli diller destekler derleyicinin ürettiği kod doğrudan belleğe yüklenir veya sistem rutinleri ile bir bağlanma aşaması geçirir önceden derlenmiş modüller belleğe yüklenirken bağlanır bağlanma derleme ve yüklemeden ayrı bir adım linking loader iki adımı birleştirir 0 adresine göre kodlanmış adresleri düzenlenmesi (relocation) bağlanma yürütme anına ertelenir (late-binding) rutinler çağrıldıkça bağlanır bağlanma yöntemleri donanıma bağımlı modüller 0 adresine göre göreceli derlenir (relocatable module) modül belleğe yüklenirken başlangıç adresi taban saklayıcısına yüklenir diğer adresler toplanarak hesaplanır Bağlayıcı Yükleyici (Linking Loader) tek geçişli yükleme sırasında bağlama da gerçekleşir her modül şu bilgileri yükleyiciye bildirir: modül içi tanımlı ve diğer modüllerin çağırabildiği isimler dışarıda tanımlı olan ama modül içinde kullanılan isimler bağlanmış modül içinde diğerleri ile bağlandıktan sonra yeniden hesaplanacak adresler 2
Bağlayıcı Yükleyici (Linking Loader) yükleyici dışarıda tanımlı isimler için tablo oluşturur isim önceden yüklenmiş bir modülde ise tabloda isme karşılık bağlanmış modülün başına göre göreceli adresi isim yüklenmemiş bir modülde ise adres belli olunca hesaplanacaklar listesine eklenir Bağlayıcı Yükleyici (Linking Loader) modüller belleğe birbirini izler şekilde yüklenir adres referansları önceki modüle göre ötelenmeli İki Aşamalı Yöntem bağlanma ve yüklenme ayrı adımlar önce bağlanma sonucunda bağlı tek bir modül (load module) tüm bağlanma işlemleri yapılmış yükleyici ayrı çalışır Yöntemlerin Karşılaştırılması ayrı iki adım olmasının avantajları programın her koşturulmasında bağlanma gerekmez sadece yükleyici bellekte daha az yer kaplar problem: bağlanma sonrası modüller dış ortama yazılır; yükleyici okumak zorunda G/Ç için zaman kaybı sık değişen veya az koşturulan programlar için tek aşamalı yöntem daha iyi çözüm Bellek Ayırma Yöntemleri bellek ayırma: programın bellek ihtiyacının karşılanması programın tamamının bellekte olması gerekli değil gerektikçe yüklenir daha etkin bellek kullanımı daha yüksek maliyetli Statik Dinamik Bellek Ayırma bağlanma zamanı göz önüne alınırsa: mutlak adresli programlama program yazılırken mutlak adresler verilir simgesel programlama derleyici / birleştirici simgesel isimlerden bellek adresleri üretir 3
Statik Dinamik Bellek Ayırma statik: adresler belleğe yüklenirken belli dinamik bu adreslere bellek şu şekillerde ayrılabilir: sabit mutlak adresler üretilir bağlanma ve yüklenme derleyici içinde hızlı) yeniden yerleştirilebilir (relocatable) adresler mutlak adresleri yükleyici belirler yürütme sırasında adresler değişmez ilk yüklemeden sonra kod bellekte değişmez yeniden yerleştirilebilir adresler referans anında mutlak değer alır Örtüşme (Overlay) iki modül aynı bellek alanına yerleştirilebilir: her ikisinin de aynı anda bellekte olması gerekli değilse, bağlam saklanabiliyorsa gerçek bellek kapasitesinden daha çok bellek isteyen programlar koşturulabilir bağlayıcı ve yükleyicinin işi daha karışık örtüşme tabloları: istenen modül yoksa yüklenmeli modül örtüşme yapılacak alana sığmayabilir! örtüşme tabloları programcı tarafından yapılmalı Modern işletim sistemlerinde sayfalama + segmanlama + görüntü bellek kullanılıyor. programlar mantıksal bölümlerden oluşur segmanlama programın adreslemesinin lojik yapısını yansıtır program segmanlara ayrılır segman boyu farklı olabilir örneğin segman veri alanı veya prosedür olabilir adres = segman başl. adresi + segman içi konum programın segmanları bellekte ayrı yerlerde olabilir diskte de olabilir; gerekince yüklenir adres hesabı özel donanım gerektirir adres: (s,d) s: segman adı d: kayıklık her proses için segman tablosu segman bellekte mi? bayrağı segmanın taban adresi segmanın uzunluğu (limit) erişim hakları bitleri segman tablosu başı bir saklayıcıda tutulur segman tablosu saklayıcısı + s (s,d) segman tablosu bayrak koruma bitleri limit taban + d Bellek (sekizli) segman başı limit (sekizli sayısı) adres hesabı öncesi bayrak kontrol edilir bellekte yoksa segman hatası kesme olur segman belleğe yüklenir yer yoksa bir segman bellekten atılır segman boyları eşit olmayabilir bellekte parçalanma segman tablosu saklayıcısı koşan prosesin segman tablosunu gösterir segman tablosu başı saklanır 4
segmanlama faydaları örtüşme işini sistem yapar bağlanma: modüller segmanlar olarak yazılır yüklenme segman tablosu doldurulmasıyla olur paylaşılabilir kodların paylaşımı daha kolay segman bilgileri biren fazla tabloya konur adresleme donanım ile yapılıyor ama bellek disk akışı düzenlemeli (Paging) bellek sabit uzunluklu fiziksel bloklara ayrılır sayfa çerçevesi program ve veri alanları da aynı sabit uzunluklu lojik sayfalara ayrılır sayfa her çerçeveye bir sayfa yüklenir adres: (p,d) p: sayfa adı d: sayfa içindeki kayıklık her prosesin sayfalarına ilişkin bilgiler sayfa tablosunda sayfa tablosundaki bilgiler: sayfa bellekte mi? bayrağı sayfanın yeri (bellek/ikincil bellek adresi) erişim hakları için koruma bitleri sayfa tablosu saklayıcısı koşan prosesin sayfa tablosuna işaret eder sayfa tablosu saklayıcısı + (p,d) sayfa tablosu bayrak koruma bitleri Mantıksal Adres sayfa adresi d Bellek (istenen göz) sayfa başı adres hesabı öncesi bayrak kontrol edilir bellekte yoksa: sayfa hatası kesmesi (page fault) sayfa ikincil saklama alanından ana belleğe taşınır koruma bitleri kontrol edilir boş çerçeveler bilgisini işletim sistemi tutar ana bellek ikincil bellek sayfa aktarımı = sayfa trafiği nın yararları: segmantasyonun sağladığı yararlar aynen var adres hesabı donanım ile (hızlı) ve kullanıcıya saydam bellek ayırma daha basit (sayfa boyu sabit) Sorunlar sayfa boyu programın mantıksal biriminin tamamını içerecek büyüklükte olmayabilir parçalanma (fragmentation) : bellekte kullanılmayan alanlar oluşur 5
dış parçalanma (external fragmentation) bloklar arasında boşluklar oluşması iç parçalanma (internal fragmentation) blok içinde boşluk oluşması sayfalama varsa dış parçalanma oluşamaz sayfa boyu belirlemede dikkat edilecekler: sayfa trafiği iç parçalanma büyük sayfa boyu ana bellek ikincil bellek aktarımlarında bir büyük sayfa aktarmak daha kolay proses daha az sayfadan oluşur sayfa trafiği azalır iç parçalanma artar küçük sayfa boyu sayfa trafiği artar iç parçalanma azalır Sonuç: iç parçalanma ve sayfa trafiği maliyetleri arası denge kurulmalı Örnek (iç parçalanma): prosesin boyu 1545 sözcük sayfa boyu 1500 sözcük ise: proses toplam 2 sayfa 1500 sözcük sayfa boyu 500 sözcük ise: proses toplam 4 sayfa 500 sözcük boş alan 45 sözcük 1455 sözcük 45 sözcük 455 sözcük lı segmanlar sayfalara bölünür her segmanın sayfa tablosu var adres: (s,p,d) s: segman numarası p: segman içindeki sayfa tablosuna erişim için bilgi d: sayfa içi kayıklık segman tablosu saklayıcısı (s,p,d) Bellek lı s segman tablosu p sayfa tablosu adres hesabı üç aşamalı donanım ile gerçeklense bile uzun sürer asosyatif saklayıcılar kullanılır TLB B K sayfa adresi limit d sayfa sayfa limit tablosu taban adresi istenen göz 6
lı hem sayfalamanın hem de segmantasyonun faydaları aynen var segmanlama olduğundan paylaşım ve bağlanma daha kolay sayfalama olduğundan bellek ayırma daha kolay dış parçalanma yok TLB kullanımı ile adres hesabı kabul edilebilir sürelere gelir 7