Sayfa hatası denetimi

Sanal bellekte Sayfa hatası meydana geldiğinde çok yüksek bulamama gecikmesine neden olur. Sanal bellek sistemleri tasarlanırken bu durumun yaratacağı yükü engellemek için **Sayfa hatası denetimi** sağlanmalıdır.

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. (Bkz: Sayfa değişimi )

Eğer Adres Dönüştürme Önbelleğinde bir sayfa bulamama olayı *((ıska) (miss))* gerçekleşirse bunun nedeninin bir sayfa hatası mı yoksa sadece ADÖ' den kaynaklanan bir sayfa bulamama (miss) mı olduğuna karar verilmelidir. Eğer sayfa bellekte mevcut ise sorunun ADÖ' de bir dönüştürme hatasından ve eksikliğinden kaynaklandığı anlaşılır. Bu durumda işlemci sayfa tablosundaki adres dönüşümlerini Adres Dönüştürme Önbelleğine baştan yükleyerek, başvuruyu *(reference)* tekrar eder. ADÖ sayfa bulamama durumu donanımla veya yazılım kullanılarak halledilebilir. Eğer sayfa bellekte mevcut değil ise gerçek bir sayfa hatası *(page fault)* söz konusudur. Bu durumda işlemci, işletim sistemini kural dışı durum *(exception)* ile uyarır.

## Tarihçe

Birçok sistem sanal bellek kullanımından önce de belleğin birden çok izlence arasında paylaşımını sağlayabilecek yeteneğe sahipti. PDP-10 ‘un ilk modellerinde görülen taban ve sınır yazmaçlarını (base and bounds registers) bu duruma örnek olarak gösterebiliriz. Bu yöntem her bir uygulamaya 0'dan başlayan özel bir adres uzayı ve bunun yanında adresin bellekte uygulama için ayrılan kısmında olup olmadığını denetleyen bir sınır yazmacının kullanımını içerir. Eğer yazmaç adresin ilgili kısma ait olduğunu onaylarsa, karşılık gelen taban yazmacı içeriğini de ana bellekteki adresi göstermek üzere işleme dâhil eder.

Sanal bellek X86 mimarisine Intel'in I286 (80286) işlemcisinin güvenli biçimi (protected mode) ile tanıtıldı. Önceleri bölüm takası (segment swapping) ile gerçekleştirildi ancak büyük bölümlerde (segment) sorun yaratıyordu. Intel 80386 mevcut bölmelere ayırma katmanının altında işleyen Sayfalama(paging) yöntemini tanıttı. Artık **sayfa hatası** (page fault) diğer kural dışı durumlarla (exception) birlikte değerlendirilebilmekteydi.
## Ayrıca bakınız

* Sanal bellek
* Sayfa hatası
* Sayfalama
* Sayfa değişimi

## Kaynakça

* 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)
* https://web.archive.org/web/20100806135317/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*

## Dış bağlantılar
* howstuffworks: virtual memory
* www.cs.gmu.edu/cne :virual memory
* courses.cs.vt.edu : virtual memory tutorial
* belgeler.org: sanal bellek