Finale Doğru (Devam)

Bellek Yönetimi

Programlarımız harddisk üzerinde tutulurlar. Çalışabilmeleri için harddisk'ten belleğe taşınmaları gerekir. Çalıştırılmaya başlamadan önce prosesler bir çok aşamadan geçmelidirler.

Talimat ve verilerin adres ilişkilendirmelerinin hafıza adreslerine bağlanması üç farklı aşamada gerçekleşir.

  • Derleme zamanı: Eğer hafızanın konumu öncelikliyse, mutlak kod oluşturulabilir. Eğer başlangıç konumları değişirse kod tekrar derlenmelidir.

  • Yükleme zamanı: Derleme zamanında hafızanın yeri bilinmediği takdirde yer değiştirebilir kod oluşturulmalıdır.

  • Çalıştırma zamanı: İşlem, yürütme sırasında bir hafıza segmentinden ötekine yer aktarılabilirse ilişkilendirme ertelenir. Adres haritaları için donanım desteği gereklidir (örneğin, base ve limit registerleri).

Mantıksal - Fiziksel Adres Alanı

Öncelikle fiziksel alanının ne olduğunu düşünelim. Tabiki de sistemimizde bulunan gerçek bellek miktarıdır. Örneğin 32 bit bir işlemciniz olduğunu farz edelim. Sizde 2 GB boyutta bir bellek taktınız. Sisteminizdeki fiziksel adres alanının genişliğide 2GB olacaktır. Oysaki mantıksal adres alanı işlemcinizin adresleyebileceği maksimum bellek alanıyla ilgilidir. 32 bit bir işlemci 2 üzeri 32 kadar (4 294 967 296) alan adresleyebilir. 32 bit windowsta bir proses 2 üzeri 31 kadar yer adreslenmesine izin verilmiştir. 1 bit çeşitli nedenlerden dolayı prosese verilmez. Ancak bu durum 64 bitte farklıdır. 2 üzeri 64 (18 446 744 073 709 551 616) çok büyük bir sayıdır ve 64 bit windows sadece 48 bitini adreslemede kullanır. 48 bit bile 281 474 976 710 656 byte alanın adresleneceği anlamına gelir. (48 bit olayı değişmiş olabilir ancak bir zamanlar bu şekilde kullanılmış)

MMU (Bellek Yönetim Birimi)

Sanal (mantıksal) adresi fiziksel adrese haritalayan donanımsal cihazdır. Programlar gerçek adresle değilde mantıksal adresle çalışırlar. Hafıza kullanıldığında registerdeki değer kadar adrese ekleme yapılır. Bu sayede gerçek adrese ulaşılmış olur.

Dinamik yükleme

Bir program çağrılmadıkça yüklenmeyecektir. Hafıza alanı bu sayede verimli kullanılmış olur. Büyük kodlar yüklenilmek istediğinde kullanışlı olmaktadır.

Dinamik bağlama

  • Çalıştırma zamanına kadar ilişkilendirme ertelenir.
  • Küçük bir kod parçası olan olan stub (kalıntı), uygun olan hafıza-yerleşimi kitaplığı altprogramının yerini tespit etmek için kullanılır.
  • Stub, altprogramın adresiyle kendisinin yerini değiştirerek altprogramı yürütür.
  • Altprogramın, işlemcinin hafıza adresinde bulunup bulunmadığını kontrol etmek için işletim sistemi gereklidir.
  • Dinamik ilişkilendirme, özellikle kitaplıklar için kullanışlıdır.

Örtüşme

  • Sadece bahsi geçen her talimat ve her an ihtiyaç duyulan verileri hafızada tutun.
  • İşlem, kendisine ayrılan hafıza miktarından daha fazla yer kapladığında gereklidir.
  • Kullanıcı tarafından çalıştırılır, işletim sisteminden özel destek ihtiyacı yoktur, overlay yapısının programlama tasarımı karmaşıktır.

Yer Değiştirme

