( VIRTUAL MEMORY )
ÖZET :
Yapılan büyük boyutlu
programların kullanılması amacıyla geliştirilmiş bir bellek teknolojisi olan sanal
bellek sisteminin çalışma sistemi incelenmiş olup,sanal adres hesapları, segmentasyon , sayfalama
kavramları ve sayfalamada kullanılan algoritma çeşitleri verilmiştir .
Ayrıca Windows 95 işletim sisteminin sanal bellek ayar desteğide rapora eklendi ve
bununla ilgili (Win'95 te) bilgisayar üzerinde bir test yapıldı .
GİRİŞ :
Bilgisayarın çalışması sırasında işleyeceği tüm verilerin depolandığı bellek alanı bilindiği üzere RAM ( Random Access Memory )' dir . Bilgisayarlarda kalıcı olarak depolanan veriler sabit diskler gibi veri depolama aygıtlarında saklanırlar . Bir programın çalıştırılması demek sabit diskte bulunduğu yerden alınıp ana belleğe ( Main Memory ) yüklenmesi demektir . Bilgisayarların ilk yıllarında bellekler hem küçük hem de pahalılardı . Programcılar bu belleklere uygun programlar yapmak zorundalardı . Her zaman olduğu gibi programlar geliştirilmeye devam etti ve belleklere artık sığmaz oldu .Bu da tasarımcıları yeni sistemler oluşturmaya itti . Günümüzde sanal bellek ( Virtual Memory ) adını verdiğimiz bu teknik işte bu gelişim sürecinde ortaya çıktı .
Sanal bellek sistemleri günümüzde ana belleği yardımcı belleklerle (Auxilary veya Secondary Memories ) birlikte en iyi şekilde kullanmaya çalışır ve bunu amaç edinmiştir . Daha açık bir ifadeyle ; varolan yardımcı bellek birimlerinin sanki sistemin ana belleğiymişçesine kullanımıdır .
Sanal bellek 2 avantaja sahiptir . Birincisi belirttiğimiz gibi fiziksel belleğin ( Physical Memory ) normalde izin vereceğinden çok daha yer sağladığından , daha büyük programların yürütülmesini sağlar . İkinci avantajı ise mevcut fiziksel adres aralığı içine düşen mantıksal adresleri seçme zorunluluğundan kurtarır . Programcı , programı ve değişkenleri için istediği mantıksal adresleri seçme özgürlüğüne sahiptir . Seçilen adreslerin hiç önemi yoktur . Çünkü mantıksal adresler işletim sistemi ( Operating System ) uyduğunu gördüğü sürece otomatik olarak mevcut fiziksel bellek alanına eşlenirler .
Şekil 1 de fiziksel bellek ile mantıksal bellek arasındaki farkı görmekteyiz . Değişkenler adreslere aktarılmaktadır . Bu işlem derleyici veya assembler tarafından yapılır . Adres boşluğundaki sanal adresler ( Virtual Adresses ) fiziksel adresler değildir . Bir adresin bulunması , sanal bir adresin fiziksel adrese çevrilmesini gerektirir . Bu işlem , işletim sistemi tarafından program yüklendiği zaman yapılır .
SANAL ADRES HESAPLAMA (virtual adress calculation)
Sanal bellek sistemleri (Virtual Memory Systems) komutları ve verileri belleğin bloklarına depolar . Bir yaklaşım; sayfalama ( Paging ) diye bilinen birbirine eşit uzunluktaki blokların kullanımıdır . Diğer bir yaklaşım ise parçalama -segmentasyon- ( Segmentation ) dır . Yani değişken uzunluklu blokların kullanılmasıdır . Sayfalama mantığında her sayfa 4 Kbyte lık bloklardır ve her sayfa yine 4K ile bölünebilen bir fiziksel adrese sahiptir . Segmentasyonda ise her parça İntel in korumalı mod ( protected mode ) 'unda 1 byte tan 4Gbyte 'a kadar azami fiziksel bellek boyutuna sahip olabilir . İki durumda da komutun veya verinin sanal adresi , blok adresinden ve o blok içindeki yerinin birleşiminden oluşur . Aşağıdaki şekilde bu görülmektedir .
Bir önceki şekilde ( şekil-3 'te )görüldüğü üzere sanal adres ile gelen sayfa numarası sayfa haritasından bulunan taban adres ile belleğe gelir . Sanal adres içindeki ofset 'i ile sayfanın başlangıç adresi toplanarak gerçek adresi bulunur .
Bu hesaplar işletim sistemi tarafından otomatik olarak yapılır . Buradaki sayfa haritası ( Page Map ) veya blok haritası ( Block Map ) adıyla bilinen segment veya sayfa adreslerinin tutulduğu yeri basitçe inceleyelim .
Şekil 4 'e bakacak olursak ; Presence sütununda sayfanın birincil bellekte mi ( Primary Memory ) yoksa yardımcı bellekte mi olduğuna bakılır . Eğer burası 1 içeriyorsa sayfa birincil bellektedir , 0 içeriyorsa yardımcı bellek birimlerinden birinde demektir. 3.satıra dikkat edersek burada presence sütununda 0 vardır ki adresindeki 12352 sayıları yerleşiminin 123 , 5.alan ( surface ) , 2.sektor dur ve tahminen sistemin cache diskinde yer alır . Permission kısmı ise bellek koruması için kullanılır . Bulunulan blokta ne yapılabileceğini belirler . Burada eğer r var ise bu blok yanlızca okunur ( Read only ) , m var ise blok değiştirilebilinir demektir .
Şimdi ise sanal adres hesabında daha açıklayıcı bir şekil olan Şekil 5 'e bakalım . Bu şekil diğer şekillerimize ek olarak , blok harita tablosunun taban adresini içinde bulunduran blok tablosu başlangıç kaydedicisini (Block Table Origin Register ) içermektedir . Bu şeklimizi adım adım inceleyecek olursak ;
1.basamak : Çalışan program V yerinden veri istemeye başladığı zaman işlem başlar . 2.basamak : Blok no'su ( b ) ve bloğun başlangıç adresi ( a ) toplanırlar ( a+b ) 3.basamak : Tabloda bulunan noktadan (eğer blok birincil bellekteyse )bloğun yerleşim adresi alınır ( b2 ) .
4.basamak : Alınan b2 adresine sanal adresteki ofset adresi eklenir . Sonuçta fiziksel adres hesaplanmış olur . Eğer sayfamız yani bloğumuz yardımcı belleklerde ise işlem devam etmeden önce sayfa yüklenecektir . Bir örnek ile sanal bellek hesabını gösterelim ; V= ( 1, 20 ) ile gelen veri isteği olsun . Blok başlancıç kaydediciside 1500 içersin . 2.basamakta 1500+1 yani 1501 elde edilir ve 1501 adresinin içeriğine bakılır . 3.basamakta ise bakılan blok başlangıç adresinin de 7000 olduğunu farz edelim . Son olarakta 7000 'e ofsetimizi eklersek 7020 gerçek adresimizi elde ederiz .
SAYFA HATALARI ( page faults ) :
Eğer sanal adresle aranan sayfa , sayfa tablosunda bulunamazsa sayfa hatası verilir . Böyle durumlarda sayfa yer değişimi ( page replacement ) uygulanır . Hafızadan sayfa bulunur ama kullanılmaz , yer değiş-tokuşu (takas) yapılır. Yani işletim sistemi ikincil bellekten gereken sayfayı okur ve bunun fiziksel bellek yerleşimini sayfa haritasına girer . Ve hataya sebep olan komutu yeriden tekrarlar . Programın işletilmesi devam eder . Sayfa hatasının ortaya çıkışı basitçe Şekil 6 da gösterilmiştir . Kırmızı renkle gösterilen olay sayfa hatasıdır .
SAYFALAMA ALGORİTMALARI (paging algorithm):
En az sayfa yer değişimini ( Page Replacement ) kullanmak için yıllarca araştırmalar yapılmıştır . Bunun amacı hızlı bir şekilde programın çalıştırılması ve en az işle aynı verimi sağlamak olmuştur . Teoride en iyi algoritma ilerde ne olacağını bilen , ideal bir algoritma olsa da pratikte böyle bir yaklaşım pek de elverişli değildir .
Programı belirli bir veri ile çalıştırmak gerektiğinde mümkün olan bütün yer değişim düzenleri sırayla en iyi yer değişim stratejisine karar verirler . Temelde dikkate alınan üç algoritma vardır ;
1-) Rastgele sayfa toplama ( RAND ) .
2-) Gerçek bellekteki en uzun sayfayı toplama ( FIFO-First In Last Out )
İlk gelmiş olan sayfa diske ilk olarak geri gönderilir .
3-) Sayfaların kullanımının dikkate alındığı ve en uzun süredir
kullanılmayan sayfanın ana bellekten atılarak diske geri kopyalandığı
algoritmadır ( LRU - Least Recently Used) .
LRU yapısı en alışılagelmiş seçimdir . Algoritmalar içinde ideale yakın bir bakıştır . İşletim sistemleri bu algoritmalar kaynak alınarak yazılır .LRU açısından bakarsak , sayfa kullanımlarının kaydedilmesi işletim sistemi için gereklidir . Bu kayıt işlemi sıklıkla sayfa tablosunda ( Page Table ) bir bayrak ( Flag ) gibi uygulanmıştır . Her bir kaç milisaniyede burada kullanılan bayraklar sonradan gelen ayarlarla temizlenir ve her sayfanın kullanımını üzerine ayarlar .
Windows 95 işletim sistemi sanal bellek ayarları :
İpuçlarıYukarıdaki ipuçları kısmı Windows 95 help 'inden aynen alınmıştır . Sanal bellek ayarlarına aşağıda belirtildiği gibi geçilebilir ( şekil 7 ).
Tarafımdan yapılmış olan bir sanal bellek testi :
32Mbyte RAM , 512Kbyte ön belleği olan bir bilgisayar üzerinde yapıldı .
Üstteki penceredeyken (şekil 8) En az kutusuna 0 , En çok kutusuna ise 1 yazıldı (Bu birimler Mbyte cinsindendir) . Tamam butonuna tıklandıktan sonra karşıma aşağıdaki şekil geldi (şekil 9) .
Evet butonundan sonra bilgisayarı RESTART işlemine geçirdim . Bilgisayarım açıldı, fakat DLL dosya hataları ve yetersiz sanal bellek ve bellek hataları vererek . MsPaint programı bile açılmadığı için uyarı pencerelerini resim bazında alamadım . Denetim masasına erişim sağlanamadı . Kısacası bilgisayar da hareket edemez oldum .
Bu sorundan kurtulmak için ;
1. Yol :
Başlangıç (startup) ta olan kısayollar silindi . Bilgisayar sorunluda olsa kapatıldı. Açıldıktan sonra yüklenen programlar azaldığından, denetim masasına ulaşılabilindi ve sistem sanal belleğini Windows 'un yönetmesi sağlandı .
2. Yol :
Bilgisayar açılırken Windows 95 başlıyor ... cümlesinden sonra F8 e basılarak gelen menüden güvenli kip seçilmiş ve bu kipte bilgisayar açıldıktan sonra sanal bellek ayarları düzeltilmiştir .
SONUÇ :
İşlemci tasarımları sanal bellek teknolojisi düşünülmeden olmamaktadır . Bunlar için CPU üzerine özel kaydediciler ayarlanmıştır . İşletim sistemi tasarlanırken dikkat edilmesi gereken en önemli öğelerden biri sanal belleğin düşünülmesi olmuştur ki bu sayede büyük boyutlu programları kullanmamız imkanı doğmuştur. Görülmüştür ki sanal bellek olmadan Win95 işletim sisteminin kullanılması da ( güvenli kip dışında )mümkün olmamıştır.
Yararlanılan kaynaklar
1-) Tom LUCE , Computer Hardware,System Software, and Architecture , Singapore : McGraw-hill Book Co. , 19892-) Harold S.STONE , High-Performance Computer Architecture , U.S.A. : Addison-Wesley Publishing Company , 1987
3-) Michael TISCHER & Bruno JENNRICH , PC Intern , New Sixth Edition , U.S.A. : Abacus-Data Backer , 1996
4-) Yrd.Doç.Dr.Emin Doğan AYDIN , Bilişim Sistemleri Sözlüğü , Ankara : Ağustos , 1992
5-) Dilek OKTAY , Bilgisayar Sözlüğü , İstanbul : Şubat , 1998
6-) George W. GORSLINE , Computer Organization , Second Edition , U.S.A. : Prentice Hall , 1986
7-) Gazi GÜDER , Bilgi İşlem Terimleri Sözlüğü
prepared by UĞUR ÖCAL©