İşletim Sistemleri İşletim Sistemleri Dr. Binnur Kurt [email protected] Omega Eğitim ve Danışmanlık http://www.omegaegitim.com Bölüm 9 Bellek Yönetimi 1|Sayfa İşletim Sistemleri İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. İplikler Arası Eş Zamanlama 6. Prosesler Arası İletişim 7. İş Sıralama 8. Prosesler Arası Eş zamanlama 9. Bellek Yönetimi 10. Dosya Sistemi 11. Soket Haberleşme Bölüm 9 Bellek Yönetimi 2|Sayfa İşletim Sistemleri BÖLÜM 9 Bellek Yönetimi Bölümün Amacı Bölüm sonunda aşağıdaki konular öğrenilmiş olacaktır: ► Bellek Yönetim Gereksinimleri ► Bellek Yönetim Teknikleri ► Sayfalama ve Segmanlama ► Görüntü Bellek Bölüm 9 Bellek Yönetimi 3|Sayfa İşletim Sistemleri 9.1 Giriş İşletim sisteminin birincil görevi temel sistem kaynakları olan işlemci, ana bellek ve diski kullanıcılar ve onların prosesleri arasında paylaştırmaktır. Kullanıcı proseslerinin çalışabilmesi için bellekte bulunması gerekir. İşletim sisteminde fiziksel belleğin yönetiminden sorumlu olan birime bellek yöneticisi adı verilir. Bellek yöneticisi çalışan proseslerin hangi bellek bölümüne yerleşeceğine karar verir, bellek erişimini ve yerleşimini denetler, prosesler arasında bellek paylaşımını organize eder. Bellek yöneticisinin denetiminde iki tür bellek yer alır: Fiziksel Ana Bellek: Yarıiletken teknolojisi olarak üretilmişlerdir. Günümüzde fiziksel bellekler nispeten ucuz oldukları için büyük bellekli sistemler oluşturmak mümkün olabilmektedir. DDR standardında üretilmektedirler. DDR5 grafik kartlarında yoğun olarak kullanılmaktadır. Bilgisayar sistemlerinde ise DDR4 bellekler kullanılmaktadır. İç hızı Yol hızı Transfer Hızı Gerilim DDR Standardı (MHz) (MHz) (GB/s) (V) DDR2 133-200 266-400 4.2-6.4 1.8 DDR3 133-200 533-800 8.5-14.9 1.35/1.5 DDR4 133-200 1066-1600 17-21.3 1.2 İkincil Bellek: Fiziksel ana belleğin kapasitesinin tüm proseslerin fiziksel belleğe sığması için yeterli olmadığı durumlarda ikincil bellekten yararlanılır. İkincil bellek olarak kapasitesi ana belleğe göre daha fazla olan ancak daha yavaş erişim başarımına sahip mekanik diskler kullanılır. Son dönemde mekanik disklerin yerini daha pahalı ancak erişim başarımı mekanik disklere göre çok daha iyi olan katı hal diskler almaktadır (Şekil-9.1) Mekanik Disk Katı Hal Disk Şekil-9.1 Mekanik disk ve katı hal disk görüntüsü Bölüm 9 Bellek Yönetimi 4|Sayfa İşletim Sistemleri 9.2 Bellek Yönetim Gereksinimleri Bellek yönetim yaklaşımlarını ve mekanizmalarını çalışmadan önce belek yönetimi ile ilgili gereksinimleri incelememiz faydalı olur. Herhangi bir bellek yönetim sisteminin aşağıdaki beş gereksinimi karşılaması beklenir: Yeniden yerleşim Yazılım geliştirici, çalışan programının bellekte fiziksel nereye yerleşeceği ile ilgilenmeden uygulama geliştirilmelidir. Uygulama çalışma zamanında farklı kapasiteli ve farklı fiziksel yerleşime sahip bellek parçalarının yer aldığı sistemlerde çalıştırılabilir. İşletim sistemi, bellek yönetim sistemi kullanıcıya sanal bir bellek uzayı sunar. Geliştirici sanki tüm bellek uzayını sadece kendisine aitmiş gibi kod yazar. Üretilen bellek adresleri sanaldır. Bellek yöneticisinin görevlerinden biri de bellek referans adresleri fiziksel adres değerlerine dönüştürmektir. Koşan yazılımların fiziksel belleğe sığmayan bölümleri ikincil bellekte saklanır. Daha sonra ihtiyaç duyulduğunda, ikincil bellekten alınıp tekrar fiziksel belleğe muhtemelen farklı bir bölmeye yüklenir. Koruma İzni olmadan bir proses bir başka prosesin bellek alanlarına erişememelidir. Programın yeri değişebileceğinden kontrol için programdaki gerçek adresler kullanılamaz. Bu kontrolün çalışma zamanında yapılması gerekir. Paylaşım Bazen birden fazla prosesin aynı bellek bölgesine erişmesi istenebilir. Prosesler biri birlerinin program kodunu ya da verilerini paylaşabilmelidir. Koruma mekanizmasının bu paylaşıma izin verecek esneklikte olması gerekir. 9.3 Bellek Yönetim Teknikleri Bellek yönetiminde temel işlem prosesi çalışabilmesi için belleğe taşımaktır. Prosesler sanal bellekte çalıştırılırlar. Sanal belleğin kullanıldığı günümüz işletim sistemlerinde sanal belleğin organizasyonunda iki farklı yaklaşım kullanılır: sayfalama ve segmanlama. Konunun daha iyi anlaşılması açısından, çalışmamıza önce, artık günümüz işletim sistemlerinde kullanılmayan iki bellek yönetim yaklaşımı ile başlayacağız: Durgun Bölümleme ve Devingen Bölümleme. Daha sonra sayfalama ve segmanlama tekniklerini inceleyeceğiz. 9.3.1 Durağan Bölümleme İşletim sisteminde ana belleğin bir bölümü işletim sisteminin kendisine ayrılmıştır. Geri kalan bellek alanı ise bellek yöneticisi tarafından prosesler arasında paylaştırılır. Bu paylaşımda en basit yaklaşımlardan biri bu bellek alanının sabit uzunlukta bölümlere ayrılmasıdır (Şekil-9.2 (a)). Boş bölmeye, boyu bölme boyundan (64MB) küçük ya da eşit prosesler yüklenebilir. 64MB boyutundan daha küçük bellek ihtiyacında kullanılmayan alanlar oluşacaktır. Bu problem iç parçalanma (internal fragmentation) olarak adlandırılır. eşit boyda olmayan bölmeler kullanılması sorunu bir derece çözer. Proses bölmeye sığmadığı durumda, programcı program parçalarını Bölüm 9 Bellek Yönetimi 5|Sayfa İşletim Sistemleri birbirinin üzerini örtecek şekilde kodlar. Bu problemler değişik uzunlukta bölümler kullanılarak bir ölçüde hafifletilebilir. Bu yöntemde maksimum aktif proses sayısı sınırlıdır. İşletim sistemi tarafından gerçeklenmesi kolay ve getirdiği ek yük azdır. Şekil-9.2 (a) Eşit uzunlukta bölümleme (b) Değişken uzunlukta bölümleme Bölme boylarının eşit olduğu durumda prosesin hangi bölmeye yerleştirileceği fark etmez. Bölme boylarının eşit olmadığı durumda ise bölme içi boş kalan yer miktarını en aza indirmek üzere her proses sığacağı en küçük bölmeye yerleştirilir. Her bölme için bir kuyruk düzenlenebilir (Şekil-9.3). Bölüm 9 Bellek Yönetimi 6|Sayfa İşletim Sistemleri Şekil-9.3 Durgun Bölümlemede Bellek Atama 9.3.2 Dinamik Bölümleme Bu yöntemde bölme sayısı ve bölme boyları sabit değildir. Proseslere sadece gerektiği kadar bellek atanır (Şekil-9.4). Kullanılmayan boş yerler yine de oluşur. Bu durum dış parçalanma (external fragmentation) olarak adlandırılır. Tüm boş alanların bir blok halinde olması için sıkıştırma kullanılır (Şekil-9.5). Bölüm 9 Bellek Yönetimi 7|Sayfa İşletim Sistemleri (a) (b) (c) (d) (e) (f) Şekil-9.4 Dinamik Bölümlemede Bellek Atama Bölüm 9 Bellek Yönetimi 8|Sayfa İşletim Sistemleri Şekil-9.5 Dinamik Bölümlemede Boş Alanların Sıkıştırılması Dinamik Bölümlemede Yerleştirme Algoritmaları Hangi boş bloğun hangi prosesin atanacağına işletim sistemi karar verir. Bunun için çeşitli algoritmalar önerilmiştir. Şimdi bu algoritmalara göz atacağız: A. En iyi sığan Algoritması (Best-Fit) Bu algoritmada, prosesin ihtiyaç duyduğu bellek alanına en yakın olan boşluk seçilir (Şekil-9.6). Olası en küçük bölme bulunduğundan artan boş alan azdır. Buna karşılık sıkıştırmanın daha sık yapılması gerekir. B. İlk sığan Algoritması (First-Fit) Bu algoritmada ilk boş göz seçilir (Şekil-9.6). Prosesler baş bölgelere yığılır. Boş yer ararken üst üste taranır. C. Bir sonraki Sığan Algoritması (Next-Fit) Bölüm 9 Bellek Yönetimi 9|Sayfa İşletim Sistemleri Bu algoritmada, son yerleştirilen yerden itibaren ilk sığan yer bulunur (Şekil-9.6). Genellikle atamalar belleğin son kısımlarında yer alan büyük boşluklardan seçilir. Bu nedenle büyük boşluklar küçük parçalara bölünür. Bu da sıkıştırma gerektirir. (a) (b) Şekil-9.6 Dinamik Bölümlemede Yerleştirme Algoritmaları 9.4 Sayfalama Hem durağan hem de dinamik bölütleme, belleği verimsiz kullanırlar: biri iç parçalanmaya diğer ise dış parçalanmaya neden olurlar. Sayfalamada proses küçük ve eşit boylu parçalara bölünür. Benzer şekilde bellek de aynı boyda parçalara ayırılır (Şekil-9.7). Prosesin eşit boylu bu parçalarına sayfa adı verilir. Eşit boylu bellek parçaları ise çerçeve olarak isimlendirilir. İşletim sistemi her proses için sayfa tablosu tutar. Prosesin her sayfasının hangi çerçevede olduğu bilgisinin kaydı yine sayfa tablosunda tutulur (Şekil-9.8). Bellek adresinin değeri, sayfa numarası ve sayfa içi ofset adresinin toplamından elde edilir. İşletim sistemi hangi çerçevelerin boş olduğunu bilgisini tutar. Bellekte bir prosese ilişkin birden fazla sayfa olabilir. Sayfa ve çerçeve boylarının ikinin kuvvetleri şeklinde seçilmesi dönüşüm hesaplamalarını basitleştirir. Mantıksal adres, sayfa numarası ve sayfa içi kayıklık değerinden oluşur. Sanal adresten fiziksel adrese dönüşüm için prosesin sayfa tablosundan yararlanılır. 16-bitlik bir örnek adres uzayı için, yüksek anlamlı 6-bit sayfa numarasını taşır, düşük anlamlı 10-bit ise sayfa içi ofset değerini gösterir (Şekil-9.9). Bölüm 9 Bellek Yönetimi 10 | S a y f a İşletim Sistemleri Şekil-9.7 Proses sayfalarına bellek çerçevelerinin atanması Bölüm 9 Bellek Yönetimi 11 | S a y f a İşletim Sistemleri Şekil-9.8 Proseslerin sayfa tablosu değerleri Şekil-9.9 Sayfalama yönteminde mantıksal adresten fiziksel adrese dönüşüm Bölüm 9 Bellek Yönetimi 12 | S a y f a İşletim Sistemleri 9.5 Segmanlama Bu yöntemde, program segman adı verilen parçalara bölünür. Programların tüm segmanları aynı boyda olmak zorunda değildir. Ancak segman boyunun bir üst sınırı bulunur. Sayfalama çözümü geliştiriciye saydam olsa da segmanlama geliştiriciye ya da onun kullandığı derleyiciye bağlıdır. Maksimum segman boyu bilinmesi gerekir. Mantıksal adresler iki bölümden oluşur: segman numarası ve segman içi ofset. Segman tablosundan segmanın adresi ve boyu alınır. Segman boyları eşit olmadığından dinamik bölmelemeye benzer özelliklere sahiptir. Bir program birden fazla segmandan oluşabilir. Bir programa ilişkin segmanlar bellekte ardışıl yerleşmek zorunda değildir. 9.6 Görüntü Bellek Bellek erişimleri dinamik olarak çalışma anında fiziksel adreslere dönüştürülür. Proses çalışması boyunca belleğe alınıp, bellekten atılabilir ve her seferinde farklı bir bölgeye yerleştirilebilir. Prosesin parçalarının bellekte birbirini izleyen bölgelerde olması gerekli değildir. Benzer şekilde çalışma anında prosesin tüm parçalarının birden bellekte olması gerekmez. İşletim sistemi başlangıçta belleğe prosesin bir kısmını yükler. Prosesin bellekte bulunan kısmına Yerleşik Küme (Resident Set) adı verilir. Çalışma zamanında ihtiyaç duyulan bir bölge bellekte yoksa kesme oluşur. İşletim sistemi prosesi bloke eder ve istenen mantıksal adresi içeren parçayı belleğe yükler. Bunun için işletim sistemi tarafından disk G/Ç isteği oluşturulur. Disk G/Ç işlemi yürütülürken işlemciyi meşgul bekletmemek için hazır kuyruğunda bekleyen proseslerden biri çalıştırılır. Disk G/Ç işlemi tamamlanınca kesme oluşur. İşletim sistemi bekleyen prosesi hazır durumuna getirir. Fiziksel bellekteki tüm parçaların dolu olması durumunda ise belirli bir kritere bağlı olarak bir parça fiziksel bellekten ikincil belleğe atılır. Bellekten atılan bir parçaya hemen ihtiyaç duyulması durumu yenilgi durumu olarak adlandırılır. Bu çok sık gerçekleşirse İşlemci zamanı proses parçalarını ana bellek ve ikincil bellek arasında taşımakla geçer. Bu soruna karşılık, işletim sistemi, prosesin geçmişine bakarak hangi parçalara ihtiyaç duyacağını kestirmeye çalışır. Proses içi program kodu ve veri erişimleri birbirine yakın bölgelerde kalma eğilimindedir. Bu yerellik prensibi olarak adlandırılır. Kısa bir süre içinde prosesin sadece küçük bir alt kümesi gerekecektir. Hangi parçaların gerekeceği konusunda tahminde bulunmak bu şekilde mümkün olabilir. Fiziksel bellekte daha fazla proses bulunabilmesi için prosesin bellek görüntüsü parçalara ayrılır ve sadece gerekli parçalar fiziksel bellekte bulundurulur. Hatta bir proses tüm fiziksel bellekten daha büyük olabilir. Bellekte çok sayıda proses olduğundan en az birinin Hazır durumunda olma olasılığı yüksektir. Görüntü bellek için donanım sayfalamaya ve segmanı yapıya destek vermelidir. Her prosesin kendi sayfa tablosu bulunur. Tablonun her satırında sayfanın ana bellekte yer aldığı çerçeve numarası bulunur (Şekil-9.10). Sayfanın ana bellekte olup olmadığını gösteren de bir bit yer alır. Buna ek olarak Sayfanın belleğe yüklendikten sonra değişip değişmediğini gösterir bir bit daha yer alır. Eğer değişiklik yoksa ana bellekten ikincil belleğe alınırken yeniden yazmaya gerek bulunmaz. Sayfa tablosunun tamamı çok yer gerektirebilir. Sayfa tabloları da bu nedenle ikincil Bölüm 9 Bellek Yönetimi 13 | S a y f a İşletim Sistemleri bellekte saklanır. Koşan prosesin sayfa tablolarının bir kısmı da ana belleğe alınır. Her görüntü bellek erişiminde iki fiziksel bellek erişimi gerekebilir: sayfa tablosunu getirmek veriyi getirmek Bu problemin çözümünde sayfa tablosu kayıtlarını tutmak için hızlı bir cep bellek kullanılır: Translation Lookaside Buffer (TLB). En yakın zamanda kullanılmış olan sayfa tablosu kayıtlarını tutar. Ana bellek için kullanılan cep bellek yapısına benzer bir işlev görür. Şekil-9.10 Sayfa tablosu kayıtları SAYFA BOYU Sayfa boyu küçük olursa iç parçalanma daha az olur. Küçük sayfa boyları olursa proses başına gereken sayfa sayısı artar. Proses başına fazla sayfa olması sonucunda sayfa tablosu boyları büyür. Sayfa tablosu boyunun büyük olması sonucu tablonun ikincil bellekte tutulan kısmının daha büyük olmasına neden olur. İkincil belleklerin fiziksel özellikleri nedeniyle daha büyük bloklar halinde veri aktarımı daha verimli olur. Sayfa boyunun büyük olması daha iyidir. Sayfa boyu küçük olunca bellekteki sayfa sayısı artar. Zaman içinde proseslerin yakın zamanda eriştikleri sayfaların büyük kısmı bellekte olur ve bu nedenle sayfa hatası düşük olur. Sayfa boyu büyük olunca sayfalarda yakın zamanlı erişimlere uzak kısımlarda olur ve sayfa hataları artar. Birden fazla sayfa boyu olabilir. Büyük sayfa boyları program komut bölümleri için kullanılabilir. Küçük boylu sayfalar iplikler için kullanılabilir. Çoğu işletim sistemi tek sayfa boyu destekler. ALMA YÖNTEMİ Alma yöntemi, sayfanın belleğe ne zaman alınması gerektiğini belirler. İsteğe dayalı sayfalama yöntemi kullanılıyorsa ancak sayfaya erişim olduğunda sayfa belleğe getirilir. Sayfa hatası başta daha yüksek olur. Önceden sayfalama yöntemi kullanıldığında ise gerektiğinden daha fazla sayfa belleğe alınır. Diskte birbirini izleyen konumlarda yer alan sayfaları birlikte belleğe getirmek daha etkin bir çözümdür. YERİNE KOYMA Yerleştirme yöntemi hangi sayfanın yerine konacak kararını verir. Bellekten atılacak sayfa yakın zamanda erişilmesi olasılığı düşük olan bir sayfa olmalıdır. Çoğu yöntem bir prosesin gelecek davranışını eski davranışına dayanarak kestirmeye çalışır. Bazı çerçeveler kilitlenmiştir. Bir çerçeve kilitliyse yerine başkası yerleştirilemez: İşletim sistemi çekirdeği, G/Ç tamponları gibi. Bölüm 9 Bellek Yönetimi 14 | S a y f a İşletim Sistemleri YERİNE KOYMA YAKLAŞIMLARI En Uzun Süredir Kullanılmamış (Least Recently Used (LRU)) Yöntemi En uzun zamandır erişim olmamış olan sayfayı seçer. Yerellik prensibine göre yakın zamanda da bu sayfaya erişim olmayacaktır. Her sayfada en son erişim zamanı bilgisi tutulur bu nedenle ek bir maliyet getirir. İlk Giren İlk Çıkar (First-in, first-out (FIFO)) Yöntemi Prosese atanmış sayfa çerçevelerini çevrel bir kuyruk olarak ele alır. Sayfalar sıralı olarak bellekten atılır. Gerçeklenmesi en basit yöntem budur. Bellekte en uzun kalmış sayfanın yerine konur. Ancak bu sayfalara yakın zamanda erişim olabilir. Saat yöntemi Kullanım biti adını alan ek bit kullanılır. Sayfa belleğe yüklendiğinde kullanım bitine 1 değeri yüklenir. Sayfaya erişimde kullanım biti bir yapılır. Çevrel kuyruk tutulur. İşaretçi en son belleğe alınan sayfanın bir sonrasını gösterir. Bellekten atılacak sayfa belirlenirken bulunan kullanım biti 0 olan ilk sayfa seçilir. Atılacak sayfa belirlenirken 1 olan kullanım bitleri de sıfırlanır. Kullanım biti 0 olan yoksa ilk tur tamamlanır, ikinci turda daha önce sıfır yaptıklarının ilki seçilir. Bölüm 9 Bellek Yönetimi 15 | S a y f a