Sayfalama: Revizyonlar arasındaki fark

[kontrol edilmemiş revizyon][kontrol edilmemiş revizyon]
İçerik silindi İçerik eklendi
Khutuck Bot (mesaj | katkılar)
k Bot: Otomatik metin değişimi, Resim etiketleri düzenlendi
Gokhan.kapici (mesaj | katkılar)
Değişiklik özeti yok
1. satır:
{{düzenle|Ağustos 2007}}
Sayfalama durgun sanal bellek sayfalarının ikincil bellekte(teker) saklanarak daha sonra ihtiyaç duyulduğunda ana belleğe yüklenmesi işlemini içerir.
 
'''Bellek adresleme''', [[bilgisayar bilimi]]nde, bir bellek adresi bellekteki bir bölgenin bir tek tanımlayıcısıdır ki onun aracılığıyla [[CPU]] ve diğer aygıtlar bir veri parçasını saklayabilirler ve daha sonra çağırabilirler.
 
Modern bayt adresleyebilir bilgisayarlarda her bir adres yalnızca bir baytlık alanı gösterir. Veri bir bayttan fazla ise ard arda gelen bir dizi halindeki adresin içine yerleştirilir. Bazı mikro işlemciler sözcük adresleyebilir olarak planlanmaktadır ; çünkü tipik saklama ünitesi gerçekte bir bayt'tan daha büyüktür. Örneğin TEXAS INSTRUMENT TMS 9900 ve the national samiconductor IMP–16 da bir sözcük iki bayttan yani 16 bitten oluşur.
==Sayfa ve Sayfa Düzeni==
 
Hafıza adreslemede hem mantıksal hem de fiziksel adresleme kullanılır. Mantıksal hafıza ki bir hayali memori bölgesidir. Ve bazı işletim sistemleri tarafından kullanılır(Windows , dos degil). Mantıksal adreslemeyi hafıza adreslemenin, yollarından biri olarak görebiliriz. Programlar dataları adreslemek için fiziksel adreslemeden ziyade mantıksal adreslemeyi kullanırlar. Bir program yürütülürken, mantıksal adresler gerçek adreslere dönüştürülür. Mantıksal hafızanın amacı, daha geniş bir adres uzay dır ki bu alanı bir program kullanır. Mantıksal memorinin hepsini kullanan program ana memorinin, içine tam oturtulmayabilir. Bununla beraber bilgisayar böyle bir programı çalıştırabilir, programın gerçekleştirme aşamasının gerekli anında ana memorinin içine gerekli alanlar kopyalanır.
 
Fiziksel memori gösterir donanıma ait olan herhangi bir kavramı. Fizikselin karşıtı mantıksaldır ve softweare ait nesneleri tanımlar. Örneğin fiziksel hafıza gerçek ram entegrelerini işaret eder, mantıksal memori ise programların kullandığı saklama alanlarıdır. Bir fiziksel data kalıbı, saklama aygıtındaki verinin gerçek organizasyonunu gösterir. mantıksal memori ise bir data ya da verinin program ya da kullanıcı için nasıl belireceğini gösterir. Örneğin veri yapıları bilginin bir kolleksiyonudurki saklanmaktadır beraber. Bu mantıksal yapıdır. Bununla beraber bir dosya saklanabilir disk üzerinde birkaç parça halinde farklı yerlerde.
[[Dosya:sayfadüzeni1.jpg|thumb|sayfa ve sayfa düzeni]]
 
Mantıksal memoriyi gerçek memoriye dönüştürmek için, işletim sistemi mantıksal memoriyi sayfalara bölerki her bir sayfa uygun büyüklükteki adreslerden olusur. Her bir sayfa ihtiyaç duyulana kadar disktedir. Bir sayfa ya ihtiyaç duyulduğu zaman, işletim sistemi sayfayı diskten memoriye getirir, mantıksal adresi gerçek adrese dönüştürerek.
Günümüzde kullanılan sanal bellek sistemleri ''alanda yerellik''ten yararlanabilmek için programları belirli boyutlarda blok kümeleri şeklinde yerleştirirler. Bu belirli boyutlardaki blok kümeleri (öbekleri) “'''sayfa'''” olarak adlandırılır. Ana belleğin sayfalarla aynı boyutlarda bloklardan oluştuğu varsayılır. Bu varsayım “'''sayfa çerçevesi” (page frame)''' olarak nitelendirilir.
 
