Bu yazımızda bellek yönetimini detaylı olarak anlayacağız.
Bellek yönetimi ile neyi kastediyorsunuz?
Bellek, bilgisayarın verileri depolamak için kullanılan önemli parçasıdır. Bir bilgisayar sisteminde mevcut olan ana bellek miktarı çok sınırlı olduğundan, yönetimi bilgisayar sistemi için kritik öneme sahiptir. Herhangi bir zamanda birçok süreç bunun için rekabet eder. Ayrıca performansı artırmak için birçok işlem aynı anda yürütülür. Bunun için birçok süreci ana hafızada tutmamız gerekiyor, dolayısıyla bunları etkin bir şekilde yönetmek daha da önemli.
Bellek yönetiminin rolü
Bir bilgisayar sisteminde bellek yönetiminin önemli rolleri şunlardır:
- Bellek yöneticisi, ister boş ister tahsis edilmiş olsun, bellek konumlarının durumunu takip etmek için kullanılır. Yazılımın kendisine büyük bir hafıza tahsis edildiğini algılaması için soyutlamalar sağlayarak birincil hafızayı ele alır.
- Bellek yöneticisi, az miktarda ana belleğe sahip bilgisayarların, kullanılabilir bellek boyutundan veya miktarından daha büyük programları yürütmesine izin verir. Bunu, takas kavramını kullanarak bilgiyi birincil bellek ile ikincil bellek arasında ileri geri hareket ettirerek yapar.
- Bellek yöneticisi, her işleme ayrılan belleğin başka bir işlem tarafından bozulmasını önlemekten sorumludur. Bu sağlanmadığı takdirde sistem öngörülemeyen davranışlar sergileyebilir.
- Bellek yöneticileri, işlemler arasında bellek alanının paylaşılmasını sağlamalıdır. Böylece iki program farklı zamanlarda da olsa aynı bellek konumunda bulunabilir.
Bellek Yönetimi Teknikleri:
Bellek yönetimi teknikleri aşağıdaki ana kategorilere ayrılabilir:
tarihten dizeye dönüştürme
- Bitişik bellek yönetimi şemaları
- Bitişik olmayan bellek yönetimi şemaları
Bitişik bellek yönetimi şemaları:
Bitişik bellek yönetimi şemasında, her program tek bir bitişik depolama konumu bloğunu, yani ardışık adreslere sahip bir dizi bellek konumunu işgal eder.
Tek bitişik bellek yönetimi şemaları:
Tek bitişik bellek yönetimi şeması, ilk nesil bilgisayar sistemlerinde kullanılan en basit bellek yönetimi şemasıdır. Bu şemada ana bellek iki bitişik alana veya bölüme bölünmüştür. İşletim sistemleri bir bölümde, genellikle alt bellekte kalıcı olarak bulunur ve kullanıcı işlemi diğer bölüme yüklenir.
Tek bitişik bellek yönetimi şemalarının avantajları:
- Uygulaması basit.
- Yönetimi ve tasarımı kolaydır.
- Tek bitişik bellek yönetimi şemasında, bir işlem yüklendiğinde, ona tam işlemci zamanı verilir ve başka hiçbir işlemci onu kesmez.
Tek bitişik bellek yönetimi şemalarının dezavantajları:
- İşlemin mevcut tüm bellek alanını kullanma olasılığı düşük olduğundan, kullanılmayan bellek nedeniyle bellek alanı israfı.
- CPU boşta kalır ve diskin ikili görüntüyü ana belleğe yüklemesini bekler.
- Program mevcut ana bellek alanının tamamına sığmayacak kadar büyükse çalıştırılamaz.
- Çoklu programlamayı desteklemez, yani aynı anda birden fazla programı yönetemez.
Çoklu Bölümleme:
Tek Bitişik bellek yönetimi şeması, bilgisayarları aynı anda yalnızca bir programı çalıştıracak şekilde sınırlandırdığından, bellek alanı ve CPU zamanında israfa neden olduğundan verimsizdir. Verimsiz CPU kullanımı sorunu, birden fazla programın aynı anda çalışmasına izin veren çoklu programlama kullanılarak aşılabilir. İki işlem arasında geçiş yapmak için işletim sistemlerinin her iki işlemi de ana belleğe yüklemesi gerekir. İşletim sisteminin, ana belleğe birden fazla işlem yüklemek için mevcut ana belleği birden çok parçaya bölmesi gerekir. Böylece birden fazla işlem aynı anda ana bellekte bulunabilir.
Çoklu bölümleme şemaları iki tipte olabilir:
ikili arama ağacı vs ikili ağaç
- Sabit Bölümleme
- Dinamik Bölümleme
Sabit Bölümleme
Ana bellek, sabit bölümlü bellek yönetimi şemasında veya statik bölümlemede birkaç sabit boyutlu bölüme bölünmüştür. Bu bölümler aynı boyutta veya farklı boyutlarda olabilir. Her bölüm tek bir işlemi tutabilir. Bölümlerin sayısı çoklu programlamanın derecesini, yani bellekteki maksimum işlem sayısını belirler. Bu bölmeler sistem oluşturulduğu anda yapılır ve sonrasında sabit kalır.
Sabit Bölümleme bellek yönetimi şemalarının avantajları:
- Uygulaması basit.
- Yönetimi ve tasarımı kolaydır.
Sabit Bölümleme bellek yönetimi şemalarının dezavantajları:
- Bu şema iç parçalanmadan muzdariptir.
- Bölümlerin sayısı sistem oluşturulurken belirtilir.
Dinamik Bölümleme
Dinamik bölümleme, sabit bölümleme şemasının sorunlarının üstesinden gelmek için tasarlanmıştır. Dinamik bölümleme şemasında her işlem, yalnızca işlem için yüklendiğinde ihtiyaç duyduğu kadar bellek kaplar. İstenen işlemlere, fiziksel belleğin tamamı tükenene veya kalan alan istekte bulunan işlemi tutmak için yetersiz kalana kadar bellek tahsis edilir. Bu şemada kullanılan bölümler değişken büyüklüktedir ve bölüm sayısı sistem oluşturma zamanında tanımlanmamıştır.
Dinamik Bölümleme bellek yönetimi şemalarının avantajları:
üçlü operatör java
- Uygulaması basit.
- Yönetimi ve tasarımı kolaydır.
Dinamik Bölümleme bellek yönetimi şemalarının dezavantajları:
- Bu şema aynı zamanda iç parçalanmadan da muzdariptir.
- Bölümlerin sayısı sistem bölümlendirmesi sırasında belirtilir.
Bitişik olmayan bellek yönetimi şemaları:
Bitişik Olmayan bellek yönetimi şemasında, program farklı bloklara bölünür ve belleğin birbirine bitişik olması gerekmeyen farklı bölümlerine yüklenir. Bu şema, blokların boyutuna ve blokların ana bellekte bulunup bulunmamasına bağlı olarak sınıflandırılabilir.
Çağrı nedir?
Sayfalama, ana belleğin bitişik olarak tahsis edilmesi gerekliliğini ortadan kaldıran bir tekniktir. Burada ana bellek, çerçeve adı verilen sabit boyutlu fiziksel bellek bloklarına bölünür. Ana belleği en üst düzeye çıkarmak ve harici parçalanmayı önlemek için çerçevenin boyutu sayfanın boyutuyla aynı tutulmalıdır.
Sayfalamanın avantajları:
- Sayfalar dış parçalanmayı azaltır.
- Uygulaması basit.
- Bellek verimli.
- Çerçevelerin eşit boyutta olması nedeniyle takas çok kolay hale gelir.
- Verilere daha hızlı erişim sağlamak için kullanılır.
Segmentasyon Nedir?
Segmentasyon, ana belleğin bitişik olarak tahsis edilmesi gerekliliğini ortadan kaldıran bir tekniktir. Burada ana bellek, segment adı verilen değişken boyutlu fiziksel bellek bloklarına bölünür. Programcının programlarını yapılandırmak için izlediği yola dayanmaktadır. Bölümlere ayrılmış bellek ayırma ile her iş, her modül için bir tane olmak üzere farklı boyutlarda birkaç bölüme ayrılır. Fonksiyonlar, altprogramlar, yığın, dizi vb. bu tür modüllere örnektir.