Sanal Bellek (Virtual Memory) Bellek yönetim tekniklerinde belleğin zaman içinde parçalanması ve işlemlerin boyutunun fiziksel belleğin boyutuyla sınırlı olması sorunları vardır. Ana belleğin yetersiz kaldığı durumlarda, işletim sistemi sabit diskte yer açarak, bu alanı RAM gibi kullanır ve bu alana sanal bellek denir.
Sanal Bellek (Virtual Memory) Programların kullandığı iki tür bellek bulunur. Ana bellek bilgisayarın fiziksel, yani gerçek belleğidir. Bu bellekte fiziksel adresler kullanılmaktadır. Sanal bellek ise bilgisayarın sabit diskinde bulunan ve çok işlemli sistemlerde işletim sistemlerinin kullandığı özel bir bellek türüdür. Bu bellek türünde de mantıksal adresler kullanılmaktadır. Programlar genellikle mantıksal adresleri kullanmaktadır. Programlar gerçekten çalışmaya başladığında ise fiziksel adreslere ihtiyaç duyulur. Bu durumda mantıksal adresler fiziksel adreslere dönüştürülür. Sanal Bellek (Virtual Memory) Sanal belleğin en büyük avantajı, programların boyutunun ana belleğin boyutundan bağımsız olmasıdır. Böylece, ana bellekten büyük programlar da çalıştırılabilmektedir. Sanal Bellek bunu yaparken istemsel sayfalama tekniğini kullanır.
Sanal Bellek (Virtual Memory) İstemsel sayfalama tekniği aşağıda belirtilmiştir. İşlemler birbirini belli sırayla takip eden sayfalardan oluşur. Ana belleğe yerleştirilen bir işlemin hangi sayfasının kullanılacağına sayfalayıcı karar verir. Sayfalayıcı ana belleğe işlemin kullanılacak olan sayfasını getirir. Böylece sayfalayıcı kullanılmayacak olan sayfaları ana belleğe getirmez. Tüm sayfalar yerine sadece işlenecek olan sayfaların ana belleğe getirilmesi yer değiştirme zamanını düşürdüğü gibi, ana bellekte daha az yer kullanılmasını sağlar. Sanal Bellek (Virtual Memory) 6 Örneğin, ana belleği MB olan bir bilgisayarda, 00 MB lık bir program çalıştırılmak istenirse, bu programın tümünün RAM e yerleşmesi mümkün değildir. Bu durumda istemsel sayfalama yöntemi kullanılarak, örneğin ana bellek KB lık sayfalara bölünerek, çalıştırılmak istenen programın sadece gerekli işlemlerine ait sayfalar ana belleğe yüklenir. Geri kalanı ise sanal bellekte bekler ve gerekli olduğunda RAM e getirilir.
7 Sanal Bellek (Virtual Memory) Sanal belleğin bir sistemde kullanılabilmesi için hem donanım hem de yazılım olarak desteklenmesi gerekmektedir. Bilgisayar donanımının sayfalama ve kesimleme yöntemlerini destekelemesi gerekmektedir. Yazılım olarak da işletim sisteminin sayfaların sanal bellekle ana bellek arasında taşıyabilmesi gerekir. 8 Sayfalama ve Kesimleme Örnek: Mantıksal adresi (,,00) olan bir hafıza biriminin fiziksel adresini hesaplayınız. Her bir sayfanın uzunluğunun 000 bayt ve. kesimin başlangıç adresinin 7000 bayt, uzunluğunun da 8000 bayt olduğunu varsayınız. FA=7000+*000+00=700 700 00000 66 Page 0 Page Page Page Page Page Segment NO 0 Sanal bellek
Sayfa Hatası 9 Bir işlemin çalıştırılması (koşturulması) sırasında, işlem için gerekli olan sayfa ya da sayfaların ana bellek üzerinde olmaması sonucu oluşan hataya sayfa hatası (page fault) denir. Bir program çalıştırılmak istendiğinde, MİB tarafından çalıştırılacak olan işlemlerin ana bellekte bulunması gerekir. Bu programın çalıştırılacak işlemlerine ait sayfalar ana bellekte değilse, sayfa hatası oluşur ve bu sayfalar sanal bellekten ana belleğe getirilir. Sayfa Hatası 0 Çalıştırılacak sayfaların ana belleğe getirilmesinde şu adımlar sırasıyla gerçekleşir:. İstenilen sayfa sanal bellek (sabit disk) üzerinde bulunur.. Ana bellek üzerinde boş çerçeve aranır. Eğer boş çerçeve varsa o kullanılır. Eğer boş çerçeve yoksa, sayfa yerleştirme algoritmalarına göre bir kurban çerçeve seçilir. Seçilen kurban sayfa sanal bellek üzerine yazılır.. İstenilen sayfa, boşaltılan çerçeve içine yerleştirilir. Bu işleme sayfaya yeniden yerleştirme denir.
Yeniden Yerleştirme Algoritmaları Bu algoritmaların amacı ana bellekten sanal belleğe aktarılacak sayfayı seçmektir. Algoritmaların başarısı, seçilen sayfanın yakın gelecekte kullanılmaması ile belirlenebilir. Algoritmaların çoğu işlemlerin geçmiş davranışlarına bakarak gelecek hakkında tahmin yürüterek çalışmaktadır. Dört farklı algoritma kullanılmaktadır: En uygun (Optimal) En önce kullanılan (Least recently used-lru) İlk-giren-ilk-çıkar (First-in-first-out-FIFO) Saat (Clock) En Uygun Algoritması Bu algoritmada, gelecekte istenilebilecek en son sayfa seçilir ve sanal belleğe taşınır. En az sayfa hatası oluşturan algoritmadır. Ancak gelecek hakkında çok kesin bir bilgiye sahip olmak imkansızdır. 6
En Uygun Algoritması Örnek: Bir işlemin beş sayfası (,,,,) ve bu sayfaların yerleşebileceği ana bellekte bulunan üç tane çerçeve bulunduğunu varsayınız. İşlemin sayfalarının aşağıdaki sırayla ana belleğe taşınması gerekir. En Uygun Algoritması Beş sayfadan oluşan işlem Ana bellekte kullanılacak olan üç boş çerçeve 7
En Uygun Algoritması Örnek: Ana belleğe taşınacak sayfalar Çerçeve Çerçeve Çerçeve Sayfa hatası Bu algoritmada, gelecekte istenilebilecek en son sayfa seçilir ve sanal belleğe taşınır. Toplam 6 tane sayfa hatası oluştu. 6 En Önce Kullanılan (LRU) Bu algoritmada ana bellekteki en önce kullanılmış olan sayfa değiştirilir. En uygun algoritması kadar iyi bir performansı vardır. Ancak uygulanması zor bir algoritmadır. 8
7 En Önce Kullanılan (LRU) Örnek: Ana belleğe taşınacak sayfalar Çerçeve Çerçeve Çerçeve Sayfa hatası Bu algoritmada ana bellekteki en önce kullanılmış olan sayfa değiştirilir. Toplam 7 tane sayfa hatası oluştu. 8 İlk-Giren-İlk-Çıkar (FIFO) Uygulanması en kolay algoritmadır. Ana bellekte en uzun süredir bulunan sayfa değiştirilir. Değiştirilen sayfaya kısa sürede ihtiyaç duyulabilir, bu da sayfa hatası sayısını artırabilir. 9
9 İlk-Giren-İlk-Çıkar (FIFO) Örnek: Ana belleğe taşınacak sayfalar Çerçeve Çerçeve Çerçeve Sayfa hatası Ana bellekte en uzun süredir bulunan sayfa değiştirilir. Toplam 9 tane sayfa hatası oluştu. 0 Saat Algoritması (Clock) Bu algoritmada her bir sayfa için kullanım bit i (*) adı verilen bir bit kullanılır. Sayfa belleğe yüklendiğinde bu sayfanın kullanım biti olur. Sayfa bellekte bulunduğu bir zamanda tekrardan çağrılacak olursa yine kullanım biti yine olacaktır. Boş çerçeve kalmadığı zaman tüm kullanım bitleri 0 olacaktır. Yeniden yerleştirme gerektiğinde de kullanım biti 0 olan ilk çerçeve seçilecektir. 0
Saat Algoritması (Clock) Örnek: (*-kullanım bitini ifade etmektedir) * * * * Ana belleğe taşınacak sayfalar Çerçeve * * * * * * * * * * * * Çerçeve Çerçeve Sayfa hatası * Yeniden yerleştirme gerektiğinde de kullanım biti 0 olan ilk çerçeve seçilecektir. Toplam 8 tane sayfa hatası oluştu. * * * * * * * * * * * * Sanal Bellek Kullanımı Bilgisayarınızda bir programı çalıştırmak veya işlemi yapmak için gereken rastgele erişim belleği (RAM) yoksa, Windows onun yerine sanal bellek kullanır. Sanal bellek, bilgisayarınızın RAM öğesini sabit diskinizdeki geçici alanla birleştirir. RAM azaldığında sanal bellek, verileri RAM'dan disk belleği dosyası denilen bir alana taşır. Verilerin disk belleği dosyasına taşınması ve gerektiğinde buradan alınması, işi tamamlamak için gerekecek miktarda RAM sağlar.
Sanal Bellek Kullanımı Bilgisayarınızdaki RAM ne kadar fazla olursa, programlarınız da genellikle o kadar hızlı çalışır. RAM azlığından dolayı bilgisayarınız yavaşlıyorsa, oluşan açığı karşılamak için sanal belleği arttırmanız gerekebilir. Ancak bilgisayarınız RAM'daki verileri, sabit diskteki verileri okuduğundan çok daha hızlı okuyabilir, bu nedenle RAM eklemek en iyi çözümdür. Çalışma Sorusu Bir işlemin sayfaları için ana bellekte dört çerçevenin kullanıldığını varsayınız. Aşağıdaki tabloda hangi sayfanın hangi çerçevede bulunduğu, sayfaların çerçeveye ne zaman yüklendiği, sayfaların ne zaman kullanıldığı ve kullanım biti değerleri verilmiştir. Sayfa numarası Çerçeve numarası Yüklenme zamanı Son kullanılma zamanı Kullanım biti 0 0 6 60 60 0 6 6 0 0 6
Çalışma Sorusu Çalışmakta olan işlemin yeni bir sayfasının belleğe yükleneceğini varsayınız. Bu sayfanın ilk-giren-ilk-çıkar (FIFO), en önce kullanılan (LRU) ve saat (clock) algoritmalarına göre hangi çerçeveye yerleşmesi gerektiğine karar veriniz. 6 Çalışma Sorusu Cevap: Sayfa numarası Çerçeve numarası Yüklenme zamanı Son kullanılma zamanı Kullanım biti 0 0 6 60 60 0 6 6 0 0 6 İlk-giren-ilk-çıkar (FIFO): Çerçeve numarası seçilecektir. En önce kullanılan (LRU): Çerçeve numarası seçilecektir. Saat (Clock): Çerçeve numarası seçilecektir.
7