Sayfa değişimi

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ılmayanla 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) iç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.

## Ayrıca bakınız

* Sanal bellek
* Sayfalama
* Sayfa hatası
* Sayfa hatası denetimi

## 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