Geri Git   ForumSinsi - 2006 Yılından Beri > Genel Kültür & Serbest Forum > ForumSinsi Ansiklopedisi

Yeni Konu Gönder Yanıtla
 
Konu Araçları
bellek, memory, sanal, virtual

Sanal Bellek - Virtual Memory

Eski 06-22-2012   #1
Prof. Dr. Sinsi
Varsayılan

Sanal Bellek - Virtual Memory



Grafik tabanlı işletim sistemleri ile çalışmaya başladığımızdan beri, bilgisayarımıza takılı olan belleklerden daha fazla kullanmak durumunda kalırız Bu belleklerin bilgisayarımızda çalışması gereken dosyalar için ne kadar kullanılması gerektiği konusunu çok fazla kestiremediğimiz için, bu belleklerin ne kadar fazla yada ne kadar yeterli olduğunu bilemiyoruz Sistemde takılı olan ram yeterli değil ise ve çalışan programlar için ek bellek ihtiyacı doğduysa, sistemimiz sabit disk alanından kullanarak kendini bilgisayarımızda takılı olan RAM”e benzetir Bu durum bildiğimiz Sanal Bellek”tir Sanal Belleğe örnek verecek olursak, sistemimizde normalde takılı olan bellek 512 MB”tır diyelim Ama bilgisayarımızda çalışan program”a göre bu bellek yetersiz Bilgisayarımız en düşük olarak 768 MB, en yüksek olarak 1536 MB lık bir alana, sistemde çalışan ama takılı olan RAM kendisi için yetersiz olan programın çalışırkenki depolaması gereken dosyaları depolar Bu alana disk belleği dosyası denir Unix”teki takas dosyasına benzer bir dosyadır
Pagefilesys adlı disk belleği dosyasının boyutu sistemde var olan belleğin 15 katıdır Bir program çalıştırıldığında, çalışan tüm modülleri belleğe yüklense de, programın bazı çalıştırılması gereken modülleri aynı anda CPU tarafından kullanılmaya başlar CPU”nun hemen kullanacağı modüller, sistemimizde takılı olan belleğe yüklenir, daha sonra çalıştırılması gereken modüller disk üzerindeki sanal bellek”te tutulur CPU diğer modüllere ihtiyaç duydukça, gerçek bellekteki modül diske yazılır, diskteki modül belleğe yüklenir Bu değiştirilme işleminden dolayı bu dosyaya takas dosyası denmiştir ve bu değiştirlme işleminin adı Paging veya Paging File”dır Bilgisayar üzerinde takılı gerçek RAM miktarı ne kadar fazla ise, Windows Page-File”a o kadar az ihtiyaç duyar ve bu da sistemin çok daha hızlı çalışması demektir Çünkü disk üzerindeki Page-File”a erişim, bellek çiplerine göre çok çok yavaştır
Sistemimizdeki sanal bellek miktarına bakacak olursak, Windows bilgisayarımızdaki RAM”in miktarına göre en uygun Pagefile dosyası önerir RAM miktarı olması gerekenden düşük olduğu bir sistemde, sürücümde yeterince yer var, Pagefile dosyasını yüksek bir değer olarak belirleyebilirim diye düşünüyorsanız yanılıyorsunuz Çünkü Windows”u verimli olarak kullanabilmemiz için takas dosyası olan Pagefile dosyasınıni sistemdeki gerçek RAM”e göre orantılı olmalıdır Yani anlayacağımız, sanal bellek bazı durumlarda yetersiz kalır ve sisteme RAM takviyesi yapmak zorunda kalabiliriz
Sanal bellek kullanımını en iyi duruma getirmek için,
1- Sanal bellek için ayrılacak alanı birçok sürücüye bölün (bu durum normalde sistemimizi kurarken fdisk ve biçimlendirme işleminde yaptığımız HDD bölümleme işlemi ile zaten yapılmaktadır)
2- Sanal belleğimizi yoğun olarak çalışan sürücülerden kaldırmalıyız Yani sanal belleğimiz, sistem dosyalarının bulunduğu sürücünün haricinde bir sürücüde olmalıdır
3- Ve sanal bellek dosyamızı(Pagefile) hataya karşı dayanıklı olan sürücülere (Raid 5 ve yansıtılmış bölüm gibi) koymamalıyız Bunun nedeni verileri birden çok yere yazmak gerekeceği için veri yazma hızı düşebilir
4- Aynı fiziksel disk sürücüsünde yer alan farklı bölümlere yerleştirmeyin


Bilgisayarımızdaki RAM(bellek) kullanımını en iyi duruma getirmek için, bilgisayarımızı birincil olarak sunucu ( Genelde ağ kullanıcılarına paylaşılan kaynaklar sağlayan bir bilgisayar) olarak değilde iş istasyonu olarak kullanmayı seçersek, programlarımız için ayrılan daha fazla bellek alanına sahip olabiliriz Programlarımız daha hızlı çalışır ve sistem önbellek boyutumuz Windows XP ile birlikte verilen varsayılan değerine yeniden ulaşır Eğer bilgisyarımızı sunucu olarak kullanacaksak veya daha büyük önbellek gerektiren programlar kullanacaksak, sistem önbelleği için daha fazla bilgisyar belleği ayırabiliriz
Aşağıdaki resimde iş istasyonu olarak kullanılan makinaların kullanılacak bellek için en uygun ayarlamalarını görebilirsiniz Sunucular için en iyi performans ayarı için Sistem önbelleği seçmeniz yeterli olacaktır Ve daha sonrasında sanal bellek ayarlarının nasıl yapılacağını görebilirsiniz


Gelişmiş sekmesindeki Performans bölümündeki Ayarlar düğmesine tıklıyoruz gelen penceredeki

Tekrar gelişmiş sekmesine gelerek ilk olarak bilgisyarımızı sunucu(yani ağ üzerinden bilgisyarların paylaşımı için kullanılacak bilgisyar) olarak mı yoksa iş istasyonu olarak mı kullanacağımıza göre bellek kullanım ayarlamasını yapıyoruz Genel olarak bilgisayarla iş istasyonu olarak kullanıldığı için Programlar seçeneğini seçiyoruz, eğer bilgisayarımızda sistem önbelleğini daha çok kullanan programlar çalıştırıyorsak ya da bilgisayarımızı sunucu olarak kullanacaksak Sistem önbelleği seçeneğini seçerek, Sanala bellek ayarlarının yapılacağı Değiştir butonuna tıklıyoruz,

Gelen pencerede, Sanal bellek için ayarlamamız gereken başlangıç boyutunu ve en büyük boyutu belirliyoruz Yukarıdada belirttiğim gibi sanal bellek dosyamızı sistem dosyalarının bulunmadığı ve çok yoğun olarak çalışmayan sürücüye göre ayarlamamız sanal bellek kullanımının hızı açısından daha iyi olacaktır Sistem dosyaları ve yoğun olarak çalışan C: sürücüsü olduğu için sanal bellek dosyamızı D: sürücüsüne koyuyoruz Öncelikle Sürücü Birim Etiketi kısmından D: sürücüsünü belirleyip Özel boyut kısmından Başlangıç boyutunu sistemde bulunan RAM (512 MB) “e göre 15 katını olan 768 MB olarak ayarlıyoruz En büyük boyut olarakta RAM “imizin 3 katı olan 1536 MB olarak ayarlıyoruz Ve Ayarla düğmesine tıklayarak verilerin aktifleşmesini sağlıyoruz Tamam düğmesine tıklayarak yaptığımız işlemleri kaydederek çıkıyoruz Eğer Sistem yönetimli boyutu seçecek olursak sistem varsayılan olarak sanal bellek miktarını belirleyecek ve kullanacaktır Disk belleği dosyası yok seçeneğini seçmemiz durumunda sistem sanal belleği kullanmayacaktır Bu işlemlerin aktifleşmesi için sistemimizi resetlememiz gerekecektir

Alıntı Yaparak Cevapla

Sanal Bellek - Virtual Memory

Eski 06-22-2012   #2
Prof. Dr. Sinsi
Varsayılan

Sanal Bellek - Virtual Memory



SANAL BELLEK - Virtual Memory
Çalışabilmesi için var olan bellek kapasitesinden fazlasını isteyen programların çalışabilir kılınması eski bir bilgisayar problemidir Buna üretilen genel çözüm katman (overlay) yaklaşımı idi Katmanlar programın parçalara bölünmüş hali idi Sıfırıncı katman ilk olarak çalışmalı, işi bittikten sonra başka bir katmanı çağırmalıydı Bunun yanında karmaşık yapılı, bellekte çoklu katmanlar çalıştırılmasını sağlayan yaklaşımlar da vardı Katmanlar diskte bulunmalı, işletim sistemi tarafından belleğe yüklenmesi veya bellekten kaldırılması yapılmalı idi

Bu yaklaşımdaki temel sorun, programın parçalara bölünme işinin programcı tarafından yapılmak zorunda olması idi Bu işin büyük bir program için yapılması da oldukça zaman kaybına sebep olacağı açık idi

Sonuçta sanal bellek kavramı ortaya çıktı Temel mantığı program kodunun, programda kullanılan değişkenler, veri yapıları, vsnin (data) ve de programın yığın alanının (stack) var olan bellek alanına sığmamasına dayanırBu durumda işletim sistemi programın kullanılan parçalarından kullanılanları bellekte, kalanını ise diskte tutar

Kısaca söylemek gerekirse, sanal bellek bir bilgisayar programının var olan gerçek fiziksel bellekten daha fazla bellek varmış gibi davranmasını sağlayan sistemdir
SAYFALAMA VE SAYFA HATASI
Pekçok bilgisayar sistemi sanal bellek adı verilen bir teknik kullanmaktadır Her bilgisayarda kullanılabilecek bir adres uzayı vardır Adres uzayı ile işlemcinin, bir sürecin veya bellek ve işlemci dışındaki bir bilgisayar donanımının erişebileceği adress genişliği/sınırı kastedilmektedir Aşağıdaki program kodunu inceleyelim

MOVE x, 1000

Mimari tasarımın, bu kod parçasının 1000 numaralı adresteki verinin, X ile gösterilen yazmaca veya değişkene atanmasını sağlayacak şekilde yapıldığını düşünelim Programda üretilen/kullanılan adresler sanal bellek sisteminin kullanıldığı bir tasarımda gerçek fiziksel adresler değildir Programda üretilen adreslere sanal adres denir ve bu adresler sanal adres uzayını oluşturur Sanal adresler yazılımsal veya donanımsal olarak gerçek fiziksel adreslere çevrilmektedir Sanal adres uzayı eşit büyüklükteki parçalara bölünür Bunların herbirine sayfa (page) denir Bu sayfalara karşılık gelen fiziksel bellek alanlarına ise sayfa çerçevesi denir Eşit büyüklükte ve adreslenebilirlikteki kolaylığı nedeniyle 4K seçilen sayfa ve sayfa çerçevelerinden oluşan bir gösterim aşağıdaki gibi olabilir

Görüldüğü gibi sanal bellek üzerindeki bazı alanlar gerçek fiziksel bellek üzerindeki alanlara karşılık gelmektedir Bire-bir şekilde yapılan iki yapı arasındaki bu eşlemeye haritalama (mapping) denir Yazının bundan sonraki kısmında bellekteki sayfa ile, sanal bellek üzerinde fiziksel belleğin bir alanını referans eden sayfa ve bunun referans ettiği alan içindeki bilgiler kastedilecektir
SAYFA HATASI
Yukarıdaki şekilde sayfaların bazılarının fiziksel belleğe referans etmediği görülmektedir (X ile işaretli alanlar) Programın çalışması sırasında program kodu, erişim yetkisi olmayan bir alana erişmeye çalışabilir veya sanal bellek üzerinde fiziksel belleğe henüz referans edilmemiş bir alana erişmeye çalışabilir Sayfa Hatası olarak adlandırılan bu durumda, işletim sisteminin bellekten uygun bir sayfayı boşaltması ve istekte bulunan programa bunu tahsis etmesi gerekmektedir Bellekte uygun bir sayfa ayarlandıktan sonra, sayfa hatasına sebep olan kod tekrar çalıştırılır Gözden kaçırılmaması gereken nokta, tahsis edilecek bellek gözündeki veriler değiştiyse, önce bunların takas alanına aktarılarak saklanması gerekliliğidir Değişmediyse, ayarlanan sayfa üzerine veriler yazılacaktır

Yukarıda bahsi geçen, sayfa hatası durumunda bellekteki uygun bir sayfanın seçimi ele alınması gereken bir noktadır Eğer sıklıkla kullanılan bir sayfa seçilirse, takas alanından bu sayfanın sık çağrılmasından dolayı performans kaybı olacaktır Şimdi sayfa hatası durumunda seçilecek sayfayı belirlemeye getirilen yaklaşımlardan biri olan FIFO (first in- first out)'yu inceleyelim
FIFO (First In - First Out)
Bu yaklaşımda işletim sistemi bellekte bulunan sayfalar için bağlı bir liste yapısı oluşturur Listedeki yapıların bellekteki sayfaları işaret eden yapılar olduğunu düşünebiliriz Bu listenin baş (head) kısmı en eski (belleğe ilk gelen) sayfayı tutarken, kuyruk (tail) kısmı en yeni (en son gelen) sayfayı tutar Bir sayfa hatası durumunda, listede baş kısmın işaret ettiği sayfa seçilmektedir Belleğe yeni yüklenen sayfa da liste sonuna eklenir
Uygulaması ve yazılması kolay bir metoddur Fakat sadece sayfaların belleğe geliş sıralarına bakmakta, sayfaların kullanım sıklığını göz ardı etmektedir Sıklıkla kullanılan sayfaların da bellekten çıkarılmasına sebep olabilmektedir Ayrıca belleğe her sayfa giriş çıkışında da bağlı listenin güncellenmesi gerekecektir Bunun için tercih edilen bir metod değildir

Sadece 3 tane sayfayla referans edilebilen bir bellekte sirasiyla 1,5,3,1,6,1,6,5 numarali sayfalara erişim gerekliliği olsun Bellekteki sayfaların durumu sırasıyla aşağıdaki gibi olacaktır

1 numarali sayfaya istekte bulunulduğunda sayfa belleğe yüklenecektir Daha sonra 5 numarali sayfaya istekte 5 ve ardindan da 3 numarali sayfa belleğe yüklenecektir Bu anda belleğe ilk yüklenen 1 numarali sayfa en eski durumunda, son eklenen 3 ise en yeni durumundadır Daha sonra 1 numaralı sayfaya tekrar istekte bulunulur ve bellekte zaten olduğu için herhangi bir yerdeğiştirme yapılmadan sıradaki 6 numaralı sayfaya istek ele alınır Henüz bellekte referans edilmemiş bir sayfa numarasına istek verildiğinden sayfa hatası oluşur ve bunun FIFO ile çözümünün yapılabilmesi için en eski sayfanın çıkarılıp yerine yeni gelen sayfanın yüklenmesi gerekmektedir Buradaki çıkarma işleminin eger çıkarılacak sayfada bir değişiklik olduysa takas alanına yazmak ya da kullanılmayacaksa üzerine yazmak şeklinde olacağı unutulmamalıdır Böylece 6 numaralı sayfa 1 numaralı sayfanın olduğu konuma yüklenir Bu durumda en yeni olan sayfa 6, en eski olan sayfa ise 5 dir 1 numaralı sayfaya tekrar istek geldiğinde artık bellekte olmadığından tekrar sayfa hatası oluşur ve bu sefer 5 numaralı sayfa çıkarılarak yerine 1 numaralı sayfa yüklenir Tekrar 6 numaralı sayfaya istekte bulunulduğunda zaten bellekte olduğu için sıradaki isteğe geçilir ve 5 numaralı sayfa isteğiyle sayfa hatası tekrar oluşur ve diğerlerine göre daha uzun süredir bellekte beklemekte olan 3 numaralı sayfa çıkarılarak yerine 5 numaralı sayfa yüklenir

Üstekiyle bunun anlatımları farklı istediğinizi yazabilirsiniz

Alıntı Yaparak Cevapla
 
Üye olmanıza kesinlikle gerek yok !

Konuya yorum yazmak için sadece buraya tıklayınız.

Bu sitede 1 günde 10.000 kişiye sesinizi duyurma fırsatınız var.

IP adresleri kayıt altında tutulmaktadır. Aşağılama, hakaret, küfür vb. kötü içerikli mesaj yazan şahıslar IP adreslerinden tespit edilerek haklarında suç duyurusunda bulunulabilir.

« Önceki Konu   |   Sonraki Konu »


forumsinsi.com
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ForumSinsi.com hakkında yapılacak tüm şikayetlerde ilgili adresimizle iletişime geçilmesi halinde kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde gereken işlemler yapılacaktır. İletişime geçmek için buraya tıklayınız.