İşletim Sistemleri (Operating Systems)
Bellek Yönetimi (Memory Management)
Modern Bellek Yönetimi Teknikleri Hem değişmez (fixed) hem de dinamik (dynamic) bölümleme, belleği verimsiz kullanırlar: biri iç parçalanmaya diğeri ise dış parçalanmaya neden olurlar. Belleğe yeni process’lerin yüklenmesi ve sonlanan process’lerin bellekten kaldırılması sırasında, bellekte verimsiz boşluklar oluşur. Belleğin çeşitli yerlerinde küçük parçaların kalması sonucunda bellekte toplamda yeterli yer olmasına karşılık yeni bir process bu parçalara bölünemeyeceği için bellekte yetersiz yer problemi ile karşılaşılacaktır. İç ve dış parçalanma sorununun üstesinden gelmek için sayfalı bellek yönetimi (paging) ve kesimli bellek yönetimi (segmentation) kullanılabilir.
Modern Bellek Yönetimi Teknikleri Bellek Yönetim düzenleri; Sayfalı Bellek Yönetimi (Paging), Kesimli Bellek Yönetimi (Segmentation) ve bu ikisinin karması kesimli-sayfalı Bellek Yönetimi (Segmentation- Paging)
Modern Bellek Yönetimi Teknikleri Sayfalı Sanal Bellek (Paged Virtual Memory) Bellek, sabit boyutlu çerçevelere (frame) bölünür. Her çerçeve bir taban fiziksel adrese (base physical address) sahiptir. Kesimli Sanal Bellek (Segmented Virtual Memory) Bellek değişken uzunlukta kesimlere (segment) bölünür. Her kesim bir taban fiziksel adres + uzunluğa (base physical address + length) sahiptir.
Sayfalı Bellek Yönetimi (Paging) Sayfalama (paging) yönteminde, Fiziksel bellek (RAM) adres evreni, birbirini izleyen, eşit uzunlukta parçalara bölünür. Bu parçalar çerçeve (frame) olarak adlandırılır. Process mantıksal adres evreni de, birbirini izleyen, eşit uzunlukta parçalara bölünür. Bu parçalar sayfa (page) olarak adlandırılır. Eşit boylu bellek parçaları: çerçeve (frame) Eşit boylu process parçaları: sayfa (page) Genelde fiziksel bellek çerçeve uzunlukları (frame size) ve process sayfa uzunlukları (page size) eşittir. Ancak bu bir şart değildir.
Sayfalı Bellek Yönetimi
Sayfalı Bellek Yönetimi Her process eşit uzunluktaki sayfalara, ana bellek de eşit uzunluktaki çerçevelere ayrılmıştır. İşletim sistemi her process için sayfa tablosu tutar. Sayfa tabloları bellekte process kontrol bloğunun (PCB) bir parçası olarak tutulur. Process’lerin hangi sayfasının hangi çerçevede olduğu bilgisi process’lerin sayfa tablosunda tutulmaktadır. Yandaki örnekte sayfa 0, çerçeve 1’de, sayfa 1 çerçeve 4’te, sayfa 2 çerçeve 3’te ve sayfa 3 de çerçeve 7’de yer almaktadır. Sayfa uzunluğu donanım tarafından mikroişlemci mimarisinde belirlenir. (2’nin katları şeklindedir; 512 byte – 8192 byte arasında)
Sayfalı Bellek Yönetimi
Sayfalı Bellek Yönetimi İşletim sistemi bu yöntemi kullanırken boş çerçevelerin de listesini tutar.
Mantıksal ve Fiziksel Adresler CPU tarafından oluşturulan adrese mantıksal (veya sanal) adres, Bellekte yer alan adrese ise fiziksel adres denilmektedir. Mantıksal Adres CPU’nun gördüğü adres içeriği iken, Fiziksel adres fiziksel belleğin gördüğü adrestir. Kullanıcı programı mantıksal adres ile ilgilenir; asla gerçek fiziksel adresi görmez.
Bellek Yönetim Birimi Memory Management Unit (MMU) Mantıksal adresten fiziksel adrese dönüşüm Bellek Yönetim Birimi (Memory Management Unit-MMU) olarak adlandırılan donanım tarafından yapılır. Bellek adresleri sistem adres yoluna (address bus) yüklenmeden önce MMU tarafından fiziksel adreslere çevrilir.
Mantıksal ve Fiziksel Adresler Programlar gerçek adresle değilde mantıksal adresle çalışırlar. Bir process’i belleğe yerleşirken MMU, relocation register’daki değeri CPU tarafından oluşturulan her adrese ekler (adres belleğe gönderildiğinde). Bu sayede gerçek adrese ulaşılmış olur. Mantıksal adresteki sayfa (page) fiziksel adreste çerçeve (frame) diye geçer.
Mantıksal ve Fiziksel Adresler Adres işlemlerinde taban kayıt edicisi görevini yerine getiren “relocation register, yerleştirme kayıt edicisi” kullanılmaktadır. relocation register daki değer kullanıcı programları tarafından üretilen her adrese eklenir. Taban değeri 14.000 ve kullanıcı programları da 346 adresine konumlandıysa adres 346+14.000=14.346 olacaktır. Böylece kullanıcı programı mantıksal adresle işlem yapar ve gerçek adresi hiç görememektedir.
Limit ve Relocation Register İşletim sistemi, ana belleğin alt adres (low memory) kesimine yüklenir. Kullanıcı process’leri belleğin üst adres (high memory) kesimlerine yüklenir. Relocation register: kullanılabilecek en küçük fiziksel adresi (base address) içerir. Limit register, Mantıksal adres aralığını içerir. Her mantıksal adres limit register değerinden daha küçük olmalıdır. Kullanıcı programının işletimi boyunca, Limit register çıkışları + Relocation register adresi, erişilen adreslerle sürekli karşılaştırılır. Eğer kullanıcı programı, işletim sisteminin bellek alanına erişirse, program sonlandırılır. Bu denetim düzeneğine bellek koruma düzeneği denir.
Sayfalı Bellek Yönetimi Mantıksal-Fiziksel adresler Sayfalı bellek yönetimi olan sistemlerde CPU tarafından oluşturulan her adres (mantıksal adres) 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. Sayfa tablosunda hem sayfa hemde ofset adresi bulunmaktadır.
Sayfalı Bellek Yönetimi Mantıksal-Fiziksel adresler Mantıksal Adres = Sayfa numarası (p) + Sayfa ofseti (d) (Logical Address = Page number + page offset) Mantıksal adres evreni ve sayfa boyu 2’nin katları şeklindedir. Verilen mantıksal adres evreni 2m ve sayfa boyu 2n 16-bitlik bir örnek mantıksal adres uzayı ve 1024 bayt sayfa boyu için, yüksek anlamlı 6-bit sayfa numarasını taşır, düşük anlamlı 10-bit ise sayfa ofset değerini gösterir. (Burada m=16 ve n=10 )
Sayfalı Bellek Yönetimi Mantıksal-Fiziksel adresler Mantıksal adres uzunluğu 16 bayt Sayfa uzunluğu 4 bayt Mantıksal adres evreni 2m ve sayfa boyu 2n (Burada m=4 ve n=2 ) Mantıksal adreste 4 sayfa (page) bulunuyor. Fiziksel bellek uzunluğu 32 bayt Fiziksel adreste 8 çerçeve (frame) bulunuyor.
Sayfalı Bellek Yönetimi Mantıksal-Fiziksel adresler 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. Sayfa tablosu, her sayfanın fiziksel hafızadaki base adresini içerir. Sayfa ve çerçeve boylarının ikinin kuvvetleri şeklinde seçilmesi dönüşüm hesaplamalarını basitleştirir.
Sayfalı Bellek Yönetimi Mantıksal-Fiziksel adresler Çerçeve adresi, fiziksel adres olarak adlandırılır ve bir çerçeve numarası ve ofset ile temsil edilir. Fiziksel Adres = Çerçeve numarası (f) + sayfa ofseti (d) (Physical Address = Frame number + page offset)
Sayfalı Bellek Yönetimi Mantıksal-Fiziksel adresler Fiziksel bir adresi elde etmek için, önce için sayfa tablosundaki belirtilen sayfadaki çerçeve numarası bulunur. Ardından, çerçeve numarası çerçeve boyutuyla çarpılır ve ofset ile toplanır.
Sayfalı Bellek Yönetimi Mantıksal-Fiziksel adresler
Sayfalı Bellek Yönetimi Örnek 4 bayt uzunluğunda sayfalardan oluşan 32 bayt’lık bir bellek olduğunu varsayınız. Sayfa tablosu yanda verilmiştir. Buna göre aşağıdaki mantıksal adresler için fiziksel adresleri bulunuz. a) 0 b) 3 c) 4 d) 13 Fiziksel adresi hesaplamak için aşağıdaki formül kullanılabilir: Fiziksel Adres (FA)=(Çerçeve Numarası (ÇN)*Çerçeve Boyutu (ÇB))+Ofset (O)
Sayfalı Bellek Yönetimi Çözüm : İlk olarak mantıksal belleğin çizilmesi gerekir. Sayfa boyu : 4 bayt, bellek boyu : 32 bayt Ardından sayfa boyutuna göre belleğin bölünmesi ve her bir mantıksal adresin sayfa numarası ve sayfa ofsetinin hesaplanması gerekir. Sayfa numarası, sayfa tablosundan çerçeve numarasını bulmak için kullanılacaktır.
Sayfalı Bellek Yönetimi a) mantıksal adres : 0 sayfa numarası=0 sayfa ofseti=0 0 numaralı sayfanın bulunduğu çerçeve numarası=5 FA=ÇN*ÇB+O FA=5*4+0=20
Sayfalı Bellek Yönetimi b) mantıksal adres : 3 sayfa numarası=0 sayfa ofseti=3 0 numaralı sayfanın bulunduğu çerçeve numarası=5 FA=ÇN*ÇB+O FA=5*4+3=23
Sayfalı Bellek Yönetimi c) mantıksal adres : 4 sayfa numarası=1 sayfa ofseti=0 1 numaralı sayfanın bulunduğu çerçeve numarası=6 FA=ÇN*ÇB+O FA=6*4+0=24
Sayfalı Bellek Yönetimi d) mantıksal adres : 13 sayfa numarası=3 sayfa ofseti=1 3 numaralı sayfanın bulunduğu çerçeve numarası=2 FA=ÇN*ÇB+O FA=2*4+1=9
Sayfalı Bellek Yönetimi Örnek: Mantıksal adreslerin 16 bit ve sayfa boyutunun 1KB olduğu varsayılsın. Program başına göre bağıl adresi 1502 olan bir bellek erişiminin mantıksal adres eşdeğerini bulunuz.
Sayfalı Bellek Yönetimi 16 bit ile 64KB’lik bir alan adreslenebileceğinden 64 tane frame mevcuttur. 64 sayfa 6 bit ile temsil edilebilir, geriye kalan 10 bit de ofset değeridir. (1502)10 adresinin binary karşılığı (0000010111011110)2’dir. 000001 sayfa_no=1 0111011110 ofset=478 En anlamlı 6 bit sayfa numarası olacağından, bu erişim birinci sayfada ve ofset değeri 478 olan bellek erişimidir.
Sayfalı Bellek Yönetimi Mantıksal Adresten Fiziksel Adres Dönüşümü Adres uzayı (p+d) bitten oluşsun (p:sayfa numarası, d:ofset değeri). Bir önceki örneğe göre p 6 bit ve d 10 bit olacaktır. Dönüşüm için gerekli adımlar, Mantıksal adresin en anlamlı 6 biti ayrılır, Elde edilen sayfa numarası sayfa tablosunu indekslemek için kullanılır. Buradan çerçeve numarası (f) bulunur, Fiziksel adres de çerçeve numarasına ofset değerinin eklenmesiyle bulunur. sayfa numarası 1, ofset 478 olan 0000010111011110 mantıksal adresine sahibiz. Sayfa tablosunda sayfa 1 içinde çerçeve 6 = ikili 000110 bulunduğunu varsayalım. Fiziksel adres çerçeve numarası 6 ya, ofset 478 eklenmesi ile bulunur. 0001100111011110'dur.
Etkin sayfalar ön belleği Translation Lookaside Buffer (TLB) TLB, sayfalama işleminin (paging) hızını arttırmaya yarayan bir hafıza bölümüdür. Sayfa tablosunda çerçeve(frame) adresini ararken kaybedilen süreyi önlemek için kullanılan özel, küçük ve hızlı bir ön bellektir. Günümüzdeki çoğu bilgisayar mimarisi tarafından desteklenmektedir. Mantıksal bir sayfanın adresi dönüştürüldüğünde sayfadaki öbeklere ulaşımın tekrarı ve dolayısıyla o dönüşümün yakın bir zamanda tekrar kullanılma ihtimali yüksektir.
Etkin sayfalar ön belleği Translation Lookaside Buffer (TLB) Günümüz makineleri yakın zamanda kullanılan sayfa tablosu satırlarını tutan ve adres dönüşümlerinin izini süren bir ön belleğe sahiptir. Bu özel yapıya Etkin sayfalar ön belleği (Translation Lookaside Buffer-TLB) adı verilir. Etkin sayfalar ön belleği sayfa tablosu eşleştirmelerinin sadece bir kısmını tutan bir ön bellektir. Genellikle MMU da bulunan ve küçük boyutlu bir tablodur.
Etkin sayfalar ön belleği Translation Lookaside Buffer (TLB) CPU tarafından mantıksal bir adres tanımlandığında bu sayfa numarası TLB’ye iletilir. Sayfa numarası burada bulunursa (TLB hit) çerçeve adresi hızlı bir biçimde kullanılarak belleğe ulaşılır. TLB miss oluşursa (sayfa numarası TLB de yoksa) sayfa tablosuna gidilerek çerçeve adresi bulunur ve bu TBL’ye de eklenir ki böylece bir daha ihtiyaç olduğunda bu adres hızlı bir biçimde bulunabilir. Eğer TLB alanı dolarsa, işletim sistemi buradaki en az kullanılan değerleri bularak bunların yerine yeni değerleri ekleyecektir.
Hiyerarşik Sayfalama (Hierarchical Paging) Modern bilgisayar sistemleri çok büyük mantıksal adres alanlarını kapsamaktadır. (232’den 264’e kadar ) bu durumda sayfa tablosu da çok büyük olmaktadır. Örneğin, 32 bitlik mantıksal adres alanında, sayfa büyüklüğü 1K (210 ) olarak alınırsa sayfa tablosu 232/210 = 222 girişe sahip olacaktır. Bu değer de çok büyük olduğu için, sayfa tablosunu bütün olarak ana bellekte tutmak yerine, sayfa tablosunu parçalara ayırmak daha uygun olmaktadır. Hiyerarşik Sayfalama Mantıksal Adres alanını çoklu sayfa tablolarına böler. Basit bir teknik olarak İki seviyeli sayfa tablosu olarak uygulanabilir.
İki seviyeli Sayfalama
32-bit Mantıksal Adres Evreni 32 bitlik bir sistem 1K’lık sayfalara bölündüğünde mantıksal adresteki sayfa numaraları 22 bitlik , sayfa ofseti ise 10 bitlik olmaktadır. Hiyerarşik Sayfa Tablosu kullanımında, Sayfa tablosuna erişmek için de sayfa tablosu kullanılması gerekeceği için 22 bitlik sayfa numarası da 12 bitlik sayfa numarası ve 10 bitlik sayfa ofseti olarak tekrar ikiye ayrılacaktır. Mantıksal adres aşağıdaki gibi olur. Burada p1 parçaladığımız dış sayfa tablosundaki (outer page table) indeksi, p2 ise iç sayfa tablosundaki (inner page table) yerleşimi temsil etmektedir.
İki seviyeli Sayfalama Örneği
64-bit Mantıksal Adres Evreni 64 bitlik bir sistem 4K’lık (212) sayfalara bölündüğünde sayfa tablosu 264 /212 = 252 girişe sahip olacaktır. Eğer 2 seviyeli sayfalama kullanılırsa, Dış sayfa tablosunda 242 giriş var. Bu değer de çok büyük. Bir çözüm, ikinci bir dış sayfa tablosu daha eklemektir.
Üç seviyeli Sayfalama
Hashed Page Table
Inverted Page Table
Kesimli Bellek Yönetimi (Segmentation)
Kesimli Bellek Yönetimi (Segmentation) Kesimli bellek yönetiminde (segmentation) mantıksal adres alanı sayfalar yerine segmentlerden (kesimlerden) oluşmaktadır. Programların tüm segmentleri aynı boyda olmak zorunda değildir. Ancak segment boyunun bir üst sınırı bulunur. Maksimum segment boyunun (segment size) bilinmesi gerekir. Bir programın derlenmesi sırasında derleyici segment atamalarını gerçekleştirir.
Kesimli Bellek Yönetimi (Segmentation) 1 4 2 3 physical memory space 1 3 2 4 user space
Kesimli Bellek Yönetimi (Segmentation) Bir mantıksal adres, hem segment numarası (s) hem de segment içi ofset değerinden (d) meydana gelmektedir. Mantıksal Adres: <segment-numarası, ofset> Segment numarası (s) Offset değeri (d)
Kesimli Bellek Yönetimi (Segmentation) Mantıksal adreslerin fiziksel adreslere dönüştürülmesi için segment tablosuna ihtiyaç vardır. Segment tablosu, her segmentin başlangıç (taban) adresi ve uzunluğu bilgisini tutmaktadır. Base (Taban) adresi: Bellekte segmentin başlangıç adresini tutar. limit : Segmentin uzunluğunu tutar. Böylece her segmentin başlama ve bitiş (tavan adresi) noktaları hesaplanabilir.
Kesimli Bellek Yönetimi (Segmentation) Mantıksal adres alanının yanda göründüğü gibi olduğu varsayılırsa. Segment tablosu bu bilgiler kullanılarak elde edilebilir. Fiziksel bellek de segment tablosu kullanılarak oluşturulabilir.
Kesimli Bellek Yönetimi (Segmentation) Segment tablosundan segmentin adresi ve boyu alınır. Segment boyları eşit olmadığından dinamik bölmelemeye benzer özelliklere sahiptir. Bir program birden fazla segmentden oluşabilir. Bir programa ilişkin segmentler bellekte ardışıl yerleşmek zorunda değildir.
Kesimli Bellek Yönetimi (Segmentation) 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 segmenti aşması bellek erişim hatası (segment fault) oluşur. Eğer ofset değeri belirtilen sınırlar arasında ise segment taban değeri ile ofset adresi toplanarak, fiziksel adres oluşturulmaktadır. Fiziksel Adres (FA) = Segment Taban Adresi (TA) + Ofset (O)
Kesimli Bellek Yönetimi (Segmentation)
Kesimli Bellek Yönetimi (Segmentation)
Kesimli Bellek Yönetimi (Segmentation) Örnek Segment tablosunun yandaki gibi olduğunu varsayınız. Aşağıdaki mantıksal adreslerin (segment no, ofset) fiziksel adres karşılıklarını bulunuz. a) (0, 198) b) (2, 156) c) (1, 530) d) (3, 455) e) (0, 252) Fiziksel adresi hesaplamak için aşağıdaki formül kullanılabilir: Fiziksel Adres (FA) = Segment Taban Adresi (TA) + Ofset (O) Segment No Taban Adresi (base) Uzunluk (limit) 660 248 1 1752 422 2 222 198 3 996 604
Kesimli Bellek Yönetimi (Segmentation) İlk olarak her mantıksal adresin hangi segmentde olduğu segment tablosu kullanılarak bulunmalı ve ofset değeri bu segmentin uzunluğu ile karşılaştırılmalıdır. Eğer ofset küçükse fiziksel adres hesaplanmalı, değilse bellek erişim hatası (segment fault) oluşturulmalıdır. Mantıksal adres Fiziksel adres a) (0, 198) 198 < 248 660 + 198 = 858 b) (2, 156) 156 < 198 222 + 156 = 378 c) (1, 530) 530 ≮ 422 bellek erişim hatası d) (3, 455) 455 < 604 996 + 455 = 1451 e) (0, 252) 252 ≮ 248 Segment No Taban Adresi (base) Uzunluk (limit) 660 248 1 1752 422 2 222 198 3 996 604
Sayfalı ve Kesimli Bellek Yönetimleri için Avantaj ve Dezavantajlar 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. Segmentler ise değişken boyuttadır.
Sayfalı ve Kesimli Bellek Yönetimleri için Avantaj ve Dezavantajlar 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 segment ve ofset numarasında bir sınır aşması söz konusu değildir. Bu durumda bellek erişim hatası oluşur.
Sayfalı ve Kesimli Bellek Yönetimleri için Avantaj ve Dezavantajlar Sayfalamayı uygulamak kolaydır ve etkili bir bellek yönetimi tekniği olarak varsayılır. Sayfaların ve çerçevelerin eşit boyutu nedeniyle, değiştirme işlemi (swapping) çok kolaydır. Sayfa tablosu fazladan bellek alanı gerektirir, bu nedenle küçük bir RAM'e sahip bir sistem için iyi olmayabilir.