Bu yazımızda bellek düzenleri ve sanal bellekten bahsedeceğiz.
Bilgisayarımızda bellek, en önemli parçalardan birisidir. Bu önemli parçanın da işletim sistemi tarafından yönetilebilmesi için, işletim sistemi tarafından bazı bellek düzenlerine tabii tutulması gerekmektedir. Bu yazımızda, bahsi geçen bellek düzenlerine ve bellek dolduğunda bilgisayarımızın ne yaptığına yakından bakacağız.
Sanal bellek nedir?
Düzenlere geçmeden önce, sanal belleğin ne olduğunu öğrenirsek daha faydalı olacaktır. Sanal bellek; bilgisayarımızda bellek dolduğu zaman, boşta olan işlemlerin kullanmadığı bellek kısmının transfer edildiği yerdir. Sanal bellek, dahili depolama biriminizde bulunan bir dosya veya bölümdür. Eğer manuel olarak bir ayar yapmazsanız, işletim sistemi, sanal bellek boyutunu otomatik olarak ayarlayacaktır. Özellikle eski bir bilgisayarınız varsa, sanal belleği atlamamanızı tavsiye ederiz.
Segmented (parçalı) bellek modeli
Sanal belleğin ne olduğunu öğrendiğimize göre, parçalı bellek modeli ile başlayabiliriz. Parçalı bellek modelinde, farklı işlemler, farklı boyutta bellek alanı kaplayacaktır. Bu bahsettiğimiz parçalar segment olarak bilinmektedir. Bu parçalar, program boyutu kadar yer kaplar. İşletim sistemi, her işlemin parçasının başlangıç noktasını ve ne kadar büyük olduğunu bilir.
Bir süre sonra belleğin dolduğunu varsayalım.
Kullanıcı, eğer daha fazla uygulama açmaya çalışırsa, bazı uygulamaların bellekten çıkarılıp yer açılması gerekli. Bu durumda işletim sistemi, boşta olan işlemleri sanal belleğe geçirerek o işlemleri arka planda çalıştırmayı sürdürür.
Daha sonra ise, boşta olan yere, eğer sığıyorsa, açılmaya çalışılan uygulama geçer.
Segmented (parçalı) bellek modelinde, uygulamaların da değişik parçaları bulunmaktadır. Bunlar;
- Program parçaları, uygulama kodunun bulunduğu parçadır. İçerisinde programın fonksiyonlarını ve sınıflarını bulundurur.
- Veri parçaları, uygulama verilerinin tutulduğu yerdir. İçerisinde değişkenleri ve veri yapılarını bulundurmaktadır.
Segmented (parçalı) bellek modelinin dezavantajları
- Segmented (parçalı) bellek modelinde, parçalar arasında boşluk çok fazla olur. Buna memory fragmentation (bellek parçalanması) denmektedir. Bu yüzden de bellek, çok verimli kullanılamaz.
- Büyük parçalar, genellikle belleğe kabul edilmez.
Bu iki problem de bellekte halihazırda bulunan parçaları sıkıştırınca bir nebze de olsa aşılabilir.
Paged (sayfalanmış) bellek modeli
Segmented (parçalı) bellek modelini gördüğümüze göre, paged (sayfalanmış) bellek modeline bakabiliriz. Parçalı bellek modelinden bildiğimiz üzere; uygulama, tüm belleğin kendisine ait olduğunu düşünür. İşletim sistemi de buna izin verirmiş gibi davranır. Uygulamanın belleğe bakış açısına mantıksal bellek denir.
Ana belleğimizde ise işler öyle değildir. Her işlemin kapladığı bellek alanı, işlemci mimarisine göre değişmek şartıyla sayfalara bölünmüştür. Bu alan, x86 mimarisinde 4 KB boyuta tekabül etmektedir. Bir sayfa, içerisinde bir programı barındırabilir, eğer sığıyorsa birden fazla programı barındırabilir veya sadece bir programa ait olan veriyi barındırabilir. Bu sayfalar, işletim sisteminin karar verdiği şekilde, belleğin herhangi bir yerinde olabilir. Ayrıca bazı sayfalar sanal bellekte de olabilir.
Modelde uygulamanın belleği nasıl gördüğünü (sol dikdörtgen) ve işletim sisteminin page table (ortadaki küçük dikdörtgen) kullanarak sayfa sayfa nasıl uygulamayı ayırdığını görmekteyiz. Sağdaki dikdörtgende ise fiziki bellekte nasıl adreslendiğini görmekteyiz.
Hangi bellek yönetim stili daha iyi?
İki düzenin de kendine ait artı ve eksileri bulunmakta.
- Segmented (parçalı) düzen, programın tüm kodunu işlemciye uygun bir şekilde belleğe koyar, bu da programa hızlı erişim sağlar. Fakat aynı zamanda memory fragmentation’a neden olur ve bu da boş alanın daha verimsiz kullanılması demektir. Ayrıca parçalı düzende, büyük işlemler, çoğunlukla belleğe giremez.
- Sayfalı düzende ise, program kodu parçalanarak belleğe konulur, bu da parçalı düzene göre daha yavaş bir erişim sağlar. Fakat, boş alanı kullanmada gayet yeteneklidir ve memory fragmentation ihtimalini ortadan kaldırır. Windows’ta sayfalı bellek düzeni kullanılır.
- Bazı işlemciler, iki düzeni de desteklemektedir. Parçalar, birkaç adet boyutu belirli bloktan oluşmaktadır.
Kafanızda soru işareti kaldıysa, Technopat Sosyal‘e konu açabilirsiniz.