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ı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.

Ö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.

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

Ö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.

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:

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:

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.
« Sayfa Değiştirme Algoritması (Page Replacement) | Zigzag Şifrelemesi (ZigZag Cipher) »
Yorumlar
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 483 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.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Sıralama işleminiz poligonu...
- Şadi Evren ŞEKER: bahsettiğiniz sıralama algoritması...
- Abdurrahman ulusoy: merhaba hocam. gelişigüzel...
- Oguz Okutan: Merhaba hocam.. Fonksiyonlarda degere göre...
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
Yakın Yazılar
Dahili Parçalar (Internal Fragments)
Harici Parçalar (External Fragments)
Bağlantılar