Bu çeviri yazılım tarafından görülmez. Verinin fiziksel memori içindeki bağımsız hareket edebilmesine işletim sistemi hükmeder ve işletim sistemi veriyi, bilgisayarı etkin biçimde tutmak için yeni yerleştirmeler yapmakta ve yer değiştirmeler yapmakta özgürdür.
 
Mantıksal memorinin boyutu fiziksel memoriden büyük olabilir. İşletim sistemi kullanabilir bir hafıza sayfasını dosya ya da kaydırma sayfası olarak.
 
Çok sık modern bilgisayarın sözcük büyüklüğü gösterilir tanımlamakta mantıksal memorinin büyüklüğünü göstermekte örneğin bir bilgisayarın 32 bit olduğu söyleniyorsa genellikle 32 bitlik tamsayılar halinde adreslenir. Bir baytın adreslemesi 32 bitlik bir bilgisayarda 2 üzeri 32 yaklaşık olarak 4 giga baytlık memoriyi gösterir. Bununla birlikte eski tip bilgisayarlarda memori adresleri onların sözcük boyutundan çok büyüktü ya da onların memori adresleri makul olmayan bir biçimde küçüktü.
==Sanal Adres Numarasının Gerçek Adres Numarasına Dönüştürülmesi==
 
Örneğin 8 bit 6502 desteklenmekteydi 16 bithk adreslerle ve sınırlanmıştı 256 byte ile benzer biçimde 16 bitlik inten 8086 20 bitlik adresle desteklenmektedir ve bu bir mega bittir. 64 kilo byteden ziyade. 64 bitlik bilgisayar adresleyebilir. 2 üzeri 64 byte bu pratik olarak sınırsız bir değerdir. 16 bitlik bilgisayar 16 bitlik memory veri yollu, intel 8086 gibi genellikle çalışır etkili olarak 16 bitlik değeri bir seferde okuyup getirir ki gerçekte bu iki aşamada olur, ilkinde düşük değerli ilkyarı bit den de sonra yüksek değerli son yarı bit taşınır.
----
 
[[Kategori:Bilgisayar belleği]]
 
[[Dosya:Sanal_adreslerin_fiziksel_adrese_dönüştürülmesi1.jpg|thumb|''Sanal bellekte, adreslerin yapısı “sanal sayfa numarası”(virtual page number) ve “sayfa eklemesi”(page offset) olmak üzere iki kısma ayrılmıştır.
'']]
 
Ana bellekte kullanılan gerçek '''adres numarası''', gerçek adresin üst bölümünü, '''sayfa eklemesi''' ise gerçek adresin alt bölümünü oluşturur. Sayfa eklemesindeki bitlerin sayısı sayfanın boyutunu belirler ve değişim göstermez. Sanal adreslerle adreslenebilen sayfa sayısı gerçek adreslerle adreslenen sayfa sayısı ile örtüşmek zorunda değildir; sanal sayfa sayısının gerçek sayfa sayısının üzerinde olması sınırsız boyuttaki bellek izlenimini yaratmada esas alınan noktadır.
 
Herhangi bir hatayla karşılaşılmadıkça olağan sanal adres dönüştürme işlemi şu şekilde yapılır:
 
<code>
if (ADÖ && önbellek) { veriyi işlemciye ilet; }
else if (!önbellek && ADÖ) { işlemciye = Ana_Bellek[ADÖ’ den gelen Gerçek Adres]; }
else { olağan dönüştürme işlemini gerçekleştir; }
</code>
 
 
====Sanal = Gerçek İşlemi====
 
MVS, z/OS ve benzeri işletim sistemlerinde bazı kısımlar sanal=gerçek biçimine (virtual=real mode )sahiptirler; yani her sanal adres gerçek bir adrese karşılık gelmektedir.Bu kısımlar:
 
