• Bağış
  • Sayfalama (Paging)

    Yazan : Şadi Evren ŞEKER

    İçerik
    Hafıza Yönetim Problemleri
    Sayfalama (Paging)
    Sayfa Tablosu (Page Table)

    Bilgisayar bilimlerinin önemli konularından birisi olan işletim sistemlerinin bir görevi de hafızayı verimli yönetmektir (memory management). Kısaca sınırlı miktarda hafıza (RAM, Bellek, Memory) bulunmakta ve çalışan her program bir miktar hafızaya ihtiyaç duymaktadır. İşletim sistemi (operating system) bu hafızayı ne kadar verimli kullanırsa ve işlemleri (process) ne kadar düzgün yerleştirirse hafızanın içerisine sığabilen program mikatrı o kadar fazla olur.

    Hafıza problemleri

    Hafızanın yönetimi sırasında karşılaşılabilecek problemlerden birisi harici hafıza kırıntılarıdır (external fragments, harici parçalar). İlgili yazı okunursa görülür ki hafızaya yeni işlemlerin yüklenmesi ve biten işlemlerin kaldırılması sırasında, hafızada verimsiz boşluklar oluşur.

    segmentation

    Örneğin yukarıdaki şekilde daha önceden 400-500 fiziksel adresleri (physical address) arasında yer alan 2. işlem (process 2) kaldırılmış ve oluşan boşluğa, 2. işlemden daha az yer kaplayan 4. işlem yerleştirilmiştir. 2. işlem 100, 4. işlem ise 75 boyutunda olduğu için 25 boyutunda bir boşluk oluşmuştur.

    Yukarıdaki örnektek i25 uzunluğundaki boşluk ancak 25 ve daha az hafıza ihtiyacı olan işlemler için kullanılabilir. Hafızanın çeşitli yerlerinde benzer şekillerde küçük parçaların kalması sonucunda hafızada toplamda yeterli yer olmasına karşılık yeni bir işlem bu parçalara bölünemeyeceği için yetersiz yer problemi ile karşılaşılacaktır. Örneğin yukarıdaki şekilde 5 farklı yerde 25 boyutunda hafıza boşluğu olsun. Bu durumda toplam 125 boyutunda yer olacak ancak 100 boyutunda yeni bir işlem bu parçalara bölünemediği için hafızadaki bu boş yer kullanışsız olacaktır.

    Çözüm olarak Sayfalama (Paging)

    Çözüm olarak sayfalama (paging) kullanılabilir. Sayfalama çözümünde hafıza (RAM) basitçe sayfa boyutu kadar ufak parçalara bölünür. Aynı durum işlemler (process) için de geçerlidir. Yani hafıza ihtiyacı olan bütün işlemler verilen sayfa boyutu (page size) kadar parçaya bölünür. Ardından hafızada ilgili işlem sayfaları, sayfa sayfa yüklenir.

    Örneğin sayfa boyutumuz (page size) 100 olsun.

    275 boyutundaki bir işlem aşağıdaki şekilde 3 sayfaya bölünecektir.

    islem1

    Benzer şekilde 325 uzunluğuna sahip başka bir işlem de 4 parçaya bölünür:

    islem2

    Örneğin 1000 boyutunda bir hafızamız (ram) bulunması halinde ise bu hafıza aşağıdaki şekilde 10 parçaya bölünür.

    frame

    Yukarıda adres sütununda bulunan değerler başlangıç ve bitiş değerleridir. Örneğin 500-600 aralığı, 500 adresinden 600 adresine kadar olan aralıktır.

    Hafızadaki parçalara çerçeve (frame) ismi verilir ve yukarıda görüldüğü üzere 1000 boyutundaki bir hafızada çerçeve boyutu (frame size) 100 olması durumunda 10 parça bulunur. Genelde çerçeve boyutu ile sayfa boyutu eşit alınır ancak bu bir şart değildir.

    Tanım olarak işlemlerin adreslerine mantıksal adres (logical address) ve hafızadaki adreslere fiziksel adres( physical address) ismi verilir. Bilindiği üzere işlemler gerçekte hangi adreste olduklarını yani fiziksel adreslerini bilmezler. İşlemler kendilerini sanal bir dünyada kendi adres uzayında (address space) zannederler.

    Yukarıdaki şekilde bölünen sayfaların hafızaya yerleştirilirişi ise çalışma sırasına göre olur. Örneğin İşlem 1 önce, işlem 2 ise sonra çalışıyor olsun. Bu durumda işletim sistemi işlemleri aşağıdaki şekilde yerleştirebilir:

    sayfali

    Yukarıdaki şekilde işlem numarası ve sayfa numarası şeklinde kısaltma kullanılmıştır. Örneğin İ1-3, işlem 1 sayfa 3 anlamına gelmektedir.

    Yukarıdaki tabloda görüldüğü üzere ilk 3 çerçeve işlem1 ve sonraki 4 çerçeve ise işlem 2 için ayrılmıştır.

    Bu durumda yukarıdaki tabloda dikkat edilirse 3. çerçeve aslında 100 boyutunda olmasına karşılık 75 boytundaki işlem 1′in 3. sayfasını ve 7 çerçeve de 100 boyutunda olmasına karşılık işlem2 ‘nin 25 boyutundaki 4. sayfasını tutmaktadır.

    Bu durumda 3. çerçevede 25 ve 7. çerçevede 75 boyutlarında iç hafıza kırıntısı (internal fragments) oluşmuştur. Bu durum sayfalamanın (paging) dez avantajıdır. Yani aslında sayfalama (paging) harici hafıza kırıntılarını (external fragments) engellerken bu defa dahili hafıza kırıntıları (internal fragments) oluşturmaktadır. Ancak görüldüğü üzere dahili kırıntılar, harici kırıntılara nispetle kontrol edilebilir. Yani azami dahili hafıza kırıntısı yukarıdaki örnekte 99 boyutunda olabilir (çerçeve boyutunun 100 ve o çerçeveye gelen işin uzunluğunun 1 olduğu kabul edilirse). Dolayısıyla dahili kırıntılar, harici kırıntılara göre nispeten daha tercih edilebilir denilebilir.

    Sayfa tablolarının tutulması (Page Tables)

    Yukarıdaki örnekte görüldüğü üzere iki ayrı işlem (process) hafızaya yerleştirilmiştir. Hafıza yönetimi (memory management) yapan işletim sistemi, çalışan herhangi bir programın mantıksal adresini (logical address) fiziksel adrese (physical address) çevirmek zorundadır. Bu işlem için sayfa tabloları (page tables) kullanılır.

    Yukarıdaki şekilde hafızaya yerleşen iki işlem için sayfa tablosu (page table) aşağıdaki şekilde olur:

    sayfatablosu

    Yukarıdaki tabloda hangi işlemin hangi sayfasının, RAM’deki hangi çerçeveye ait olduğu gösterilmiştir. Bu tablo ile mantıksal adresten fiziksel adrese dönüşüm mümkün olur.

    Örneğin 2. işlem mantıksal adresi 327′ye erişmek istesin. bu durumda öncelikle 327 numaralı adresin hangi sayfada olduğu bulunmalıdır:

    Mantıksal Adres / Sayfa Boyutu = Sayfa Numarası

    327 / 100 = 3

    Yukarıda görüldüğü üzere erişilmek istenen adres sayfa boyutuna bölünmüş (tam sayı bölmesi) ve sonuç olarak 3 çıkmıştır. Yukarıdaki sayfa ve çerçeve numaraları 1′den başlamıştır bu durumda bu sayıya 1 eklenecektir. Şayet sayfa numarası ve çerçeve numarası 0′dan başlıyorsa bu durumda ekleme işlemine gerek kalmaz:

    3 + 1 = 4

    Yukarıdaki hesaptan 4. sayfadaki bir adrese erişilmek istendği anlaşılmıştır. Şimdi bu sayfanın fiziksel adres kaşılığını bulmak için hangi çerçeveye yüklendiğini bulmamız gerekir. Sayfa tablosu (page table) da tam burada devreye girer. 4. sayfa yukarıdaki tablodan görüleceği üzere 7. çerçevededir.

    O halde önce fark miktarını (offset) hesaplayalım:

    Mantıksal Adres % Sayfa Boyutu = fark miktarı (offset)

    327 % 100 = 27

    Yukarıda erişilmek istenen mantıksal adresin sayfa boyutuna bölümünden kalan (remainder, modulo) değeri bulunmuştur. Bu durumda 7. çerçevenin başlangıç adresine 27 eklenmesi durumunda karşılık olan fiziksel adres bulunmuş olacaktır.

    7. çerçeve 600. adresten başlamaktadır bu durumda fiziksel adres:

    600 + 27 = 627

    olarak bulunmuş olunur.

    Yukarıdaki bu işlemler aşağıdaki şekilde de formülüze edilebilir:

    FA = ST (MA / SB) + MA % SB

    Yukarıdaki formülde FA : Fiziksel Adres, ST : Sayfa Tablosundaki  o işlemin karşılığı ( örneğin ST (2) sayfa tablosundaki 2. sayfanın karşılığı olan çerçeve), MA : Mantıksal Adres, SB : Sayfa Boyutu olarak tanımlanmıştır.

    Benzer Yazılar:

    Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Sayfalama (Paging)' isimli yazı 31 May 2009 tarihinde, saat: 11:39 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 824 defa okunmuştur.

    Benzer yazıları işletim sistemleri kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


    Category: işletim sistemleri

    Leave a Reply