• Ana belleğin işlemler arasında paylaştırılmasına ana bellek yönetimi ya da bellek yönetimi denir. 1. ROM 2. RAM 3. PROM 4. EPROM 5. EEPROM 6. FLASH MEMORY 7. ÖNBELLEK OLARAK SAYILABILIR. Programların kalıcı olarak durduğu sadece okunabilen bellek tipidir. Veri sadece ROM bellekten elde edilebilir. • Hiçbir bilgi ROM belleğe yazılamaz. ROM yapımcı veya kullanıcı tarafından bir daha değiştirilmemek üzere konulan program komutlarını içerir. Örneğin BIOS ROM belleğe konulur. ROM bellek uçucu (non-volatile) değildir. • Yani bilgisayar sisteminin enerjisi kesildiği zaman ROM’da depolanan bilgi kaybedilmez. Çalışma şekli açısından oku/yaz belleği olarak da adlandırılır. Yani bu tür bellekler hem içeriğine bilgi yazmak hem de içeriğindeki bilgiyi okumak için tasarlanmıştır. Rastgele erişimli denmesinin sebebi belleğin herhangi bir yerinde bulunan verilere bir sıra takip edilmeksizin yani rastgele ve aynı sürede erişilmesidir. RAM’da saklanan bilgiler değiştirilebilir. RAM’daki bilgilere erişim, disk ya da disket sürücülerindeki erişimle karıştırılmayacak kadar hızlıdır. Bellek sığası (kapasitesi) Byte cinsinden ölçülür. Byte; bellek ölçü birimidir, 8 bitten oluşur. Bit ise 1 ve 0 konumu alabilen en küçük hafıza birimidir. Bellek ölçüleri ise büyükten küçüğe doğru: Kilo Byte; Bellek ölçü birimidir. 1024Byte den oluşur. Küçük uzantılarda kullanılır. Mega Byte; Bellek ölçü birimidir. 1024 KiloByte den oluşur. müzik ve program dosyaları v.b uzantılarda kullanılır . Giga Byte; Bellek ölçü birimidir. 1024 Mega Byte den oluşur. büyük boyutlu uzantılarda kullanılır . Tera Byte; Bellek ölçü birimidir. 1024 Giga Byte den oluşur. büyük boyutludur yeni yangınlaşmakta olan bir ölçüdür. 1 BYTE 8 BİT 1 KİLO BYTE(KB) 1024BYTE 1 MAGA BYTE(MB) 1024 KB 1 GİGA BYTE(GB) 1024 MB 1 TERA BYTE 1024 GB RAM bellekler DRAM (Dynamic RAM) ve SRAM (Statik RAM) olmak üzere iki çeşittir. Kişisel bilgisayarlarında kullanılan bellektir. Bu tür belleklerde bilgileri saklamak için elektrik yükleri kullanılır. Bilgisayarda bellek hücreleri bir kondansatör ve bir transistör ile temsil edilir. Tipik bir kondansatör aralarına yalıtkan madde olan bir çift madde olan plakadan ibarettir. Plakanın birine pozitif yük uygulandığında diğeri negatif olarak yüklenir. • Bir kondansatör üzerindeki yük tek bitlik dijital bilgi saklayabilir. Yani kondansatör üzerinde yük var ise bit 1 değerini yoksa 0 değerini alır. Statik RAM elektrik olduğu sürece içinde veri bitlerini saklayan bir RAM’dir. • Hafıza hücrelerini temsil etmek için basit bir set/reset flip flop kullanılır. DRAM’lerden farklı olarak bilgilerin güncellenmesi gerekmemektedir. Bu da SRAM’leri hızlı yapan en önemli özelliktir • Buna karşılık pahalıdırlar. SRAM’ler genellikle bilgisayarın önbelleğinde kullanılırlar. PROM’ UN özellikleri temelde ROM’la aynıdır. Bir kez programlanır ve bir daha programı değiştirilemez ya da silinemez. Ancak Prom’un üstünlüğü yonganın fabrikada yapılırken programlanmak zorunda olmayışıdır. • Herkes satın alabileceği PROM programlayıcısı ile amaca göre PROM’a bilgi yazılabilir. RAM’ların elektrik kesildiğinde bilgileri koruyamaması ROM ve EROM’ların yalnızca bir kez programlanabilmeleri bazı uygulamalar için sorun yaratmıştır. Bu sorunların üstesinden gelmek için teknoloji devreye girmiş ve EPROM’lar ortaya çıkmıştır • EPROM programlayıcı aygıt yardımı ile bir EPROM defalarca programlanabilir, silinebilir. EPROM programlayıcı, EPROM’un üzerindeki kodlanmış programı mor ötesi ışınlar göndererek siler. • Yonganın üzerindeki pencere, parlak güneş ışığı EPROM’ kolayca silebileceğinden, programlama işleminden sonra EPROM’ UN üzeri bir bantla kapatılır. Bu bellek türünde bilgilerin yazılması için ve silinmesi için normal elektrik voltajı uygulanır. • Diğer ROM türlerinde olduğu gibi içerdiği veriyi elektrik kesilse de saklar. GeneL bütün ROM türlerinde olduğu gibi RAM bellek kadar hızlı değildir • . Bu tür belleklerin bir kullanım sınırı vardır. Bu tür bellekler üzerine bilgiler yüzlerce ya da binlerce kere yazılabilir. EEPROM’un özel bir uygulaması FLASH MEMORY’dir. • Aralarındaki en önemli fark ise EEPROM’a bilgilerin byte byte yazılması FLASH’lara ise bilgilerin sabit bloklar halinde yazılmasıdır. • Bu sabit bloklar 512 bytedan 256 KB’a kadar olan bir aralıkta değişir. Bu sabit bloklar halinde yazılma özelliği FLASH MEMORY’i EEPROM’a daha hızlı yapmıştır. • EEPROM’larda olduğu gibi FLASH MEMORY’nin de bir yaşam süresi vardır. Bu 100.000’den 300.000 kez yazmaya kadar değişebilir. • Ön Bellek çeşitleri; 1- Internal (L2) Cache : Bu işlemci üreticisi tarafından üretilen ve CPU üzerinde bulunan cache bellek türüdür. 2External (L1)Cache : Anakart üzerinde bulunan ve anakart üreticisi tarafından üretilen cache bellek türüdür. Günümüz bilgisayarlarında hızı belirleyen en önemli faktörlerden bir tanesi de Ön bellek kullanımıdır. • Günümüzde veri okuması yazması ve işlenmesi yapılan çoğu bilgisayar elemanında bulunur. Önbellek aslında SRAMlerden oluşmuş bellek topluluğudur. Çalışma şekli ise işlenecek olan bilgiyi alınmak istendiğinde ilk defa buraya uğranmasıdır. Ön belleğin kullanım amacı işlenecek olan bilgi işlemeden önce buraya getirilerek bilgilerin işlenmeye hazır hale getirilmesidir. • Genellikte Mikro işlemcilerde kullanılır ve mikro işlemcinin hızını belirleyen en önemli faktörlerden birisidir. Normalde işlenecek bilgilerin hepsi bilgisayarın ANA BELLEĞİN (RAM) ’de bulunur. • İşlemci verileri işlemek için yol sistemleri ile ANA BELLEĞE gidecek ve oradan işleyeceği bilgiyi alacak ve işleyecektir. • Ne ANA BELLEĞİN ne de yolların hızı işlemcinin hızına yetişemez. Bu yüzden işlemcinin her veri işleme ihtiyacında ANA BELLEĞE gitmesi zaman kaybına yol açacaktır ve işlemci yeteri kadar verimli kullanılmayacaktır. İşte bu yavaşlığı önlemek için önbellekler kullanılır. • İşletim sistemlerinde bellek hiyerarşisini yöneten parçaya ise bellek yöneticisi (memory manager) denir. • Bellekte tutulan bilgiler, komutlar/operatörler ve komutların uygulanacağı veriler olmak üzere ikiye ayrılır. • Ana bellekte ayrıca iletim sistemi bulunmakta ve bilgisayar kapanana kadar sürekli bellekte bulunmaktadır. Bir işletim sisteminin bellek yönetiminin yararları şunlardır: • Bellekteki herhangi bir işlemi başka bir yere aktarabilmelidir. • Birden fazla işlem veya kullanıcı olduğunda bir kullanıcının diğer kullanıcı alanlarına girmeleri önlenmelidir. • Kullanıcılar arası kaynak paylaşımını sağlamalıdır. • Belleğin mantıksal alanlara bölünmesini sağlayarak bilgiye erişimi kolaylaştırmalıdır. • Belleğin yetmediği durumlarda fiziksel başka bellek alanlarını yani hard diskleri kullanabilmelidir. •Bellekte bilgiler ikili düzende saklanmaktadır: BİT : (0-1) NİBBLE : Fh(15) (4 Bit=1 Nibbles) BYTE : FFh (255) (8 Bit= 2 Nibbles=1 Byte) WORD : FFFFh (65536) (16 Bit=4 Nibbles=2 Byte=1 Word) • Bellek Yönetiminin Gerektirdikleri: Yeniden yerleştirme (Relocation): -Programcı çalışan programının bellekte nereye yerleşeceğini bilmez, • Bellek Yönetiminin Gerektirdikleri: -Koşan program ikincil belleğe atılıp, ana bellekte farklı bir yere tekrar yüklenebilir, -Bellek referans adresleri fiziksel adres değerlerine dönüştürülmeli. ► Koruma: -İzni olmadan bir proses bir başka prosesin bellek alanlarına erişemez, -Programın yeri değişebileceğinden kontrol için programdaki gerçek adresler kullanılamaz -Çalışma anında kontrol edilmeli. ► Paylaşma: Birden fazla prosesin aynı bellek bölgesine erişmesi: -Program kodu -Ortak veri alanı • Bellek Yönetimi Teknikleri: ► Bölmeleme (Partitioning): -Sabit -Dinamik -Basit sayfalama (Paging) -Basit segmanlama (Segmentation) -Sayfalamalı görüntü bellek (Virtual Memory) -Segmanlamalı görüntü bellek • Sabit Bölmeleme: ►Bölme boyları eşit: -Boş bölmeye, boyu bölme boyundan küçük ya da eşit prosesler yüklenebilir, • -Tüm bölmeler doluysa proseslerden biri bellekten atılır -Program bölmeye sığmayabilir ⇒ programcı program parçalarını birbirinin üzerini örtecek şekilde (overlay) yazar. ►Bellek kullanımı etkin değil: -Her program ne kadar boyu küçük de olsa tam bir bölmeyi elinde tutar ⇒ iç parçalanma (internal fragmentation) -Eşit boyda olmayan bölmeler kullanılması sorunu bir derece çözer ►Maksimum aktif proses sayısı sınırlı ►İşletim sistemi tarafından gerçeklenmesi kolay ►Getirdiği ek yük az. • Dinamik Bölmeleme: ►Bölme sayısı ve bölme boyları sabit değil, ►Proseslere sadece gerektiği kadar bellek atanır, ►Kullanılmayan boş yerler yine de oluşur ⇒ dış parçalanma, ►Tüm boş alanın bir blok halinde olması için sıkıştırma kullanılır: -(IBM OS/MVT: multi programming with a variable number of tasks) • “Buddy” Yöntemi: ►Tüm boş alan 2U boyutunda tek bir alan olarak ele alınır S boyutundaki bir istek eğer 2U-1 < s <= 2U ise tüm blok atanır, - Aksi halde blok 2U-1 boyutunda iki eş bloğa bölünür (buddy), -s’den büyük veya eşit en küçük birim blok oluşturulana kadar işlem devam eder • Buddy Sistem Örneği Buddy Sistem Örneği: • Buddy Yönteminin Ağaç ile Temsili Buddy Yönteminin Ağaç ile Temsili: • Yeniden Yerleştirme : ►Proses belleğe yüklendiği zaman ancak mutlak bellek adresleri belirlenebilir, ►Proses çalışması boyunca değişik bölmelere yerleşebilir (swap) Mutlak adresler değişebilir, ►Sıkıştırma nedeni ile de proses farklı bölmelerde yerleşebilir farklı mutlak bellek adresleri. • Adresler : ►Mantıksal -Belleğe erişimde kullanılan adres gerçek fiziksel adreslerden bağımsız adres dönüşümü gerekir ►Bağıl -Adres bilinen bir noktaya göre bağıl verilir, -Genellikle bu nokta prosesin başıdır. ►Fiziksel -Ana bellekteki gerçek konum adresi • Yeniden yerleştirme için gerekli donanım desteği: • Saklayıcılar: ►Taban saklayıcısı -Prosesin başlangıç adresi ►Sınır saklayıcısı -Prosesin son adresi ►Bu değerler saklayıcılara proses belleğe yüklendiğinde yazılır. • Sayfalama: ►Belleği küçük, eşit boylu parçalara böl. Prosesleri de aynı boyda parçalara ayır. ►Eşit boylu proses parçaları: sayfa ►Eşit boylu bellek parçaları: çerçeve ►İşletim sistemi her proses için sayfa tablosu tutar -Prosesin her sayfasının hangi çerçevede olduğu -Bellek adresi = sayfa numarası ve sayfa içi ofset adresi ►İşletim sistemi hangi çerçevelerin boş olduğunu tutar ►Mantıksal adres sayfa numarası ve sayfa içi kayıklık değerinden oluşur • Sayfalama: ►Sabit bölmeleme benzeri ►Bölmeler küçük ►Bir prosese ilişkin birden fazla sayfa olabilir bellekte ►Sayfa ve çerçeve boylarının ikinin kuvvetleri şeklinde seçilmesi gerekli dönüşüm hesaplamalarını basitleştirir ►Mantıksal adres sayfa numarası ve sayfa içi kayıklık değerinden oluşur Bellek Yöneticisinin Görevleri: 1) Belleğin hangi kısımlarının kullanılıp hangilerinin kullanılmayacağını izlemek, 2) İşlemlere gerektiğinde bellek ayırmak, 3) İşlem sonlandığında ise işleme ayrılan bellek bölgesini boşaltmak, 4) Ana bellekte yer kalmadığında ikincil belleği kullanmak, 5) Ana bellek alanındaki durum bilgisini tutmak. • Bellek Yönetim Yöntemleri 1)Tek Programlama Yöntemi, 2)Çoklu Programlama, 1) Tek Programlama Yöntemi: Tek ve Bitişken Bellek Yönetimi: Genellikle tek işlemli işletim sistemleri tarafından kullanılır. İşlem ana bellekte yok ise ikincil bellekten ana belleğe yüklenir ve işlem bitimine kadar orada kalır. Ana belekte çalışma esnasında yalnızca bir tek işlem/program bulunur. Ana Bellek İŞLETİM SİTEMİ İŞLEM BOŞ 2-Çoklu Programlama, a) Değişmez Bölümlü Bellek Yönetimi, b) Değişken Bölümlü Bellek Yönetimi, c) Yeri Değiştir Bölümlü Bellek Yönetimi, d) Sayfalı Bellek Yönetimi, e) Kesimli Bellek Yönetimi, f) Sayfalı Sanal Bellek Yönetimi, g) Kesimli Sanal Bellek Yönetimi, h) Kesimli-Sayfalı Sanal Bellek Yönetimi. a) Değişmez Bölümlü Bellek Yönetimi: Bu yöntemde bellek, işletim sistemi alan ve kullanıcı alanı olarak ikiye bölünür. • Daha sonra kullanıcı alanı da kendi içerisinde farklı boyutlarda bölümlere ayrılır İşletime alınacak işlem kendine en uygun büyüklüğe sahip bölüme alınır ve sonlanana kadar orada kalır. Bu yerleşme de işlem boyutu ile bölüm boyutu arasında fark olduğu için boşluklar olumaktadır. ANA BELLEK İşletim Sistemi İşlem 1 1. Bölüm Boşluk İşlem 2 2. Bölüm Boşluk İşlem 3 3. Bölüm Boşluk 2) b) Değişken Bölümlü Bellek Yönetimi: Bir önceki yönteme benzer ama ana bellekteki bölümler önceden sabit olarak belirlenmez, işlemler aktifleştiğinde işlemin boyutuna göre belirlenir Burada kullanılan alanların ve boş alanların yerleri ve boyutlar çizelgeler yardım ile takip edilir. İşletim Sistemi İşletim Sistemi Boş Alan Görev 1 Görev 1 Görev 2 Boş Alan Bitiştirme Görev 3 Görev 2 Boş Alan Görev 2 Boş Alan İkincil Bellek Yönetimi : Bilgisayar sistemi ana belleğin yanında bilgilerin kalıcı olarak saklanmasına olanak veren ikinci bir saklama aygıtına sahiptir. • İlk saklama aygıtları manyetik tape’ler olmuştur. Manyetik tape’lerden veriyi okumak için, ilgili verinin olduğu noktaya kadar tüm kayıtlar teyp sürücü tarafından okunmalıdır. • Buna sıralı erişim (sequential access) denir ve bu durum teyp sürücülerini oldukça yavaş kılmaktadır. Sabit disklerde ise direkt erişim (direct access) denilen metot kullanılır ki, verinin bulunduğu kısımdan önceki kayıtların okunmasına gerek yoktur Bu nedenle okuma/yazma hızı manyetik teyp’lere göre çok daha hızlıdır. Disk Yapısı Bilgisayarda kullanılan diskler fiziksel olarak basit yapıdadırlar. Bilgi, her iki yüzü manyetik bir materyalle kaplı olan diskler üzerine kaydedilir. • Yüksek hızlı bir motor diskleri okuma/yazma kafası önünde döndürür. Okuma/yazma kafaları da bu diskler üzerinde bir kol yardımıyla hareket ederek istenilen bilgiye ulaşılır. • Disk Yapısı • Disk Yapısı • Geleneksel Bellek (Conventional Memory): DOS’un ana belleğidir (base memory olarak da bilinir). 0 – 640 KB arası hafıza bölgesidir. MSDOS uygulamaları burada çalışır. Bütün PC’ lerde 640K sınırı söz konusudur. 1024 KB - 4 GB Uzatılmışbellek alanı Yüksek bellek alanı 640- 1024 KB 0-640 KB Üst bellek alanı Geleneksel bellek (Temel bellek) *Temel Bellek *Hafızanın İlk 640 KB’lık bölümü *DOS programları • Üst Bellek ve Genişletilmiş Bellek: Ayrılmış bellek olarak da bilinen bu alan 640 KB ile 1 MB arasındaki hafıza bölgesidir Üst bellek blokları halindedir. Takçalıştır elemanların sürücüleri, video sürücüleri bu alanda tutulur. EMM386.exe dosyası tarafından yönetilir. 1024 KB - 4 GB Uzatılmış bellek alanı Yüksek bellek alanı 640- 1024 KB Üst bellek alanı 0-640 KB Geleneksel bellek (Temel bellek) *Ayrılmışbellek *384 KB *UMB ler halinde * Sistem BIOS * Tak-çalıştır sürücüler * Video sürücüler • Uzatılmış Bellek (Extended Memory): 286 veya yukarısı bilgisayarlarda 1Mb’ın yukarısındaki bellek alanına verilen isimdir. • Windows gibi özel programlar, DOS’ ta RAM sürücüler ve SMARTDRIVE tarafından kullanılır. HIMEM.SYS ile kullanılabilir hale getirilir. • Yani programların çalıştırılması için değil verilerin saklanması için kullanılır. Uzatılmış bellek 1024 KB alanı - 4 GB Yüksek bellek alanı 640Üst bellek alanı 1024 KB 0-640 Geleneksel bellek KB (Temel bellek) *XMS (extended memory specification) *1 MB üzeri bellek *Windows kullanır. *HIMEM.SYS kontrol eder. • Genişletilmiş Bellek (Expanded Memory ): Genişletilmiş bellek olarak tercüme edilen expanded memory, 640K’ dan daha fazla belleğe ihtiyacı olan programların kullanması içindir. • 8086 veya 80286 bilgisayarlara özel kartlar yardımı ile eklenmiştir. EMS yazılımları ile kullanılabilir hale getirilir. • Genişletilmiş bellek sisteminde eskiden kullanılmakta olan yığın - aktarma adlı bir yöntem kullanılmaktadır. Bu belleğin çalışması3 parçadan oluşur • . Birincisi, yığın aktarmalı bellek kartıdır ve gerekli olan ekstra belleği üzerinde taşır. Bu ekstra bellek 16 Kb’lık parçalara bölünmüştür. • İkincisi, genişletilmiş bellek yöneticisi (Expanded Memory Manager - EMM) denilen bir yazılımdır. Üçüncüsü, genişletilmiş belleği kullanacak uygulama programıdır. • Yüksek Bellek (High Memory Area-HMA): HMA, ya da “Yüksek Bellek Alanı”, uzatılmış belleğin ilk 64K’lık kısmıdır ve DOS tarafından özel olarak kullanılır. Windows da kullanabilir. Uzatılmış bellek alanı 1024 KB - 4 GB Yüksek bellek alanı 640- 1024 KB 0-640 KB Üst bellek alanı Geleneksel bellek (Temel bellek) *Uzatılmış belleğin ilk 64 KB’lık bölümü *Windows’un kullandığı DOS çekirdeği burada çalışır. Disk Çizelgelemeleri İkincil bellek üzerinde çok sayıda okuma/yazma işlemi yapılmaktadır. Bu nedenle okuma/yazma işlemlerinin çok hızlı gerçekleştirilmesi gerekir. Disk hızını belirleyen 3 etken vardır : 1. Sistem öncelikle kafayı uygun iz ya da silindir üzerine hareket ettirir. Bu harekete ”Arama”, geçen süreye de ”Arama Süresi” denir. • 2. Kafa uygun track(iz) üzerindeyken, doğru sektöre gelene kadar geçen süreye de ”Rotasyon el Gecikme (Rotational Delay)” denir. 3. Son olarak bilgi diskten okunarak ana belleğe transfer edilinceye kadar geçen süreye de ”Transfer Süresi” denir. Disk Çizelgelemeleri Bir diskin okuma/yazma isteğine cevap vermesi bu üç sürenin toplamıyla bulunur. Arama süresinin kısa olması ve kafanın istenilen bloğa hızlı ulaşabilmesi için, çeşitli disk çizelgeleme algoritmaları geliştirilmiştir. Bunlardan bazıları : 1. FIFO (İlk gelen ilk hizmet) disk çizelgeleme algoritması 2. SCAN disk çizelgeleme algoritması 3. C-SCAN disk çizelgeleme algoritması 4. SSTF (Shortest Seek Time First) disk çizelgeleme algoritması 1. FIFO (İlk gelen ilk hizmet) Disk Çizelgeleme Algoritması En basit disk tarifleme algoritmasıdır. Disk kuyruğundaki sıraya göre okuma/yazma kafası hareket ettirilir. 1. FIFO (İlk gelen ilk hizmet) Disk Çizelgeleme Algoritması 2. SCAN Disk Çizelgeleme Algoritması (Elevator Algorithm) Okuma/yazma kafası tek yönde ilerliyor, o yöndeki isteklere cevap verdikten sonra geri yönde en yakın isteğe cevap veriyor. 2. SCAN Disk Çizelgeleme Algoritması (Elevator Algorithm) 3. C-SCAN Disk Çizelgeleme Algoritması SCAN algoritmasına benzer, fakat disk kolu sona ulaştığı zaman bir sonraki işlemde en başa geliyor. 3. C-SCAN Disk Çizelgeleme Algoritması 4. SSTF (En kısa arama zamanlı ilk önce) Algoritması Okuma yazma kafası bulunduğu konumdan (başlama konumu), arama zamanının en düşük olduğu iz üzerine hareket eder. 4. SSTF (En kısa arama zamanlı ilk önce) Algoritması Sanal Bellek (Virtual Memory): Sanal Bellek (Virtual Memory): • Bilindiği gibi “işlem”, öncelikle belleğe yüklenir. Ancak işlemin hacmi, belleğin fiziksel hacminden fazla ise sanal bellek tekniği kullanılır. • Sanal bellek tekniğinde, işlemin tamamı değil, onun yerine yalnızca o anda çalıştırılacak bölüm belleğe alınır ve ana belleğin kapasitesi artırılır. • Günümüzde genel amaçlı bilgisayarların işletim sistemleri çoklu ortam uygulamaları, sözcük işlemcileri, tablolama izlenceleri gibi sıradan uygulamalar için sanal bellek yöntemi kullanılmaktadır • Sanal bellek yönetimi Tarihçesi; • Sanal belleğin geliştirilmesinden önceki dönemlerde (1940 ve 50’ler) büyükçe izlenceler (program), iki seviyeli saklamayı gerçekleştirebilmek için üst yazım (overlaying) yöntemleri gibi mantıksal çıkarımlara ihtiyaç duymaktaydı. • Birçok sistem sanal bellek kullanımından önce de belleğin birden çok izlence arasında paylaşımını sağlayabilecek yeteneğe sahipti. • PDP-10 ‘un ilk modellerinde görülen taban ve sınır yazmaçlarını ( base and bounds registers) bu duruma örnek olarak gösterebiliriz. • Bu yöntem her bir uygulamaya 0’dan başlayan özel bir adres uzantıyı ve bunun yanında adresin bellekte uygulama için ayrılan kısmında olup olmadığını denetleyen bir sınır yazmacının kullanımını içerir. • Eğer yazmaç adresin ilgili kısma ait olduğunu onaylarsa, karşılık gelen taban yazmacı içeriğini de ana bellekteki adresi göstermek üzere işleme dâhil eder. • Bu sanal bellek kullanılmadan bölümlere ayırmanın (segmentation) basit bir biçimidir. • Sanal bellek 1952-1962 yılları arasında Manchester Üniversitesi’nde Atlas Bilgisayar için geliştirilmiş ve 1962 yılında tamamlanmıştır. • 1961’de Burroughs, sanal belleğe sahip ilk ticari bilgisayarı olan B5000’i piyasaya sürdü. • Anabilgisayarların işletim sistemlerinde uygulanmasından önce karşılaşılan birçok sorunla baş etmek için çeşitli modeller, deneyler ve kuramların geliştirilmesi gerekti. • Devingen adres dönüşümleri özelleştirilmiş, pahalı ve kurulumu zor donanımı ve belleğe erişimi kısmen yavaşlatması en büyük sorunlarıydı. • Ayrıca tüm sistemi kapsayan uygulama ve algoritmaların ikincil belleği kullanmasındaki etkinliği düşüreceğine dair endişeler bulunmaktaydı. • İlk olarak kullanıldığı işlemci • Sanal bellek X86 mimarisine Intel’in I286 (80286) işlemcisinin güvenli biçimi (protected mode) ile tanıtıldı • . Önceleri bölüm takası (segment swapping) ile gerçekleştirildi ancak büyük bölümlerde (segment) sorun yaratıyordu. • Intel 80386 mevcut bölmelere ayırma katmanının altında işleyen sayfalama(paging) yöntemini tanıttı. • Artık sayfa hatası (page fault) diğer kural dışı durumlarla (exception) birlikte değerlendirilebilmekteydi. • Sanal bellek kullanımının iki temel gerekçesi vardır: • Programların konumlandırılması, belleğin programlar arasında etkin ve güvenli bir şekilde paylaşılması. • Sınırlı boyuta sahip ana belleğin programlama ve kullanım açısından meydana gelecek güçlükleri aşmak. Adres Dönüştürme Önbelleği (ADÖ), diğer sıradan önbellekler gibi tam ilişkili, kümeli ilişkili ya da doğrudan eşlemeli olarak tasarlanabilir. Adres Dönüştürme Önbellekleri çoğunlukla küçüktür, satır sayısı çok hızlı bilgisayarlarda bile 128-256’yı geçmediğinden bu önbelleklerde karmaşık olan tam ilişkili aramanın masrafı fazla değildir. Çoğu orta düzey işlemcide küçük n yollu kümeli ilişkili düzen kullanılır. ADÖ kullanan bilgisayarlar önbellek erişimi için gereken çevrim sayısını azaltmak için önbellek erişimini ADÖ erişimi ile koşut olarak (aynı anda, eşzamanlı) yapar. Bu yöntem ile sanal adreslerin sayfa numaraları ADÖ’ de arama işlemi için kullanılırken sayfa eklemesi kısmı önbellek erişiminde dizin olarak görev yapar. Adres Dönüştürme Önbelleği (ADÖ) sayfa tablosunda gerçek adreslere eşlenen kayıtları tutan bir önbellek işlevi görür. Eş zamanlı erişim ancak önbelleğe dizin olarak gönderilen bitler sanal adres dönüştürmesi sırasında değişmezse işe yarar. Bu durum küçük önbellekler, büyük sayfa boyutları ya da yüksek n yollu kümeli ilişkili önbellekler kullanma gereksinimini doğurur. Eşzamanlı Önbellek ve ADÖ Erişimi En iyi koşullarda bir sanal adres ADÖ tarafından dönüştürülerek önbelleğe yollanır ve ilgili veri bulunur, getirilir ve daha sonra işlemciye geri gönderilir. • En kötü durumda ise başvuru (reference) sıradüzendeki bu üç yapıda da; yani ADÖ, sayfa tablosu ve önbellekte bulunamaz. DECStation 3100’de kullanılan MIPS R2000 her ne kadar basit bir uygulamaya sahip olsa da özyapısı günümüz adres dönüştürme belleklerininkine çok benzerdir. • Bellek sistemi 4-KB sayfalar ve 32-bitlik adres uzayına sahiptir. Dolayısıyla, sanal sayfa numaraları 20 bit uzunluktadır. Sanal adres ile gerçek adres aynı boyutlara sahiptir. • Adres dönüştürme önbelleği (ADÖ) 64 kayıt tutabilir ve tam eşlemelidir. ADÖ buyruk ve veri başvuruları tarafından paylaşılır. Her kayıt 64 bit genişliğindedir ve 20 bitlik etikete sahiptir ki bu etiket kaydın ADÖ’ de tutulan sanal sayfa numarasıdır. Sanal sayfa numarasına karşılık gelen gerçek sayfa numarası da 20 bit uzunluğundadır ve geçerli bit, kirli bit gibi sayman bitlerine yer verir. Bir ADÖ sayma bulamama durumu meydana geldiğinde, MIPS donanımı başvurunun sayfa numarasını özel bir yazmaca kaydeder ve kural dışı durum (exception) üretir • Kural dışı durum işletim sistemini uyararak sorunun yazılım katmanında halledilmesini sağlar. Bulunamayan sayfanın gerçek adresini bulmak için ADÖ sayfa tablosunu sanal adres numarası ve yürürlükte olan sayfa tablosunun başlangıç adresini tutan yazmaç yardımıyla dizinler. Bir takım buyruk kümesi ile adres dönüştürme önbelleği güncellenir. • İşletim sistemi sayfa tablosundaki eşlenen gerçek adresleri adres dönüştürme önbelleğine yerleştirir. Eğer geçersiz bir gerçek adresle karşılaşılmışsa hata oluşur. Bir ADÖ’ de sayfa bulamama durumu en az 10, ortalama olarak da 16 çevrimlik bir gecikmeye neden olur. • Donanım değiştirilmek sayfa için bir önerme dizini tutar ve bu dizinden rasgele bir kayıt seçilir. ADÖ’ de koruma (protection) sağlanması için yazma erişiminin denetimini sağlayan bir bit mevcuttur. • Bu özellik, salt okunur sayfaların üzerine yazmayı engeller böyle bir istekle karşılaşıldığında da bir hata üretir. • Bellek Çakışmaları; • Kalabalık ek donanıma sahip bir sistemde, bazı donanımların "çalışma adresleri", kullandığınız işletim sistemi tarafından aynı atanınca, çakışma dediğimiz olay ortaya çıkar. • Genelde bellek çakışmaları olduğu zaman “bu program cevap vermiyor –this programis not responding-“ mesajı alırız. • Sayfalama (Paging); • Sayfalama (Paging) • Ana bellek ve işlem sırası ile sayfalara bölünür. Bir diğer ifade ile eşit bölümlere bölünürler. • İşlemlere ilişkin sayfalar, işlemcinin o esnada ihtiyaç duyduğu işlem sayfası, sanal bellekten ana bellek sayfalarına aktarılır. işletim sistemi, gerçek ve sanal sayfa bilgilerini bir çizelge de tutar . Çizelgenin her bir eleman , bir sayfaya ilişkin bilgileri tutar. İşlem Sayfa Numarası: işlemin sayfasın belirtmek için kullanılan numaradır. Değişti Biti: Sayfada bir değişiklik yapılmış ise 1, yapılmamış ise 0’dr. Yüklü Biti: Sayfa ana ana bellekte ise 1, sanal bellekte ise 0 değerini alır. • Referans Biti: Sayfa daha önce kullanıldı ise 1, kullanılmadı ise 0 değeri alır. • Bellek Sayfa Numarası: Eğer sayfa bellekte ise ana bellekteki adresi içerecek türden bellekteki sayfa numarasını verir. Sayfa ofseti (d): Taban adresi ile birleştirilerek fiziksel bellekte sayfanın içerisindeki yerin belirlenmesinde kullanılır. • Sayfa tablosunda hem sayfa hem de ofset adresi bulunmaktadır. Sayfalamalı bir sistemde adres dönüşümü Bölümleme; mantıksal adres alanı bölümlerden oluşmaktadır. Adres hem bölüm numarası hem de bölüm içerisindeki adresi belirten ofset numarasından meydana gelmektedir (<bölüm numarası, ofset>). • Bellek Yönetim Birimi; Sanal bellek, sayfalama ve sayfa bilgilerinin tutulmasının yanı sıra ana bellek ile sanal bellek arasındaki sayfaların değişimi ile de yükümlüdür. • Bu değişimler ise bir takım algoritmalara dayalı olarak yapılmaktadır. • Bu algoritmalardan bazları aşağıdadır: 1) FIFO (First In First Out-) (ilk ilk: Çıkar) • Ana belleğe il k giren sayfanin işlemcideki işlem hacminin azaldığı varsayımı altında; Ana belleğe yüklenecek bir sayfa olduğunda öncelikle ana bellekte en uzun kalan sayfa sanal belleğe, sanal bellekteki sayfa ise ana belleğe aktarılır. • 2) LIFO (Last In First Out-Son Giren İlk Çıkar): • Sanal bellekteki bir sayfa, işlemci tarafından ihtiyaç duyulup çağrılıp ana belleğe yüklendiği için bir sonraki çağrılacak sayfa ana belleğe yüklenirken en son sayfaya ilişkin uygulama “eskimi”kabul edilir. • 3) LFU (Least Frequently Used-En Az Kullanilan): • Ana bellekteki en az kullan lan sayfa ile değiştirme ilkesine dayanır. 4) NRU (Not Recently Used-Son Zamanlarda Kullanılmayan): İşleme alınacak ve diskte bulunan sayfalar, ana bellekte bulunan ve son zamanlarda kullanılmayan sayfalar ile değiştirilme ilkesiyle hareket eden bir algoritmadır. Eğer başvurulan veri o anda ana bellekte bulunamıyorsa sayfa ana bellekte mevcut değil demektir ve “sayfa hatası (page fault)” oluşur. Sayfa hatası çok yüksek bulamama gecikmesine neden olur. Sanal bellek sistemleri tasarlanırken bu durumun yaratacağı yükü engellemek için bazı önlemler alınabilir. • Sayfalar yüksek erişim zamanını karşılayacak kadar büyük olmalıdır. • Sayfa hatası denetimi sağlanmalıdır. • Oluşan hatalar donanım yerine yazılımla çözülebilir. Tümüne yazma (write-through) yöntemi çok masraflı olduğu için geri yazma(writeback) metodu kullanılır. Sayfa hatası meydana geldiğinde, yönetim işletim sistemine bırakılır. Bu devir kural dışı durum (hata) işleyişi (exception mechanism) ile gerçekleştirilir. Yönetim işletim sistemine geçtiğinde, sayfayı bir sonraki sıradüzende (genelde teker) bulmalı ve istenen sayfayı ana bellekte nereye koyacağına karar vermelidir. Sanal adres tek başına sayfanın tekerin neresinde olduğunu belirtmek için yeterli olmadığından, sanal adres uzayında bulunan her sayfanın tekerde izini sürmek gerekir. İşletim sistemi bu işlem için her sanal sayfanın tekerde nerede saklandığını kaydeden veri yapıları yaratır • Bu veri yapısı sayfa tablosunda veya ayrı bir tabloda tutulabilir. İşletim sistemi aynı zamanda her gerçek sayfanın hangi uygulamalar ve hangi sanal sayfalar tarafından kullanıldığını takip etmek üzere ayrı bir veri yapısı daha oluşturur. Ana bellekteki tüm sayfalar kullanımdayken sayfa hatası oluşması durumunda, işletim sistemi bir sayfayı değiştirmek(takas yapmak) üzere seçmelidir. Sayfa hatalarının en aza indirilmesi amaçlandığından çoğu işletim sistemi yakın bir zamanda kullanılmayacağını varsaydığı bir sayfayı seçer. • İşletim sistemlerin bu varsayımları geçmiş durum değerlendirmelerine dayanarak gelecek durumun tahmin edilmesine dayanır. Bu tahminlerde kullanılan algoritmaların başında en uzun zamandır kullanılmayanla değiştirme (least recently used (LRU)) gelir. İşletim sistemi uzun zamandır kullanılmayan sayfanın daha yakın bir zamanda kullanılan sayfadan daha az gerekli olduğu varsayımı yaparak uzun zamandır kullanılmayan sayfayı istenen sayfayla değiştirmek üzere seçer. En uzun zamandır kullanılmayan yönteminin kusursuz ve eksiksiz olarak uygulanması veri yapısının her bellek başvurusunda güncellenmesini gerektireceğinden oldukça masraflıdır. Bunun yerine birçok işletim sisteminde hangi sayfaların yakın zamanda kullanılıp hangilerinin kullanılmadığına dair iz sürülür. • İşletim sisteminin yükünü hafifletmek için donanımda başvuru biti (reference/use bit) tutulabilir. Bu bit sayfanın her kullanımında kurulur. İşletim sistemi belirli aralıklarla bu bitleri temizler ve hangi sayfaların kullanılıp kullanılmadığı bilgisinin kaydını tutar. Bu bilgi ışığında, işletim sistemi bir sayfa değiştireceği zaman en uzun zamandır kullanılmayan; yani başvuru bitleri mantıksal sıfıra eşit olan sayfalar arasından bir seçim yapar. • Burada bir konuya değinmekte yarar vardır: Ana belleğin büyük hacimli olması, işlemin hepsinin ana belleğe yüklenmesi demek olacağından, düşük hacimli ana belleğe göre yüksek hacimli ana bellekte iletim daha hızlı olacaktır. • Boş Alan Yönetimi: Disk üzerinde bulunan dosyal silindiğinde silinen dosyaların boşalttığı alanların tekrar kullanılması gerekir. • İşletim sistemi bu alanların listesini tutar ve yeni dosya kaydedileceğinde bu kısıma kaydedilir. • İşletim sistemlerinde boş kayıt listesi ile ilgili çeşitli yöntemler ardır. Bunlar ; 1. 2. 3. 4. Bit vektör yönetimi Bağlantılı liste yönetimi Gruplama yönetimi Sayma yönetimi Bit vektör yönetimi; Bu yöntemde boş alanların listesi bir bit listesinde tutulur. Bilgi bulunan yerler” 1” boş alanlar ise”0” İle gösterilir. • Bazı işletim sistemlerinde terside olabilir. • Bağlantılı liste yönetimi Boş alanların tutulması ile ilgili diğer bir sistemde bağlantı liste yöntemidir. • Bu yöntemde boş bir alan kendisinden sonra gelen boş alanı gösteren bir işaretleyici “pointer” tutar. • Gruplama yönetimi Bu yöntemde birbirini takip eden boş alanlar gruplanır e grubun ilk elemanının adresi bir önceki boş alan grubunun son elemanında tutulur. Grubun ilk elemanı kendisinden sonraki boş alanları tutar. • Sayma yönetimi ikinci bellek üzerinde bulunan ilk boşluk alanda tüm boş alanların ve bunları takibindeki boşlukların adres e sayıları tutulur. • Yan yana yerleşim metodu; • Bu metoda dosya disk üzerinde bir birini takip eden adreslerde bulunur Yan yana yerleşim metodu; • Bağlantılı Yerleşim; • Bu yerleşim biçimin de dosyalar parçalar halinde dağıtılarak ayrı ayrı bölgelerde tutulur • Dizinler bir işaretçinin bulunduğu “pointer” eklenir. Bağlantılı Yerleşim; • İndeksli Yerleşim; • Her dosya için bir indeks oluşturulur. Dizinler dosyaların indeks blog adresini tutar. Böylece her bloğa direkt olarak ulaşılabilir. İndeksli Yerleşim; . Korumalı Modda Bellek Adresleme Gerçek mod bellek adreslemede uygulamalar yani programlar sadece 1024 KB lık hafıza bölümünde çalışabilir. • Yani bütün uygulamalar geleneksel bellek ve üst bellek alanında çalışır. DOS işletim sistemi bu şekilde çalışan bir işletim sistemidir. Yani gerçek moda çalışır. • Gerçek mod; İşlemci, CPU hafızanın 1024 KB lık bölümünü adresler DOS gibi text tabanlı işletim sistemleri sadece bu moda çalışırlar. • Korumalı mod; • Bu moda her uygulama kendi adresleme bilgilerini taşır. Böylece bir program bütün sistem adresleme bilgileri kapatılmadan sonlandırılabilir. • Yani bir hafızadaki bir bellek alanı diğer bir bellek alanını etkilemez. Her program kendi bellek alanı ile sınırlıdır ve de 1 MB üzeri bellek alanına ulaşabilir. Translation Lokalside Bufer; • 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 TLB kullanımı • Sayfa boyu küçük iç parçalanma daha az • 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. Örnek Sayfa Boyları Alma yöntemi – “Sayfanın belleğe ne zaman alınması gerektiğini belirler • – “İsteğe dayalı sayfalama” kullanılıyorsa ancak sayfaya erişim olduğunda belleğe getirir sayfa hatası başta daha yüksek Alma yöntemi – “Önceden sayfalama yöntemi kullanıldığında gerektiğinden daha fazla sayfa belleğe alınır. • Diskte birbirini izleyen konumlarda yer alan sayfaları birlikte belleğe getirmek daha etkin Yerleştirme yöntemi – Hangi sayfanın yerine konacak? – Bellekten atılacak sayfa yakın zamanda erişilmesi olasılığı düşük olan bir sayfa olmalı. – Çoğu yöntem bir prosesin gelecek davranışını eski davranışına dayanarak kestirmeye çalışır. Çerçeve kilitleme – Bir çerçeve kilitliyse yerine başkası yerleştirilemez – İşletim sistemi çekirdeği – Kontrol yapıları – G/Ç tamponları – Her çerçeveye bir kilit biti atanması Temel Yerine Koyma Algoritmaları Optimal yöntem – Bir sonraki erişimin olacağı zamanın en uzak olduğu sayfanın seçilmesi – Gelecek olaylar hakkında kesin bilgi olması imkansız • 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. Ek yük getirir. • LRU ALGORİTMASI; İlk gelen ilk gider algoritmsı ile optimal algoritması arasında yer alır. En uzun kullanılmayan sayfa seçilir ve yeni gelen buraya kaydedilir. Bir sanal bellek sisteminde, bir sonraki sıradüzene tümüne yazmanın(write-through) yaratacağı gecikme çok büyük olur. • Bunu karşılamak bir ara bellekle sağlanamaz. Bunun yerine, geri yazma (write-back) yöntemi kullanılır. Bellekte sadece bir sayfa yenisiyle değiştirildiğinde sadece o sayfa kopyalanır. • Burada kullanılan teknik bir alt seviyedeki sıradüzene yazma tekniğine geri kopyalama(copy back) benzerdir. İkincil bellekten (teker) aktarma zamanı, ikincil belleğe ulaşım zamanına göre çok daha kısa olduğundan kopyalamanın tek bir öbek yerine tüm bir sayfa için yapılması daha etkin bir çözüm oluşturmaktadır. Geri yazma yöntemi bu konu göz önünde bulundurularak tasarlanmalıdır. • Değiştirmek üzere seçilen sayfanın geri kopyalanması gerekip gerekmediği denetlenerek yazmanın bu bilgiye göre yapılması verimliliği daha da arttıracaktır. Bir sayfanın bellekte okunduktan sonra değiştirilip değiştirilmediğinin izi sayfa tablosuna eklenen bir bit sayesinde sürülebilir. Bu bite kirli bit (dirty bit) adı verilir. Sayfa ilk yazıldığında bu bit kurulur. İşletim sistemi sayfayı değiştirmek üzere seçtiğinde kirli bit sayfanın yerine yenisi getirilmeden önce yazılması gerekip gerekmediğini gösterir. LINUX’’ta Bellek Yöntemi Görüntü Bellek Adresleme – 3 seviyeli sayfa tablosu yapısı şu tablolardan oluşur:(her tablo bir sayfa boyunda) 1- sayfa kataloğu 2- orta aşama sayfa kataloğu 3-sayfa tablosu 1- sayfa kataloğu – her aktif prosesin bir sayfa kataloğu var. – boyu bir sayfa – her kayıt orta aşama sayfa kataloğunun bir sayfasına işaret – her aktif proses için bellekte yer almalı 2- orta aşama sayfa kataloğu – birden fazla sayfadan oluşabilir – her kayıt sayfa tablosunda bir sayfaya işaret eder 3-sayfa tablosu – birden faz-la sayfadan oluşabilir – her kayıt prosesin bir sanal sayfasına işaret eder – görüntü adres 4 alandan oluşur 1. en yüksek anlamlı alan sayfa katalogundaki bir kayda indis 2. alan orta aşama sayfa kataloğundaki bir kayda indis • 3 . alan sayfa tablosundaki bir kayda indis • 4 . alan seçilen sayfadaki offset adresi Platformdan bağımsız olarak 64 bitlik adresler Sayfa atama – buddy sistemi kullanılır • Sayfa yerine koyma – sayfa yöntemine dayalı bir yaklaşım – kullanım biti yerine 8 bitlik yaş alanı var – yaşlı olan (uzun zamandır erişilmemiş) sayfalar öncelikle bellekten atılır