* Kesme düzenekleri
 
* Sayfa hatası denetimi ve sayfa tabloları
 
* Giriş/ çıkış kanalları (I/O channels) tarafından erişilen veri arabellekleri (data buffers)
 
* Giriş /çıkışların yönetiminde genelgeçer yöntemler uygulamayıp kendi arabelleklerine sahip olan ve çevre birimleri ile doğrudan iletişim kuran izlenceler (program)
 
 
 
==Sayfa Tablosu==
 
----
 
 
[[Dosya:Sayfa tablosu11.jpg|thumb|''Bir sayfa tablosunun ana bellekteki yerini belirtmek için, donanımda sayfa tablosunun başlangıcını işaret eden bir yazmaç (register) bulunur. Bu yazmaç “sayfa tablosu yazmacı” olarak tanımlanır.
'']]
 
Sanal bellekte sayfalar, belleği dizinleyen bir tablo kullanılarak yerleştirilirler. Bu yapı '''“sayfa tablosu (page table)”''' olarak adlandırılır. Bellekte tutulan sayfa tablosu sanal bellek adresinin numarasına göre dizinlenmiştir ve ona karşılık gelen gerçek sayfa numarasını içerir. Her program, sanal adres uzayını, ana bellekteki bellek uzayına dönüştüren kendine ait bir sayfa tablosuna sahiptir. Sayfa tablosu, ana bellekte mevcut olmayan sayfaların kayıtlarını da tutabilir. Her sayfa tablosunda '''geçerli bit''' (1 veya 0 ) tutulur. Eğer bu bit mantıksal sıfıra eşit ise sayfa ana bellekte mevcut değil demektir ve '''“sayfa hatası (page fault)”''' oluşur. Eğer bit mantıksal bire işaret ediyorsa sayfa ana bellekte mevcut ve geçerli bir fiziksel adrese sahip demektir.
 
 
[[Dosya:Sayfa_tablosu22.jpg|thumb|
''Sayfa tablosu, karşılık gelen gerçek adresi elde etmek üzere sanal sayfa numarası ile dizinlenmiştir. Sayfa tablosu yazmacı sayfa tablosunun başlangıç adresini gösterir. Her kaydın geçerli biti adres dönüşümünün ve adresinin geçerliliğini gösterir. Eğer bu bit mantıksal sıfıra işaret ediyorsa sayfa bellekte mevcut değildir. Fazladan bitler ek bilgi saklamak veya güvenlik için kullanılabilir.'']]
 
 
 
===Sayfa Tablosu İçin Gerekli Depolama (Saklama) Boyutu ve Kullanılan Anabellek Miktarının Azaltılması ===
 
# Sayfa tablosunun boyutlarını sınırlayan bir sınır kaydı tutmak. Eğer sanal sayfa numarası sınır kaydının sınırını aşarsa kayıtlar sayfa tablosuna eklenmelidir. Bu teknik, bir işlem daha fazla alana ihtiyaç duyduğunda sayfa tablosuna büyüme yeteneği kazandırır. Sonuç olarak sanal adres uzayı yalnızca ihtiyaç duyulduğunda büyük tutulacaktır.
 
# '''Bölmelere ayırmak (segmentation)''': Çoğu dil iki boyutları büyüyebilen iki ayrı alan gerektirdiği için tek boyutta büyümenin yetersiz olduğu durumlarda sayfa tablosu ikiye bölünür. İki ayrı sayfanın farklı sınırlara sahip olması desteklenir. İki sayfa tablosu kullanımı adres uzayını da ikiye parçaya (segment) böler. Sınır kaydı her iki parça için de tutulur. MIPS mimarisi de bu tekniği desteklemektedir.
 
# Sanal adrese bir ''hesaba dayalı adresleme (hashing)'' işlevi eklenerek sayfa tablosu veri yapısının sadece gerçek sayfa sayısı kadar boyutta olması sağlanabilir.Bu yapıya '''ters çevrilmiş(inverted) sayfa tablosu''' adı verilir.
 
# '''Birden fazla seviyeli sayfa tabloları''' kullanılabilir.
 
