Teknoloji

Bellek Yönetimi: Bellek Düzenleri ve Sanal Bellek

Bilgisayarımızda bellek, en kıymetli kesimlerden birisidir. Bu kıymetli kesimin da işletim sistemi tarafından yönetilebilmesi için, işletim sistemi tarafından kimi bellek nizamlarına doğal tutulması gerekmektedir. Bu yazımızda, bahsi geçen bellek nizamlarına ve bellek dolduğunda bilgisayarımızın ne yaptığına yakından bakacağız.


Random Access Memory (RAM)

Sanal bellek nedir?

Tertiplere geçmeden evvel, sanal belleğin ne olduğunu öğrenirsek daha yararlı olacaktır. Sanal bellek; bilgisayarımızda bellek dolduğu vakit, boşta olan süreçlerin kullanmadığı bellek kısmının transfer edildiği yerdir. Sanal bellek, dahili depolama biriminizde bulunan bir belge yahut kısımdır. Şayet manuel olarak bir ayar yapmazsanız, işletim sistemi, sanal bellek boyutunu otomatik olarak ayarlayacaktır. Bilhassa eski bir bilgisayarınız varsa, sanal belleği atlamamanızı tavsiye ederiz.


Random Access Memory (RAM)

Segmented (parçalı) bellek modeli

Sanal belleğin ne olduğunu öğrendiğimize nazaran, modüllü bellek modeli ile başlayabiliriz. Kesimli bellek modelinde, farklı süreçler, farklı boyutta bellek alanı kaplayacaktır. Bu bahsettiğimiz parçalar segment olarak bilinmektedir. Bu kesimler, program boyutu kadar yer kaplar. İşletim sistemi, her sürecin modülünün başlangıç noktasını ve ne kadar büyük olduğunu bilir.


Segmented (parçalı) bellek modelini açıklayan bir görsel.

Bir mühlet sonra belleğin dolduğunu varsayalım.


Belleğimiz doldu.

Kullanıcı, şayet daha fazla uygulama açmaya çalışırsa, birtakım uygulamaların bellekten çıkarılıp yer açılması gerekli. Bu durumda işletim sistemi, boşta olan süreçleri sanal belleğe geçirerek o süreçleri art planda çalıştırmayı sürdürür.


Başka uygulamaların bir kısmı, şayet boştaysa sanal belleğe geçirilir.

Daha sonra ise, boşta olan yere, şayet sığıyorsa, açılmaya çalışılan uygulama geçer.


Diğer uygulama açılıyor, ve boş olan yerden kendi kaplayacağı kadarını kaplıyor.

Segmented (parçalı) bellek modelinde, uygulamaların da değişik modülleri bulunmaktadır. Bunlar;

  • Program kesimleri, uygulama kodunun bulunduğu kesimdir. İçerisinde programın işlevlerini ve sınıflarını bulundurur.
  • Data kesimleri, uygulama datalarının tutulduğu yerdir. İçerisinde değişkenleri ve bilgi yapılarını bulundurmaktadır.

Segmented (parçalı) bellek modelinin dezavantajları

  • Segmented (parçalı) bellek modelinde, kesimler ortası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 modüller, ekseriyetle belleğe kabul edilmez.

Bu iki sorun de bellekte halihazırda bulunan kesimleri sıkıştırınca bir nebze de olsa aşılabilir.

Paged (sayfalanmış) bellek modeli

Segmented (parçalı) bellek modelini gördüğümüze nazaran, paged (sayfalanmış) bellek modeline bakabiliriz. Kesimli bellek modelinden bildiğimiz üzere; uygulama, tüm belleğin kendisine ilişkin olduğunu düşünür. İşletim sistemi de buna müsaade verirmiş üzere davranır. Uygulamanın belleğe bakış açısına mantıksal bellek denir.

Ana belleğimizde ise işler o denli değildir. Her sürecin kapladığı bellek alanı, işlemci mimarisine nazaran 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, şayet sığıyorsa birden fazla programı barındırabilir yahut yalnızca bir programa ilişkin olan bilgiyi barındırabilir. Bu sayfalar, işletim sisteminin karar verdiği biçimde, belleğin rastgele bir yerinde olabilir. Ayrıyeten kimi sayfalar sanal bellekte de olabilir.


Sayfalı nizamda bellek idaresi.

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 idare tarzı daha düzgün?

İki tertibin de kendine ilişkin artı ve eksileri bulunmakta.

  • Segmented (parçalı) sistem, programın tüm kodunu işlemciye uygun bir formda belleğe koyar, bu da programa süratli erişim sağlar. Lakin tıpkı vakitte memory fragmentation’a neden olur ve bu da boş alanın daha verimsiz kullanılması demektir. Ayrıyeten modüllü nizamda, büyük süreçler, çoğunlukla belleğe giremez.
  •  Sayfalı nizamda ise, program kodu parçalanarak belleğe konulur, bu da kesimli sisteme nazaran daha yavaş bir erişim sağlar. Ancak, boş alanı kullanmada pek yeteneklidir ve memory fragmentation ihtimalini ortadan kaldırır. Windows’ta sayfalı bellek nizamı kullanılır.
  • Birtakım işlemciler, iki sistemi de desteklemektedir. Modüller, birkaç adet boyutu makul bloktan oluşmaktadır.

Başınızda soru işareti kaldıysa, Technopat Toplumsal‘e bahis açabilirsiniz.

Başa dön tuşu