Bu olayı swap olarak biliyorsunuz. İşletim sistemi yeterli bellek alanı olmadığında harddiski bellek gibi kullanabiliyor. Bu olayda bir proses harddiske kayıt ediliyor ve yerine başka bir proses yerleştiriliyor. İcrasını gerçekleyebildiği kadar gerçekledikten sonra harddisk alanına gönderiliyor ve önceden saklanmış olan proses belleğe geri yükleniyor. Sürekli bir döngü var. Performansı berbat hale getirsede olası durumda hem video izlemeyi hemde browserde gezinmeyi isteyebilirsiniz. Bir şekilde swap olayları süresince bir işi yapamamaktan, zor yapmaya taşımış oluyoruz.

Sürekli Tahsis

Ana hafıza genellikle iki farklı bölümden oluşur. İşletim sistemi ve sistemin gereklilikleri düşük bellek seviyesinde, kullanıcının prosesleride yüksek bellek seviyesinde çalışmaktadır.

Tek bölümlü tahsis

  • Yeniden konumlandırma-kaydedicisi şeması kullanıcı işlemlerini, diğer işlemlerden korumak için kullanınılır.
  • Yeniden konumlandırma-kaydedicisi, kayda değer en küçük fiziksel adresleri içerir. Limit kaydedicisi çeşitli mantıksal adresler içerir; her mantıksal adres, limit kaydedicisinden daha az olmalıdır.

Çoklu bölüm tahsisi

  • Hole(Delik) – kullanılabilir bellek bloğu;çeşitli büyüklükteki holes(boşluklar) bellek boyunca dağılmış.
  • Bir proses geldiğinde, onun sığabileceği büyüklükte bir hole(delik) bellek tahsis edilir.
  • İşletim sistemi şu bilgileri tutar;
    • ayrılan bölümleri
    • serbest bölümleri(hole)

Dinamik Depolama - Tahsis Sorunu

  • First-fit (İlk durum): İlk bulduğu yere yerleştirir.
  • Best-fit (En uygun durum): Tüm liste aranır boyutlarına bakarak en az boşluk bırakacak şekilde yerleştirilir.
  • Worst-fit (En kötü durum): Tüm liste aranır en büyük boşluğa yerleştirilir.

First-fit and best-fit, hız ve depolama bakımından worst-fit den daha iyi.

Parçalama (Fragmentation)

Dış parçalanma (External Fragmentation): Toplam bellek alanı çalıştıracak programa yettiği halde boşluklar farklı bölgelerde olduğundan yerleştirilemez. Dış parçalanmayı azaltmanın yolları; Shuffle bellek içeriğine , tüm boş bellek ile birlikte bir büyük blok yerleştirmek. Dinamik yeniden yerleştirme olduğu takdirde sıkıştırma mümkündür, ve yürütme zamanında yapılır.

İç parçalanma (Internal Fragmentation): Ayrılan bellek istenen bellek den biraz daha büyük olabilir ; bu boyut farkı dahili bellekte vardır , ama kullanılmamaktadır.

Sayfalama (Paging)

Bellek alanını sabit boyutlara parçalarız. Bu boyut 4kbytedir. Mantıksal adresteki page fiziksel adreste frame diye geçer. Sayfalar bir tabloda tutulur. Kullanılmayan tüm sayfalar bir alanda tutulur bu sayede takip kolaylaşır.

Sayfalama tablosundan gelen verilerle gerçek bellek adresi bulunur.

Sayfalama örnekleri

Sayfa tabloları

Sayfa tabloları bellekte tutulur. Bir adrese veri kaydetme işleminde belleğe gidip fiziksel adreste nereye kayıt edileceğini bulmak ve daha sonrada kayıt işlemini gerçeklemek gerekir. Belleğe olan çağrı sayısı artmış olacaktır. TLBs kullanarak donanım yardımıyla ön bellek kullanarak çağrı sayısındaki artışın etkisi azaltılacaktır.