# Sayfa tabloları kullanımı için gerekli ana bellek miktarının azaltılması sayfa tablolarının tekrar sayfalanması ile sağlanabilir.
 
 
==Sayfa Hatası==
 
----
 
 
Eğer başvurulan veri o anda ana bellekte bulunamıyorsa sayfa ana bellekte mevcut değil demektir ve '''“sayfa hatası (page fault)”''' oluşur. Sayfa hatası çok yüksek bulamama gecikmesine neden olur. Sanal bellek sistemleri tasarlanırken bu durumun yaratacağı yükü engellemek için bazı önlemler alınabilir.
 
* Sayfalar yüksek erişim zamanını karşılayacak kadar büyük olmalıdır.
* Sayfa hatası denetimi sağlanmalıdır.
* Oluşan hatalar donanım yerine yazılımla çözülebilir.
* '''Tümüne yazma (write-through)''' yöntemi çok masraflı olduğu için '''geri yazma(write-back)''' metodu kullanılır.
 
 
===Sayfa Hatası Denetimi (Paging Supervisor) ve Sayfa Değişimi (Takas) ===
 
Sayfa hatası meydana geldiğinde, yönetim işletim sistemine bırakılır. Bu devir ''kural dışı durum (hata) işleyişi (exception mechanism)'' ile gerçekleştirilir. Yönetim işletim sistemine geçtiğinde, sayfayı bir sonraki sıradüzende (genelde teker) bulmalı ve istenen sayfayı ana bellekte nereye koyacağına karar vermelidir. Sanal adres tek başına sayfanın tekerin neresinde olduğunu belirtmek için yeterli olmadığından, sanal adres uzayında bulunan her sayfanın tekerde izini sürmek gerekir. İşletim sistemi bu işlem için her sanal sayfanın tekerde nerede saklandığını kaydeden veri yapıları yaratır. Bu veri yapısı sayfa tablosunda veya ayrı bir tabloda tutulabilir. İşletim sistemi aynı zamanda her gerçek sayfanın hangi uygulamalar ve hangi sanal sayfalar tarafından kullanıldığını takip etmek üzere ayrı bir veri yapısı daha oluşturur. Ana bellekteki tüm sayfalar kullanımdayken sayfa hatası oluşması durumunda, işletim sistemi bir '''sayfayı değiştirmek(takas yapmak)''' üzere seçmelidir. Sayfa hatalarının en aza indirilmesi amaçlandığından çoğu işletim sistemi yakın bir zamanda kullanılmayacağını varsaydığı bir sayfayı seçer. İşletim sistemlerin bu varsayımları geçmiş durum değerlendirmelerine dayanarak gelecek durumun tahmin edilmesine dayanır. Bu tahminlerde kullanılan algoritmaların başında ''en uzun zamandır kullanılmayan''la değiştirme ''(least recently used (LRU))'' gelir. İşletim sistemi en uzun zamandır kullanılmayan sayfanın daha yakın bir zamanda kullanılan sayfadan daha az gerekli olduğu varsayımı yaparak uzun zamandır kullanılmayan sayfayı istenen sayfayla değiştirmek üzere seçer.
 
En uzun zamandır kullanılmayan yönteminin kusursuz ve eksiksiz olarak uygulanması veri yapısının her bellek başvurusunda güncellenmesini gerektireceğinden oldukça masraflıdır. Bunun yerine birçok işletim sisteminde hangi sayfaların yakın zamanda kullanılıp hangilerinin kullanılmadığına dair iz sürülür. İşletim sisteminin yükünü hafifletmek için donanımda '''başvuru biti (reference/use bit)''' tutulabilir. Bu bit sayfanın her kullanımında kurulur. İşletim sistemi belirli aralıklarla bu bitleri temizler ve hangi sayfaların kullanılıp kullanılmadığı bilgisinin kaydını tutar. Bu bilgi ışığında, işletim sistemi bir sayfa değiştireceği zaman en uzun zamandır kullanılmayan; yani başvuru bitleri mantıksal sıfıra eşit olan sayfalar arasından bir seçim yapar.
 
 
====Değiştirme (Takas) İçin Kullanılabilecek Diğer Algoritmalar====
 
 
 
