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.

Yorumlar

  1. ali

    Hocam kolay gelsin yazınızı okudum anladım gibi oldum ama bazı soruları yapamadım
    mesala
    logical address 48 bit ,fiziksel adres 32 bitten oluşmaktadır bir page’in büyüklüğü 8 kb ise
    page table’ın entry sayısı nedir

  2. Şadi Evren ŞEKER Article Author

    Bakın 48 bitlik bir mantıksal adres (logical address) bize 248 adet farklı adres kodlama imkanı verir. Benzer şekilde fiziksel adres ise 232 farklı adres kodlamaya izin vermektedir.
    Bu ufak hatırlatmadan sonra sorumuzu çözelim. 1 page 8kb boyutunda olduğuna göre 1kb = 1024 byte ve 1 byte = 8bit ise 8kb = 8 x 8 x 1024 bit olacaktır yani 23 x 23 x 210 = 216 boyutunda bir page yer kaplıyor demektir.
    Zaten aynı değere 48 – 32 = 16 şeklinde de ulaşılabilir. Bunun anlamı mantıksal adresin ne kadarının fiziksel adres ve ne kadarının sayfa bilgisi olduğudur.
    Sayfa tablosundaki kayıt sayısı ise (page table entry) basitçe bu kodlamaları karşılamak durumundadır. Yani 16 bit veri kullanılacağını düşünürsek 216 farklı sayfa değeri bulunmalıdır.
    Yani sorunuzun cevabı 216 entrydir denilebilir.

  3. ali

    Hocam çok teşekkür ederim ilaç gibi geldi sabahtan beri uğraşıyordum yok anlamadım gitti tekrar saolun

  4. mehmet

    Hocam merhabalar arkadasın üstteki sordugu soruyu anladım da fakat Frame sayısını bulmak istersek nasıl hesaplarız ?

    iyi çalışmalar..

  5. Şadi Evren ŞEKER Article Author

    Arkadaşlar, herhangi birşeyin boyutu var ve sayısını bulmak istiyorsanız kodlanabilecek sayıyı kastediyorsunuz demektir.

    Yani durum değişmez. Elinizdeki adres boyutu kodlanabilecek bilgi sayısını verir. Yukarıdaki örnekte fiziksel adres 32 bit olduğuna göre kodlanabilecek adres boyutu 232 boyutunda olacaktır. Bu da sizin fiziksel adresinizi verir. Diğer bir deyişle hafızanın (fiziksel adresin) 32 bit olmasının sebebi 32 ayrı bittende yararlanarak hafızanın kodlanmasıdır. Şayet 31 bit yetseydi ve 32. bite ihtiyaç olmasaydı o zaman 231 alan yeterli diyecektik.

    Demek ki 32 bit kullanılan bir hafıza için en az 231 ve en fazla 232 alanın kodlanabileceğini çıkarabiliriz.

    Gelelim çerçeve sayısına (frame). Hafızamızdaki alanın 8kb boyutundaki sayfalara bölündüğünü (veya sayfaların hafızaya sayfa boyutu kadar parçalar halinde konulduğunu) biliyoruz. Bu durumda sorumuz hafızamıza kaç tane 8kb boyutunda çerçeve (frame) sığar şeklinde sorulabilir.

    232 / 8kb = 232 / 216 = 216 olarak bulunur. Yani frame sayımız 216 tanedir denilebilir.

    Başarılar

  6. hakan

    hocam page table entry sayısının 2 üzeri 32 olması gerekmez mi? logical address 2 üzeri 48, page size 2 üzeri 16 ise 2 üzeri 48 / 2 üzeri 16 işleminin sonucundan 2 üzeri 32 elde ederiz. sayfa sayıları ve page entry ler eşittir. yanlışsam düzeltin lütfen.

  7. Şadi Evren ŞEKER Article Author

    Hayır. Yani sorunuzda belirttiğiniz durumda zaten page size olarak 216 değerinin page size (sayfa boyutu) olduğunu söylüyorsunuz, bu durumda sizin sayfa tablonuza (page table) zaten kodlanabilecek azami (maximum) kayıt sayısı 216 olacaktır 32 olamaz.

    Sizin bulduğunuz 32 bit ise fiziksel adres büyüklüğüdür.

    Başarılar

  8. Hüseyin

    Hocam merhaba

    8 KB lık
    sayfa boyutu ile düzenlenmiş fiziksel(physical) belleğin toplam boyutu 2 GB dır.
    Her process’in mantıksal(logical) adres alanı 256 MB ile sınırlandırılmıştır.

    fiziksel adres kaç bittir ve frame sayısı kactır bu soruların cvp nı nası bulabılırım 3 gundur araştırıyorum bir turlu yapamadım.

    1. H

      her page 8kb ise en fazla 2^34 / 2^16 = 2^18 frame olabilir. process’in mantıksal(logical) adres alanı 256 MB ile sınırlandırılmış ise sanirim en fazla bir tane process islenicek ve 2^31/ 2^16=2^15 tane frame alanı dolduracak boylece frame sayısı 2^15 olacak. Fiziksel adres ise 2^34 bittir. Ben anladığım kadarıyla söyledim, seni yanıltmak istemem, Şadi hocam emeğinize sağlık teşekkürler…

  9. Ersel TEKŞEN

    Hocam kolay gelsin bir sorum olacak
    8 gb ram e sahip 32 bit işletim sisteminde her thread 1mb adrese sahip en fazla kaç tane user thread oluşturulabilir, bildiğim kadarıyla Windows ta 2 gb kernel 2 gb user linux ta 3gb user 1 Gb kernel ama 32 bit işletim sistemi en fazla 3 gb ram kullanabilir diye bir şey de duymuştum , cevaplarsaniz çok sevinirim
    İyi çalışmalar hocam.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir