Sanal Bellek Nedir, Ne İşe Yarar?
Sanal bellek, RAM’e tam olarak sığmayan işlemleri (fiziksel bellek) çalıştırmanıza izin veren bir tekniktir. Ve, fiziksel bellekten daha büyük programların oluşturulmasını teşvik eder.
Windows İşletim Sisteminde Kullanılan Virtual Memory (Sanal Bellek/RAM) Nedir?
Ek olarak, sanal bellek, kullanıcının gördüğü mantıksal bölgeden ayıran bir bellek soyutlama şeması oluşturmaya yardımcı olur, bu, bellek sınırlamaları hakkında endişelenmek zorunda olmadıkları için programcılar için işleri büyük ölçüde kolaylaştırır.
Özellikleri
Sanal bellek uygulama prosedürleri, bir program yürütüldüğünde, kısmen bellekte olduğu, yani programın tamamı değil, yalnızca o anda gerekli olan kod ve verilerin yüklü olduğu gerçeğine dayanır.
Sanal ram, kullanıcının kullanabileceği mantıksal bellek ile RAM belleği arasındaki ayrımdır, genellikle segmentasyona sahip bir sistemde de uygulanabilmesine rağmen, genellikle isteğe bağlı sayfalama yöntemiyle uygulanır.
Sistemin belleği tükenmeye başladığı anda, diskte yardımcı bellek genişletme işlevi gören bir SWAP dosyası oluşturulur.
Windows işletim sistemlerinde çalışan birçok uygulama olduğunda ve RAM bittiğinde, sistem sabit diskten RAM’e ve tersi yönde hareketler gerçekleştirmek için SWAP dosyasını kullanır.
Bu şekilde, işlemleri yerine getirmek için fiziksel bellekte boşluklar oluştururlar. Fakat, bu açıkça sistemi yavaşlatır.
Fakat, bir bilgisayarda 4GB RAM bulunmamasına rağmen, bilgisayarda 4GB RAM varlığını simüle etmeyi ve birden fazla uygulamaya mükemmel yürütme kapasitesi sağlamayı sağlar.
Çoğu bilgisayarda CPU, önbellek, fiziksel bellek ve sabit sürücüdeki kayıtlar gibi dört tür bellek vardır.
Birçok uygulama, fiziksel bellekte tutulabileceğinden daha fazla bilgiye erişim gerektirir. Bu, özellikle işletim sistemi birden çok işlem ve uygulamanın aynı anda çalışmasına izin verdiğinde geçerlidir.
Kullanılabilir olandan daha fazla belleğe ihtiyaç duyma sorununun bir çözümü, uygulamaların bazı bilgilerini diskte tutması ve gerektiğinde ana belleğe taşımasıdır. Bunu yapmanın birkaç yolu vardır.
Seçeneklerden biri, uygulamanın her bir segmentasyonda hangi bilgilerin kaydedileceğine karar vermekten, onu getirmek ve taşımaktan sorumlu olmasıdır.
Bunun dezavantajı, programın tasarımında ve uygulanmasındaki zorluğa ek olarak, iki veya daha fazla programın belleğindeki çıkarların birbirleriyle çelişmeler yaratmasıdır. Tabiki, her programcı tasarımlarını göz önünde bulundurarak bunu yapabilir ve sistemde çalışan tek program olduğunu düşünebilir.
Alternatif, özel donanım ve işletim sistemi kombinasyonunun, bilgisayarın gerçekte olduğundan çok daha fazla ana belleğe sahip olduğunu göstermek için ana ve ikincil belleği kullandığı sanal belleği kullanmaktır.
Bu yöntem süreçler için görünmezdir. Orada görülebilen maksimum bellek miktarı işlemcinin özellikleriyle ilgilidir.
Örneğin, 32 bit sistemde, maksimum RAM miktarı 4GB’tır. Tüm bunlar, veriyi farklı bellek alanları arasında taşıma ihtiyacını tamamen göz ardı ederek uygulama programlayıcısının işini çok daha kolay hale getirir.
Virtual memory, işletim sistemi yazılımı tarafından uygulanabilse de, pratikte donanım ve yazılımın bir arada kullanılması, ekstra çaba gösterilmesi durumunda hemen hemen her zaman kullanılır.
Nasıl Çalışır?
Sanal adreslerin gerçek adreslere çevrilmesi bir Bellek Yönetim Birimi (MMU) tarafından gerçekleştirilir.
İşletim sistemi, program belleğinin hangi bölümlerinin fiziksel bellekte saklanacağına karar vermekten sorumludur.
MMU tarafından kullanılmak üzere sanal ve fiziksel adresler arasındaki ilişkileri sağlayan adres çeviri tablolarını da korur.
Son olarak, bir istisnas meydana geldiğinde, işletim sistemi eksik bilgileri depolamak için fiziksel bir bellek alanı bulmak, bilgileri diskten almak, çeviri tablolarını güncellemek ve son olarak sanal belleği veren programın yürütülmesine devam etmekten sorumludur.
Çoğu bilgisayarda, bellek adresi çeviri tabloları fiziksel bellektir.
Bu, bellek adresine yapılan bir başvurunun çeviri tablosundaki girişi bulmak için bir veya iki referansa ve bu adrese erişimi tamamlamak için bir tane daha referansa ihtiyaç duyacağı anlamına gelir.
Bu sistemin performansını hızlandırmak için, çoğu CPU aynı çip üzerinde bir MMU içerir ve TLB (Translation Lookaside Buffer) adı verilen yeni kullanılan sanaldan gerçeğe adres çevirilerinin bir tablosunu tutar.
Bu arabellek kullanılması ek bellek referansı gerekmediği anlamına gelir, böylece çeviri yaparken zaman kazandırır.
Bazı işlemcilerde bu tamamen donanım tarafından yapılır.
İşletim sisteminin yardımına ihtiyaç vardır. Bir istisna ortaya çıkar ve işletim sistemi, TLB’deki girişlerden birini çeviri tablosundaki bir girişle değiştirir ve orijinal bellek referansını yapan talimat yeniden yürütülür.
Sanal bellek desteğine sahip donanım, çoğu zaman bellek korumasına da izin verir.
MMU, çalışma şeklini bellek referansı türüne ve CPU’nun bellek referansı oluşturma sırasındaki şekline göre değiştirebilir.
Bu, işletim sisteminin kendi kodunu ve verilerini bir uygulama tarafından bozulmasını ve birbirleriyle sorunlara neden olabilecek uygulamaları korumasını sağlar.
Kullanımı
Sanal ram kullanıldığında veya CPU tarafından bir adres okunduğunda veya yazıldığında, bilgisayarın içindeki donanımın bir kısmı yazılım tarafından oluşturulan bellek adreslerini gerçek bellek adresi ve bellek adresinin ana bellekte olmadığını gösteren bir gösterge olarak çevirir.
İlk durumda, bellek referansı, sanal ram dahil edilmemiş gibi tamamlanır ve yazılım, gerektiği yere erişir ve normal şekilde çalışmaya devam eder.
İkinci durumda, işletim sistemi durumu ele almak üzere çağrılır ve programın duruma göre yürütülmesine veya durdurulmasına izin verilir.
Bir makinenin fiziksel belleğinden çok daha fazla bellek alanının simülasyonunu sağlamak için bir tekniktir. Bu, programların fiziksel belleğin tam boyutuna bakılmaksızın çalışmasına izin verir.
Bellek dosyasının yanılsaması, büyük miktarda hızlı sabit disk depolama alanı ile birlikte bellek çeviri mekanizması tarafından desteklenir.
Böylece, sanal adres alanı her zaman izler, böylece küçük bir kısmı gerçek bellekte olur ve geri kalanı diskte depolanır ve kolayca referans alınabilir.
Sanal belleğin yalnızca ana bellekte depolanan kısmına CPU tarafından erişilebildiğinden, bir program çalışırken bellek referanslarının yakınlığı değişir ve sanal belleğin bazı bölümlerinin diskten ana belleğe getirilmesini gerektirir. Kısaca, mevcut işletim sistemlerinin çoğunun önemli bir bileşeni haline gelmiştir.
Ve belirli bir anda, bellekteki belirli bir işlemin sadece birkaç parçasına sahip olduğunuzdan, bellekte daha fazla işlem tutabilirsiniz.
Dahası, zaman kazandırır, çünkü kullanılmayan parçalar hafızaya yüklenmez veya bellekten çıkarılmaz. Ancak, işletim sistemi bu şemanın nasıl yönetileceğini bilmelidir.
Ayrıca, yer değiştirme adı verilen yürütme için programın yüklenmesini de kolaylaştırır, bu yordam aynı programın fiziksel bellekteki herhangi bir konumda çalışmasına izin verir.
İstikrarlı bir durumda, neredeyse tüm ana bellek işlem parçalarıyla doldurulacaktır, bu nedenle işlemci ve işletim sistemi mümkün olduğunca çok işleme doğrudan erişime sahip olacak ve işletim sistemi bir parçayı belleğe getirdiğinde, başka bir parçayı çıkarması gerekecektir.
Bir parçayı kullanılmadan hemen önce çıkarırsanız, parçayı hemen geri getirmeniz gerekir.
Çok fazla sayıda kırık takas hiper-sayfalama olarak bilinen şeye yol açar ve burada işlemci, parçaları değiştirmek için kullanıcı talimatlarını uygulamaktan daha fazla zaman harcar.
Bundan kaçınmak için, işletim sistemi yakın geçmişte hangi parçaların kullanılmasının daha az olası olacağını yakın geçmişe dayanarak tahmin etmeye çalışır.
Yukarıdaki argümanlar, referansların yakınlığı ilkesine veya bir süreç içindeki verilere ve programa yapılan referansların birlikte gruplanma eğiliminde olduğunu belirten yerellik ilkesine dayanmaktadır.
Bu nedenle, kısa süreler için bir sürecin sadece birkaç parçasına ihtiyaç duyulacağı varsayımı geçerlidir.
Yakınlık ilkesini doğrulamanın bir yolu, sanal bellek ortamında bir işlemin performansını dikkate almaktır. Yakınlık ilkesi, bellek şemalarının çalışabileceğini düşündürmektedir. Ayrıca, belleğin pratik ve etkili olabilmesi için iki bileşene ihtiyaç vardır.
Birincisi, donanım desteği olmalı ve ikincisi, S.O, sayfaların veya segmentlerin ikincil bellek ile ana bellek arasındaki hareketini yönetmek için yazılım içermelidir.
Fiziksel adresi edindikten hemen sonra ve ana bellekteki verilere danışmadan önce, önbellek hafızası aranır, eğer son kullanılan veriler arasındaysa, arama başarılı olur. Ancak başarısız olursa, virtual bellek ana belleğe veya en kötü durumda disk sorgusuna danışır.
Sayfalama Tekniği
Sanal bellek genellikle disk belleği kullanılarak uygulanır.
Sayfalamada, sanal ram adresinin en az önemli bitleri korunur ve doğrudan fiziksel bellek adresinin en az önemli bitleri olarak kullanılır.
En önemli bitler, aranan fiziksel adresin kalan kısmını bulmak için bir veya daha fazla adres çeviri tablosunda anahtar olarak kullanılır.
İlgili Yazılar
♦ Yazılım Türleri
♦ Donanım Nedir?
♦ RamDisk Kullanımı
♦ GPU Tanımı
♦ WPA Tanımı