Windows Eski Sürümleri Bellek Yapısı -Intel 8086/8088 mimarili işlemciler//640k RAM -Segment Modeli(Segmented Model) -Her segment 64K uzunluğunda -Intel 80286,640K dan daha fazla RAM i destekledi -Windows 3.1 sayfalama mekanizması ilk defa kullanıldı. -Ama 16 bit mimaride çalışmaktaydı.
Windows Yeni Sürümlerinin Bellek Mimarileri -Intel 80386 mimarisinden tam anlamıyla yararlanabilmek için WindowsNT geliştirildi. -32 bit mimariye sahipti. -Windows95,98 ve ondan sonraki sürümlerde 32 biti desteklemektedirler. -Günümüzde işlemciler 64 bit mimariye geçmektedir. Vista bunu destekleyen bir sürümdür.
Operating system version Edition Virtual memory Maximum physical memory Microsoft Windows Server 2003 SP 1 Standard Web 2 GB Enterprise 6, if hardware supports Physical Address Extension (PAE) Enterprise (64-bit) 16 terabytes 1 terabyte Datacenter 128 GB, if hardware supports PAE Datacenter (64-bit) 16 terabytes 1 terabyte Windows Server 2003 Standard Web 2 GB Enterprise 32 GB, if hardware supports PAE Enterprise (64-bit) 16 terabytes 6 Datacenter 128 GB, if hardware supports PAE Datacenter (64-bit) 16 terabytes 512 GB Windows XP Home Professional 64-bit Edition Version 2003 16 terabytes 128 GB Windows 2000 Professional Server Advanced Server 8 GB Datacenter Server 32 GB, if hardware supports PAE
Windows 32&64bit mimaride Bellek Yönetimi -32 bit mimaride adreslenebilecek sanal uzay 4GB tır. -Kullanılan teknoloji Sanal Adresleme olduğundan sayfa boyutunu 4KB seçersek adreslenmesi gereken sanal sayfa sayısı 1milyon olur.böylece sayfa tablosunda da 1milyon girdi bulunacaktır. -Her sürecin kendi sanal adres uzayı ve sayfa tablosu olduğu düşünülürse:
Windows 32&64bit mimaride Bellek Yönetimi -Bellek alanı yetersizliği ve sanal sayfa arama ve eşleştirmede geçecek zaman nedeniyle bu soruna bir çözüm bulunması gerekmiştir. -Windows bu sorunu çok seviyeli sanal sayfalar ile çözmüştür.
Windows Sanal Adres Uzayı Yerleşimi -Windowsta 2 seviyeli sanal sayfalar bulunur. -Bu sanal sayfaların tamamı 2 boyutlu bir matris gibi düşünülebilir. -Birinci seviyedeki(boyuttaki) sanal sayfaya Sayfa Yöneticisi(Page Directory) denir. -Bu kısımda 1024 adet girdi bulunur.
Windows 32&64bit mimaride Bellek Yönetimi -İkinci seviyeye(boyuta) ise Sayfa Tablosu(Page Table) denir. -Bu kısımda ise her biri 1024 girdiden oluşan 1023 tablo bulunmaktadır.bu tablodaki h bir girdi 4KB lık bir fiziksel adrese işaret etmektedir. -Sayfa Yöneticisi(1024)+Sayfa Tabloları(1023*1024) = 1024*1024 olur.
Windows Sanal Adres Uzayı Yerleşimi
32bitlik bir Sanal Adresin Parçaları -Bir 32 bitlik adreste ilk 10 bit Sayfa Yöneticisi Tablosunda indeks olarak kullanılır. -İkinci 10 bit Sayfa Tablosunda indeks olarak kullanılır. -Kalan 12 bit ise fiziksel çerçevede kaç bit ilerde nereye konumlanacağımızı belirler.
Physical Address Virtual pages Page Table Entries Virtual Address Virtual Memory Physical Memory
Windows Sanal Adres Uzayı Yerleşimi -Sanal Adres Uzayı windowsta 2 ye bölünmüştür. Bunun küçük adresli 2GB ı kullanıcı modu,büyük adresli 2GB ı ise çekirdek modu olarak ayrılmıştır. -Bunun nedeni ise sayfalar ve sayfa tablolarının bu uzay içerisinde saklanmasıdır ve bir kullanıcı sürecinin sisteme müdahele etmesini engellemektir..şekilde görüldüğü gibi:
Windows Sanal Adres Uzayı Yerleşimi
Windows Sanal Adres Uzayı Yerleşimi -Peki Windows un sayfaları ve sayfa tablolarını 0xC0000000 ten itibaren başlatmasının nedeni nedir? -..
System cache Paged pool Nonpaged pool FFFFFFFF System cache Paged pool Nonpaged pool Kernel and executive HAL Boot drivers FFFFFFFF Process page tables Hyperspace C0000000 Process page tables Hyperspace C0000000 Kernel and executive HAL Boot drivers 7FFFFFFF 7FFFFFFF 3GB User Address Space 2GB User Address Space 00000000 00000000 Default address space layout for 32-bit systems Address space layout for 32-bit systems started with /3GB switch
CR3 Register ı -CR3 özel bir registerdır.her süreç için,o sürece ait olan sayfa yöneticisinin fiziksel adresini tutar.sayfa Yöneticisinin indeksi hesaplanırken bu adresin üzerine eklenir. -Sistemde o an bulunan süreçlerin sadece sayfa yöneticileri bellekte tutulur.ve hepsinin başlangıç adresleri farklı olacağından böyle bir yönteme başvurulmuştur.
32 Bit Bir Sanal Adresin Fiziksel Adrese Çevrilmesine Örnek: -Örneğimizdeki sanal adres 0x2034AC54 olsun -CR3 registeındaki sayfa yöneticisi başlangış adresi 0x13453000 olsun. -Önce bu sanal adres 10+10+12 şeklinde bitlerine ayrılır. -00 1000 0000 + 11 0100 1010 + 110001010100=32bit -İlk 10 biti adrese çevirirsek = 0x80 ve CR3 ün içeriğini eklersek Sayfa Yöneticisinin indeksini elde ederiz.
32 Bit Bir Sanal Adresin Fiziksel Adrese Çevrilmesine Örnek: -0x80 + 0x13453000 Sayfa Yöneticisinin adresini verdikten sonra, bu indeksin içeriğinden hangi Sayfa Tablosunun yükleneceği bulunur ve bu tablonun başlangış adresini elde ettiğimize göre,bu adrese ikinci 10 bitin hex a çevrilmiş hali eklendiğinde doğru sayfa tablosunun,doğru indeksinde bulunmuş oluruz.
32 Bit Bir Sanal Adresin Fiziksel Adrese Çevrilmesine Örnek: -Bundan sonra artık bulunduğumuz indeksin içeriği bize çevirdiğimiz sanal sayfanın hangi fiziksel sayfa çerçevesiyle eşleştiğini verir.bu adrese 12bitlik kalan kısımda eklenirse çevirme işlemi tamamen yapılmış olur.
Takaslama -Sistemde bellek doluysa ve bir süreç daha fazla bellek alanına ihtiyaç duyarsa takas işlemi gerçekleşir. -Windows bloklanan sürecin bütün bilgisini PAGEFILE.sys adı verilen dosyaya kaydeder. -Sonra işlemciye hata verilen kısımdan tekrar çalışmasını söyler ve işlemci bu sefer eşleme yaparak İşlemi gerçekleştirebilir.
Takaslama -Windows takaslama işlemini yaparken hangi sürece ait bellek bölgesini çıkaracağına LRU algoritmasıyla karar verir.
Ek Bilgiler -Bazı Windows Bellek Yönetim Fonksiyonları
-SORULAR?