'''İlk Giren İlk Çıkar (First In First Out (FIFO)) '''
 
Değiştirilmek üzere seçilen sayfa bellekte en uzun zamandır tutulan; belleğe diğerlerinden önce yüklenen sayfadır.
 
'''Son Giren İlk Çıkar (Last In First Out (LIFO)):'''
 
Değiştirilmek üzere seçilen sayfa bellekte en kısa zamandır tutulan; belleğe en yakın zamanda yüklenen sayfadır.
 
'''En Az Sıklıkta Kullanılan (Least Frequently Used (LFU)):'''
 
Değiştirilmek üzere seçilen sayfa o an için bellekte en az sıklıkta kullanıldığı belirlenen sayfadır.
 
'''En Uygun (İdeal) (Optimal (OPT / MIN)):'''
 
 
 
Değiştirilmek üzere seçilen sayfa uzun bir süreliğine kullanılmayacak olan sayfadır.
Bu sayfanın belirlenmesi için algoritmanın gelecekteki başvuru (istek) durumları hakkında bilgi sahibi olması gerekmektedir ki genellikle bu bilgi mevcut değildir.
 
==Kalıcı ve Yerleşik Sayfalar==
 
 
Tüm sanal bellek sistemleri hareketsiz kılınmış; yani burada bulunan sayfaların sayfa değişimi için seçilip ikincil belleğe gönderilemeyeceği alanlara sahiptir.
 
* Kesme düzenekleri genellikle çeşitli kesmeleri(örneğin giriş/çıkış tamamlanmaları, zamanlayıcı, izlence (program) hataları, sayfa hataları vb.) işleyen bir dizi göstergelere (pointer) dayanırlar. Kesmelerin sayfa değişimi olmadan işlenmesi kullanışlıdır.
 
* Genellikle sayfa tabloları sayfalanmaz. (bazı özel yöntemler hariç)
 
* Merkezi şilem biriminin dışından ulaşılan veri arabellekleri (data buffers) (doğrudan erişimli bellek(direct memory Access) ve giriş/çıkış kanalları (I/O channels) gibi.) Genellikle bu aygıtlar ve bağlandıkları yollar sanal adresler yerine doğrudan fiziksel adresler kullanırlar.
 
* İşlemleri zamanlamaya bağımlı ve sayfalamanın yol açacağı tepki süresi değişimine izin veremeyecek kadar katı olan çekirdek (kernel) veya uygulama alanları hareketsiz kılınmıştır.
 
 
==Kaynaklar==
 
 
*http://oergin.etu.edu.tr/bil361/sanalbellek.pdf Oğuz ERGİN ''BİL 361 – Bilgisayar Mimarisi ve Organizasyonu, Sanal Bellek''
 
* John L. Hennessy, David A. Patterson, ''Computer Architecture, A Quantitative Approach'' (ISBN 1-55860-724-2)
 
*http://computer-refuge.org/bitsavers/pdf/burroughs/B5000_5500_5700/5000-21005_B5000_operChar.pdf ''Operational Characteristics for the Processors for Burroughs''
 
*http://www.multicians.org/multics-vm.html ''The Multics Virtual Memory: Concepts and Design''
 
==Ayrıca Bkz==
 
[[Sanal bellek]]
 
==Dış Bağlantılar==
 
*[http://en.wikipedia.org/wiki/Virtual_memory/ wikipedia: virtual memory ]
 
*[http://computer.howstuffworks.com/virtual-memory.htm/ howstuffworks: virtual memory]
 
*[http://www.cs.gmu.edu/cne/modules/vm/green/defn.html/ www.cs.gmu.edu/cne :virual memory]
 
*[http://courses.cs.vt.edu/csonline/OS/Lessons/VirtualMemory/index.html/ courses.cs.vt.edu : virtual memory tutorial]
 
*[http://www.belgeler.org/sag/sag_memory-management-vm.html7 belgeler.org: sanal bellek]
 
[[Kategori:sanal bellek]]
"https://tr.wikipedia.org/wiki/Sayfalama" sayfasından alınmıştır