B l m 10
Download
1 / 88

BÖLÜM 10 - PowerPoint PPT Presentation


  • 191 Views
  • Uploaded on

BÖLÜM 10. SANAL BELLEK. İçerik. Giriş Sayfalama İsteği ( Demand Paging ) Sayfa Değişimi Frame lerin Yerleşimi Thrashing Bölümleme İsteği ( Demand Segmentation ) İşletim Sistemi Örnekleri. Giriş.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' BÖLÜM 10' - maja


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
B l m 10

BÖLÜM 10

SANAL BELLEK

Yrd. Doç. Dr. Sevinç İlhan Omurca OS Bolum 10


İçerik

  • Giriş

  • Sayfalama İsteği (Demand Paging)

  • Sayfa Değişimi

  • Frame lerin Yerleşimi

  • Thrashing

  • Bölümleme İsteği (Demand Segmentation)

  • İşletim Sistemi Örnekleri


Giriş

  • Virtual memory prosesin işletim sırasında tamamının hafızada tutulmasına gerek olmadan çalıştırılabilmesine olanak tanıyan bir tekniktir.

  • Bu metodun en görünür avantajı kullanıcı programlarının fiziksel hafızadan daha büyük olmasına izin verebilmesidir.

  • Uygulanması zordur.

  • Bu teknik programcıları bellek sınırlamalarının hesaplanmasından kurtarır.

  • Proseslerin adres uzaylarını ve dosyaları kolayca paylaşabilmesine olanak tanır.

  • Dikkatli uygulanmazsa performansı düşürebilir.



...

  • Sanal bellek, mantıksal belleği fiziksel bellekten ayıran bir sistemdir.

  • Küçük bir fiziksel hafızada büyük lojik hafıza kullanılabilir.

  • Mantıksal belleği fizikselden ayırmaya ek olarak, sanal bellek yöntemi birçok dosya ve belleğin paylaşılmasına olanak tanır.

  • Virtual memory genelde (sayfalama isteği)demand paging diye adlandırılan sistemin çalıştırılması ile uygulanır. Aynı zamanda segmentasyon sisteminde de uygulanabilir.


Zet sayfalama ste i mekanizmas
Özet Sayfalama İsteği Mekanizması

  • PTE sayfalama isteğinde yardımcıdır

    • Valid: Sayfa bellekte, PTE fiziksel sayfayı işaret eder.

    • Invalid: Sayfa bellekte değil, PTE’deki bilgiyi sayfayı diskte bulmak için ara

  • Kullanıcıdan gelen sayfa referansı invalid PTE ise

  • MMU işletim sistemine kesme gönderir.

  • İşletim sistemi page fault için ne yapar?

    • Yer değiştirmek için eski bir sayfa seçer

    • Eğer seçilen sayfa değiştirilmiş ise (D=1) içeriğini diske geri yaz

    • Ona ait PTE invalid yapılır, cached TLB invalidate yapılır.

    • Yeni sayfa bellekten diske yüklenir.

    • Page table girişi güncellenir, TLB yeni giriş için invalidate yapılır.

    • Tred page fault hatasının kaldığı yerden işlemeye devam eder.

  • Tred devam edince yeni sayfa için TLB yüklenir.


Demand paging sayfalama iste i
Demand Paging (sayfalama isteği)

  • Program genelde ikincil bir hafızada(Çoğunlukla disk) bulunur. Bir programı işletmek istediğimiz zaman belleğe taşınır.

  • Programın tamamını taşımaktansa daha yavaş hareket eden “lazy swapper” denen bir mantık kullanılır.

    • Lazy swapper bir programı ihtiyaç olana kadar hafızaya yüklemez.

    • Bir program hafızaya yerleştirildiğinde lazy swapper ilerleyen işletimde hangi sayfaların kullanılabileceğini tahmin eder.

    • Onları hafızada bırakır. Swap-out etmez.

    • Sadece uzun süre kullanılmayan sayfaları swap-out eder.

    • Çok kullanılan sayfaları bellekte tutar.

  • Böylece I/O zamanı azalır.


Temel bile enler
Temel bileşenler

  • Bir proses swap-in yapıldığı zaman, Pager, proses bir kez daha swap-out yapılmadan önce hangi sayfaların kullanılacağını tahmin eder.

  • Tüm prosesi swap-out etmek yerine, pager, yalnızca gerekli sayfaları belleğe taşır.

  • Bu durum kullanılmayacak olan sayfaların belleğe taşınmasını da önlemiş olur.

  • Bu şemada, hangi sayfaların bellekte hangilerinin disk üzerinde olduğunu ayırt etmek için bir takım donanım desteğine ihtiyaç duyarız.

  • Valid-Invalid bit şeması bu amaç için kullanılan bir şemadır.


Valid invalid bit
Valid-Invalid Bit

Bazı sayfalar bellekte değilken Page Table görünümü


...

  • Hafızaya alınan sayfalar page table ‘da valid, hafızda olmayanlar invalid olarak işaretlenir.

  • Bu işaret programın bu sayfaya erişemeyeceği anlamına gelmez. Sadece o an için hafızada bulunmadığı anlamına gelir.

  • Erişim isteği ulaştığında sayfa diskten alınıp belleğe yüklenir, ilgili bit valid hale gelir. Erişim tekrarlanır.

  • Programın işletilmesi için gereken sayfalar belleğe yüklendiğinde program işletimine devam eder.

  • Program, bellekte olmayan bir sayfaya erişim yapmak istediğinde “page fault” kesmesi tarafından yakalanır.


Page fault
Page Fault

  • Sayfalama hatası olduğunda yapılan işlemler:


...

  • Öncelikle bu proses için internal tablolar kontrol edilir. (Çoğunlukla proses kontrol blok ile muhafaza edilir) Hafıza erişiminin geçerli olup olmadığı ve referansın geçerli olup olmadığı kontrol edilir.

  • Eğer bir ihlal varsa yani referans invalid ise program sonlandırılır. Eğer valid ise ve henüz bu sayfayı getirmemiş isek onu belleğe getirmemiz gerekir.

  • Boş bir frame buluruz. Free frame list ‘den bunu öğrenebiliriz.

  • Az önce belirlediğimiz frame ‘e diskten bilgiyi okuyup getirecek işi planlarız.

  • Diskten bilgi okunması tamamlandığında , internal table ‘daki ilgili biti sayfanın bellekte olduğu şeklinde güncelleriz.

  • Illegal adres hatası nedeniyle durdurulan programı restart ederiz. Proses şimdi az önce erişmek istediği sayfa hafızada olduğu için normal olarak erişebilir.


Demand paging performans
Demand Paging Performansı

  • Effective Access Time (EAT)

    • EAT=Hit rate x Hit time + Miss rate x Miss Time

  • Örnek:

    • Memory access time: 200 nanoseconds

    • Average page-fault service time:8 miliseconds

    • P: probability of miss, 1-p: probability of hit

    • EAT= (1-p)x200ns+px8ms

    • = 200ns + p x 7,999,800 ns


...

  • Etkin zamanını tam olarak hesaplamamız için page fault sayısını hesaplamamız gerekir. Page fault sırası ile şu aşamaları uygulanmasına neden olur:

    • İşletim sistemine trap iletilir.

    • Proses durumunun ve kullanıcı register’larının saklanması.

    • Interrupt’ın nedeninin page fault olduğunun tespiti

    • Sayfa referansının geçerli olduğunun tespiti ve sayfanın disk üzerindeki yerinin bulunması.

    • Diskten bilginin okunup free frame’e aktarılması:

    • Okuma isteği karşılanana kadar ilgili device’ın kuyruğunda bekle

    • Device seek(arama) ve latency(gecikme) zamanı için bekle

    • Sayfanın boş bir frame transferini başlat


...

  • Beklerken cpu başka işler için tahsis et.

  • Diskten interrupt gelmesi (I/O complete)

  • Bir başka kullanıcı için register ‘ları ve program state ‘lerini saklama

  • Interrupt’ ın diskten geldiğinin belirlenmesi

  • Page table ‘ın ve diğer table ‘ların düzeltilmesi (güncellenmesi)

  • CPU ‘ nun tekrar bu proses için çalıştırılmasını bekleme süresi

  • Kullanıcı register’larının , program state’ inin , yeni page table’ ın geri depolanması ve kesilen talimatın işletiminin tekrar başlatılması


...

  • Bu durumların hepsi her page fault ‘ta olmamaktadır. Fakat her durumda kabaca şu durumlar meydana gelmektedir.

    • Page fault interrupt’ını servis et.

    • Page değiştirilmesi (swap)

    • Prosesin restart edilmesi


  • Diske gitmek bellek erişim performansından ödün vermek anlamına gelecektir.

  • 1000 sayfa referansından bir tanesinde page fault oluşursa EAT=8.2 microsec. hesaplanmıştır.

  • Bu oranı %10 un altında tutmak için 400000 referansta 1 sayfa hatası oluşmalıdır. (Vistayı öldüren neden)

  • Bunların sonucunda işletim sistemlerinde sayfa değişim politikası çok önemlidir.


Sayfa de i imi
Sayfa Değişimi

  • Kullanıcı programı işletilirken page fault oluşur.

  • İşletim sistemi bunun illegal adres veya hafızada bulunmamasından kaynaklanan bir hata olduğunu kontrol eder.

  • İşletim sistemi disk üzerinde istenen sayfanın yerini bulur.

  • Hafızaya bunu alacağı zaman eğer hafızada yer yok ise ne olacak ?



Sayfa de i imi1
Sayfa değişimi

  • Sayfa değişimi şu yaklaşımı uygular:

    • Eğer hiç boş frame yoksa şu anda kullanılmayan bir frame bul ve onu hafızadan uzaklaştır.

    • Uzaklaştırılacak frame’in bilgileri diske yazılır.

    • Bu sayfanın hafızada bulunmadığı bilgisi de page table’da güncellenir.



...

  • Page Replacement için uygulanan tam model şöyledir :

    • Disk üzerinde istenen sayfayı bul

    • Bir boş frame bul

    • Eğer bu bir boş frame ise kullan

    • Aksi halde page-replacement algoritmasını kullanacak kendine bir kurban seç

    • Kurban sayfanın bilgilerini diske yaz. Frame table listesini güncelleştir.

    • İstenen sayfanın bilgilerini yeni elde edilen frame‘den oku. Page table ve frame table ‘da bilgili bilgileri güncelleştir.

    • Kullanıcı prosesini tekrar başlat.


Dirty bit
Dirty bit

  • Bu durumda dikkat etmemiz gereken başka bir durum da o page ‘in içeriğinin değişip değişmediği bilgisidir.

  • Bu da modify (dirty) bit kullanılarak ayarlanabilir. Her sayfa yada frame bir modify bite sahip olabilir.

  • Sayfa içeriği hafızaya alındıktan sonra dirty bit sıfırlanır.

  • Daha sonra bu page üzerinde herhangi bir bilgi değişikliği meydana geldi ise bu bit dirty modified olarak set edilir.

  • Page replacement sırasında bu bit incelenir.

  • Eğer sayfa içeriğinde herhangi bir değişiklik varsa, dirty bit set ise o zaman sayfa diske yazılır.

  • Eğer içerikte bir değişiklik yoksa tekrar yazılmasına gerek kalmaz.


Sayfa de i im algoritmalar
Sayfa Değişim Algoritmaları

  • Sayfa değişim algoritmalarından en az page fault üretecek teknik seçilmelidir.

  • Hafıza referans dizileri “referans string” olarak adlandırılır


Rnek referans string
Örnek:referans string

  • Özel bir program sırası:

  • 0100 , 0432 , 0101 , 0612 , 0102 , 0103

    , 0104 , 0101, 0611, 0102, 0103,

    0104, 0101, 0610, 0102, 0103, 0104, 0101, 0609, 0102, 0105

  • Her bir sayfada 100 byte bulunmaktadır referans stringi :

  • 1 , 4 , 1, 6 , 1 , 6, 1 , 6, 1, 6, 1 olacaktır.



Algoritmalar
Algoritmalar

  • Sıradaki metodları incelerken 3 frame boş kabul edip , şu referans string için incelemelerimizi yapalım :

  • 7 , 0 , 1 , 2 , 0 , 3 , 0 , 4 , 2 , 3 , 0 , 3 , 2 , 1 , 2 , 0 , 1 , 7 , 0 ,1


FIFO

  • En basit page replacement algoritmasıdır. FIFO algoritması her page hafızaya girdiğinde ona bir numara verir.

  • Page replacement gerektiğinde en eski giriş numarasına sahip olan page dışarı alınır.

  • Kötüdür çünkü az kullanılan bir sayfa için çok kullanılanı dışarı alır.


Optimum yer de i im alg
Optimum Yer Değişim Alg.

  • Optimal Page Replacement metodu tüm algoritmalar içerisinde en az page fault‘a uğrayan algoritmalardandır.

  • Mantığı basittir : En uzun zaman kullanılmayacak olan sayfayı değiştir.

  • Çok başarılı sonuçlar verebilir fakat geleceği kestirmek mümkün değildir.

  • Karşılaştırma yapmak için iyidir.


Least recently used lru
Least Recently Used (LRU)

  • Optimal replacement algoritmasının uygulama zorluğu nedeni ile bu algoritmaya yaklaşım yapmak daha mantıklı olacaktır. Mantığı , son belli bir periyotta en az kullanılan sayfaları değiştirmektir.

  • LRU her sayfayı son kullanıldığında işaretler. Bir page replacement gerektiğinde LRU en uzun periyotlu iş seçer ve onu dışarı alır.

  • Buradaki temel problem LRU ‘nun nasıl gerçekleneceğidir. Yani sayma işi nasıl yapılmalıdır. Bunun için 2 yaklaşım mevcuttur :

    • Counters :

      • Her page kullanıldığında onunla ilgili bir time-of-use register veya bir counter kullanmaktır. Periyot hesaplanırken bu clock register değerine bakılabilir. Clock için overflow dikkatle incelenmelidir.

    • Stack :

      • LRU uygulama gerçekleştirme yollarından birisi de page number’ lar için bir stack tutmaktır. Bir sayfa referans edildiğinde onu bulunduğu yerden çıkarıp stack ‘ın en üstüne koymaktır. Bu durumda en üstteki page ‘ler en fazla kullanılmış page ‘ler olacak , en alttaki page ‘ler en az kullanılmış page ‘ler olacaktır. Yer değiştirmede bu page ‘ler seçilir.


LRU

  • Proseslerin locality modeline dayanır.

  • Optimum yer değişim algoritmasına iyi bir yaklaşık çözüm üretebilir.



Belady s anomaly
Belady’s Anomaly

  • Bellek eklemek page fault sayısını azaltır mı?

    • LRU ve MIN için evet

    • FIFO için gerekli değil (Belady’s Anomaly olarak adlandırılır)


Lru uygulamas
LRU Uygulaması

  • Perfect:

    • Her referans için timestamp

    • Sayfa listesini referans edildikleri zamana göre sürekli sıralı tutmak

    • Bu yöntemin gerçekte uygulanması çok maliyetli

  • Clock Algoritması: Fiziksel sayfaları bir daire içinde bir single clock hand ile düzenlemek

    • LRU yaklaşıklığı

    • Eski sayfayı değiştir, en eskisini değil

  • Detaylar:

    • Hardware, her fiziksel sayfa için bir “use” bit kullanır.

      • Donanım her referansta use biti set eder.

      • Use bit set edilmemiş ise, uzun zaman referans edilmemiş demektir.

    • Sayfalama hatasında:

      • Advanced clock hand

      • Use biti kontrol et: 1 used recently: bellekte bırak

        2  yer değişim için seçilmiştir.

    • Tüm use bitler set edilmiş ise FIFO ya dönecektir.



Clock algorithm
Clock Algorithm

Referans Biti:

  • Düzenli aralıklarla (örneğin 100 msec) timer interrupt’ ı kontrolü işletim sistemine geçirir. İşletim sistemi her sayfanın son 8 periyotta ne kadar kullanıldığını anlamak için kayıtlar tutar. Burada bir bit sağa kaydırma yapacak son periyottaki bilgiyi en soldaki bite yazar.

  • Bu durumda 0000000 : son 8 periyottur hiç kullanılmamış bir sayfa

  • 11111111: son 8 periyottur tam kullanılmış bir sayfa.

  • 11000100 , 01110111‘e göre son periyotta kullanılmış olması nedeni ile daha kalıcı olacaktır.


Lru approximation n chance algorithm
LRU approximation: N. Chance Algorithm

  • Temel olarak FIFO algoritmasına benzer.

  • Sayfaya N şans ver

  • İşletim Sistemi her sayfa için sayaç tutar : # sweeps

  • Page fault ta, İşletim Sistemi use biti kontrol eder.

    • 1 son taramada (sweep’te) kullanıldı.

    • 0sayacı artır; sayac=N ise sayfayı değiştir.

  • Neden N büyük seçilir?

    • Daha iyi LRU yaklaşıklığı

  • Neden N küçük seçilir? Daha etkili

    • Aksi taktirde boş bir sayfa bulmak için çok uzun süre aramak zorunda kalacak

  • Common Implementation

    • Güncellenmiş sayfalara ekstra şans ver

      • Clean pages için N=1

      • Dirty Pages için N=2 (güncellemeler diske yazıldığında N=1 yap)



Sayma tabanl sayfa de i im alg
Sayma Tabanlı Sayfa Değişim Alg.

  • Least Frequently Used (LFU):

    • Her sayfa için bir counter tutar. Sayfaya erişim yapıldığında bu sayıyı artırır. Değişim yapılacağında en düşük sayıya sahip olan sayfa değiştirilir.

  • Most Frequently Used (MFU):

    • En az counter değerine sahip olan sayfa, muhtemelen yeni alınmıştır ve kullanılmamıştır diye düşünülür.Ve bu sayfa yer değiştirilmez.


Demand paging detaylar
Demand Paging (detaylar)

  • Hardware use bitini TLB de set eder: TLB girişi yer değiştirdiğinde, software use bitini page table’a geri kopyalar.

  • Software TLB girişlerini FIFO listesi gibi düzenler; TLB de olmayanlar LRU ile düzenlenir.


Frame lerin yerle imi
Frame’lerin Yerleşimi

  • Toplam sistemdeki boş frame‘in üzerinde yerleşim yapamayız. Bunun dışında yerleşim için kullanılabilecek minimum frame sayısını da belirlemeliyiz.

  • Açıkça görülmektedir ki , her bir proses için ayrılan frame sayısı azaldıkça , page fault sayısı artar , bu da sistemin daha yavaş bir performansla çalışmasına sebep olur.


Frame yerle im alg
Frame Yerleşim Alg.

Eşit Paylaşım:

  • En basit yol m adet frame‘i n adet proses kullanacak iken m/n eşit paylaşımda yerleşim yapmaktır.

  • Örnek olarak 93 frame varsa ve 5 adet proses varsa her proses 18 frame alır. 3 frame ise free frame buffer pool olarak tutulur.

    Oranlı Paylaşım:

  • Her prosesin ihtiyacı olan alana oranla frame kendilerine tahsis edilir.

  • 62 frame‘i 10 ve 127 sayfa kullanan 2 proses için paylaştıracak olursak :

  • 10/137 * 62 = 4

  • 127/137 * 62 = 57



Trashing
Trashing

  • Yüksek sıklıkta oluşan paging durumuna “trashing” adı verilir.

  • Eğer bir proses işletim zamanından daha fazla bir zamanı paging için harcıyorsa o proses trashing durumundadır.

  • Trashing birçok performans problemine neden olur.


Trashing1
Trashing

  • Proses yeterli sayfaya sahip değilse page fault oranı çok yüksektir:

    • Düşük CPU verimliliği

    • OS zamanının çoğunu swapping ile geçirir.

    • CPU hızı disk hızı ile sınırlandırılmış olur


...

  • Trashing nasıl tespit edilir ve önlenir?

    • Trashing‘i önlemek için prosese ihtiyacı olan kadar frame sağlamamız gerekir.

      • Hangi prosesin ne kadar frame‘e ihtiyacı olacağını nereden bileceğiz?

    • Bunun için çeşitli teknikler uygulanmaktadır.

      • Working set stratejisi programın o an gerçekte kullandığı frame‘lere bakar.

    • Bu yaklaşım program işletiminin localite modelini tanımlar.


Locality model
Locality Model

  • Locality model bir programın işletilirken değişik yerlerden geçtiğini ifade eder.

  • Locality, aktif olarak programın aynı anda kullandığı sayfa sayısıdır.

  • Bir program genelde değişik lokalitelerden oluşur.

  • Örnek olarak bir subrutin çağrıldığında bu yeni bir lokalite tanımlar. Bu lokalitede hafıza referansları subturinin talimatları ile belirlidir.

  • Lokalitenin kendi yerel değişkenleri vardır. Bunun yanında birtakım da genel değişkenler bulunmaktadır. Subrutinden çıkıldığında proses bu lokaliteyi terk eder.


Working set model
Working Set Model

  • Working set modeli lokalite üzerinde kurulmuş bir modeldir.

  • Bu model working set window‘u tanımlamak için  parametresini kullanır.

  • Genel mantığı son zamanlarda kullanılan  sayfa referanslarını incelemektir.

  • Working set son belli bir zamanda kullanılan  page referansları topluluğudur.

  • Eğer sayfa aktif kullanımda ise working set ‘de olacaktır.

  • Eğer kullanılmıyor ise  zamanından sonra working setten düşecektir.


...

  •   working-set window  Sayfa referans sayısı

    • örnek: 10,000 instruction

  • WSSi (working set of Process Pi):

  • D=toplam WSSi: frameler için toplam istek

  • Her proses aktif olarak working setteki page ‘lerini kullanır. Bu yüzden proses i WSSi frame ‘e ihtiyaç duyar.

  • Eğer toplam istek toplam uygun frame sayısından fazla olursa (D>m) trashing oluşur.

    • Birtakım prosesler yeterli frame alamaz.



  • Working set modelin kullanımı basittir.

    • İşletim sistemi her prosesi izler ve onların working set ölçülerine göre gereken frameleri tahsis eder.

    • Eğer yeterli extra boş frame var ise yeni bir proses başlatabilir.

  • Eğer working setin toplam boyu artarsa ve yeterli frame sayısını geçerse işletim sistemi prosesi askıya alabilir.

  • Prosese ait sayfalar, yeterli yer olduğunda geri yüklenmek üzere swap out edilir.


Working set list esi
Working Set Listesi

newer pages

older pages

  • Proses daima boş bir working set ile başlar.

    • Daha sonra Working sette olmayan bir sayfaya referans ettiğinde page fault lara maruz kalır.

Process “WorkingSet”


Sayfalama ste i zet
Sayfalama İsteği Özet

  • Sayfa değişim politikaları:

    • FIFO

    • MIN

    • LRU

  • Clock Algortihm: LRU yaklaşıklığı

    • Tüm sayfaları dairesel bir listede düzenler

    • Sayfaları tarar,

    • Bir çevrimde sayfa “not in use” ise yer değiştirilebilir.

  • N. Şans algoritması: LRU yaklaşıklığı

    • Yer değiştirmeden önce, sayfalar arasında saat üzerinde birden çok çevrim gerçekleştirilir.

  • Second chance Alg: LRU yaklaşıklığı

  • Working Set

    • Proses tarafından erişilen güncel sayfaların kümesi

  • Thrashing


Sanal adres fiziksel adres
Sanal AdresFiziksel Adres

  • page table girişleri yardımı ile eşleştirme

  • sanal sayfalar ve fiziksel bellek arasında dolaylı ilişki

user

Virtualpages

x86:

Physical memory

31

22

21

12

11

0

system

10

10

12

Page directory

index

user

Page table

index

Byte index

Page tableentries

system


Shared and private pages
Shared and Private Pages

Process A

Process B

00000000

Physical

Memory

  • Paylaşım için, birden çok prosesin PTE leri aynı fiziksel sayfalara işaret eder.

7FFFFFFF

80000000

C0000000

C1000000

FFFFFFFF


32 bit x86 address space
32-bit x86 Address Space

Default

3 GB user space

  • 32-bits = 4 GB

2 GB

User

process

space

3 GB

User

process

space

2 GB

System

Space

1 GB

System Space


64 bit address spaces
64-bit Address Spaces

Itanium

x64

  • 64-bits = 17,179,869,184 GB

    • x64 today supports 48 bits virtual = 262,144 GB

    • IA-64 today support 50 bits virtual = 1,048,576 GB

8192 GB

(8 TB)

User

process

space

7152 GB

(7 TB)

User

process

space

6657 GB

System

Space

6144 GB

System

Space


32 bit x86 virtual address space
32-bit x86 Virtual Address Space

00000000

Code: EXE/DLLs

Data: EXE/DLL static storage, per-thread user mode stacks, process heaps, etc.

Unique per process, accessible in user or kernel mode

  • 2 GB per-process

    • Bir prosesin, diğer prosesler tarafından direk olarak erişilemeyen adres alanı

  • 2 GB system-wide

    • İşletim sistemi buraya yüklenir, ve her prosesin adres alanında görünür.

7FFFFFFF

80000000

Code: NTOSKRNL, HAL, drivers

Data: kernel stacks,

File system cache

Non-paged pool,

Paged pool

Per process, accessible only in kernel mode

C0000000

Process page tables,

hyperspace

System wide,

accessible only in kernel mode

FFFFFFFF


64 bit ia64 itanium virtual address space
64-bit ia64 (Itanium) Virtual Address Space

00000000 00000000

User mode space per process

6FC 00000000

  • 64 bits = 2^64 = 17 billion GB (16 exabytes) total

    • Diagram NOT to scale!

  • 7152 GB default per-process

  • Pages are 8 Kbytes

  • All pointers are now 64 bits wide

Kernel mode

per process

1FFFFF00 00000000

Process page tables

20000000 00000000

Session space

3FFFFF00 00000000

Session spacepage tables

E0000000 00000000

System space

E0000600 00000000

FFFFFF00 00000000FFFFFFFF FFFFFFFF

System space page tables


X86 virtual address translation

index

physical

page number

(“page frame

number” or “PFN”)

index

x86 Virtual Address Translation

PFN 0

1

31 0

2

Page table

selector

Page table

entry selector

Byte within page

3

4

CR3

5

physical

address

6

7

8

9

10

11

12

Page Tables

(up to 512 per process,

plus up to 512 system-wide)

Page Directory

(one per process, 1024 entries)

Physical Pages

(up to 2^20)


X64 virtual address translation
x64 Virtual Address Translation

PFN 0

1

48 0

2

Page mapLevel 4

Page dirpointer

Page table

selector

Page table

entry selector

Byte within page

3

4

5

6

7

8

9

10

11

12

Page Map

Level 4

Page

Directory

Pointers

PageDirectories

Page

Tables

Physical Pages

(up to 2^40)

CR3


Virtual address translation
Virtual Address Translation

  • Her valid virtual address fiziksel bir adrese dönüştürülür.

virtual address

Page

Directory

Virtual page number

Byte within page

Address translation (hardware)

Page

Tables

if page

not valid...

page fault

(exception,

handled by

software)

Translation

Lookaside

Buffer

Physical page number

Byte within page

a cache of recently-

used page table entries

physical address


Mapping process vs system space addresses

Page directory nin üst yarısı her proses için aynı girişleri kapsar. (bazı küçük değişiklikler olabilir), Bu girişler system-wide page table lara işaret eder.

Mapping Process vs. System-Space Addresses

System-wide page tables

(up to 512 persystem)

Page Directories

(Her proses için bir tane)

Her prosese ait sayfa

tablosu kümeleri

(up to 512

per process)


Page directory ve page table giri leri
Page Directory girişleri kapsar.ve Page Table Girişleri

virtual address of PD Entry or PT Entry

contents of PDE or PTE

interpreted contents

Page Frame Number (== physical page number) of Page Table

Page Frame Number (== physical page number) for valid page

D = Dirty (modified since made valid)

A = Accessed (recently)

KW = Kernel mode writable

V = Valid bit

Where pager can find contents of an invalid page

KDx86> !pte fea80000

FEA80000 - PDE at C0300FE8 PTE at C03FAA00

contains 0040C063 contains 0002D063

pfn 0040C DA--KWV pfn 0002D DA--KWV

KDx86> !pte 50000

00050000 - PDE at C0300000 PTE at C0000140

contains 002AF067 contains 0011A080

pfn 002AF DA--UWV not valid

PageFile 0

Offset 11a

Protect: 4

1

1

2

2

3

3

4

5

6

7

8

9

4

5

6

A

7

8

9

A

Rasgele seçilmiş bir sanal adres için ekran görüntüsü


Translating a virtual addres s
Translating a virtual addres girişleri kapsar.s

  • Bellek yönetimi, Page directory’ yi current proses için tarar. (cr3 register on Intel)

  • Page directory index’i istenen page table’a işaret eder.

  • Page table index’i istenen sanal sayfaya işaret eder.

  • Eğer sayfa valid ise, PTE(page table entry) sanal sayfanın fiziksel adresini içerir.(PFN – page frame number) of the virtual page

    • Memory yönetimindeki ”fault handler” invalid sayfaları yakalar ve onları valid yapmaya çalışır.

  • PTE valid sayfaya işaret ettiği zaman, byte index’i istenen verinin adresini göstermek üzere kullanılır.


Page directories page tables
Page directories & Page tables girişleri kapsar.

  • Her proses, tek bir page directory ye sahiptir. (phys. addr. in KPROCESS block, at 0xC0300000, in cr3 (x86))

    • cr3 her context switches’de yeniden yüklenir.

    • Page directory page directory girişlerinden oluşmaktadır. (PDEs) Bu girişler, bu proses için sayfa tablolarının durum/yer bilgisini tanımlar.

      • Sayfa tabloları istek üzerine yaratılır.

    • x86: 1024 page tables describe 4GB

  • Her proses özel page table kümelerine sahiptir.

  • Sistem bir tane page tables kümesine sahiptir.

    • System PTEs sınırlı kaynaktır: boot zamanında işlem görür.


System and process private page tables
System and girişleri kapsar.process-private page tables

PTE 0

PDE 0

private

PDE 0

PTE 0

  • Proses yaratılmasında, system alanı page directory’si, girişlerivar olan sistem page table larına işaret ederler.

  • Proseslerin tümü aynı sistem alanı görünümüne sahip değildir. (Yeni sayfa tablolarının yerleşimlerinden sonra)

PDE 511

PDE 511

PDE 512

PDE 512

Systempage tables

PDE n

Sys PTE 0

PDE n

Process 2page tables

Process 1page tables

Process 1page directory

Process 2

page directory

Sys PTE n


Page table entries
Page Table Entries girişleri kapsar.

  • Page tables Page Table Entries den oluşan bir dizidir.(PTEs)

  • Valid PTE’ leriki alana sahiptir:

    • Page Frame Number (PFN)

    • Sayfanın Durumunu ve korumasını bildiren bayraklar

Res (writable on MP Systems)

Res

Res

Global

Res (large page if PDE)

Dirty

Accessed

Cache disabled

Write through

Owner

Write (writable on MP Systems)

12

31

0

valid

Page frame number

U

P

Cw

Gi

L

D

A

Cd

Wt

O

W

V


Pte status and protection bits intel x86 only
PTE Status and Protection Bits girişleri kapsar.(Intel x86 only)


Tlb zet
TLB girişleri kapsar. (Özet)

  • Adres dönüşümü iki şeye ihtiyaç duyar:

    • Page directory deki doğru tabloyu bulmak

    • Page table daki doğru girişi bulmak

  • CPU lar adres dönüşümünü cacheler.

    • Erişilmiş bellek dizisi: translation look-aside buffer (TLB)

    • TLB: daha güncel kullanılmış sayfaların sanal-fiziksel adres dönüşümü için

Virtual page #: 17

Virtual page #: 5

Page frame 290

Virtual page #: 64

Invalid

Virtual page #: 17

Page frame 1004

Eş zamanlı

okuma ve karşılaştırma

Virtual page #: 7

Invalid

Virtual page #: 65

Page frame 801


Page fault handling win
Page Fault Handling girişleri kapsar. (Win)

  • invalid sayfaya referans page fault olarak adlandırılır.

  • “Kernel trap handler” dispatches:

    • Memory manager fault handler (MmAccessFault) diye adlandırılır.

    • Hata ya sebep olan threadin içeriği içinde çalışır.

    • Hatayı çözmeye çalışır yada exception üretir.


Invalid ptes and their structure win
Invalid PTEs and their structure girişleri kapsar. (Win)

  • Page file: desired page resides in paging file

Transition

Prototype

Valid

31

12

11

10

5

4

1

0

9

PageFile No

Page file offset

Protection

0


Invalid ptes and their structure contd
Invalid PTEs and their structure (contd.) girişleri kapsar.

  • Transition: sayfa bellekte standby, modified, yada modified-no-write listede mi?

    • Sayfa listeden çıkarılır working set e eklenir

Transition

Prototype

Protection

Cache disable

Write through

Owner

Write

Valid

31

12

11

10

9

5

4

3

2

1

0

Page Frame Number

1

1

Protection

0

  • PTE 0 ise ya da page table henüz kurulmamış ise

    • Sanal adreslerin reserved olup olmadığını kontrol için sanal adres alanlarını test et (VADs)

    • Yeni commit edilmiş alan için page table ları oluştur.


Working set replacement
Working Set Replacement girişleri kapsar.

  • Working set maximuma eriştiğinde (or working set trim occurs) bazı sayfalar yerlerini yeni sayfalara bırakmalılar.

  • Local page replacement policy uygulanır

  • Page replacement algoritması LRU dur(pages are aged)

  • New VirtualAlloc flag in XP/Server 2003: MEM_WRITE_WATCH

PerfMon

Process “WorkingSet”

to standby

or modified

page list


Working set system services
Working Set System Services girişleri kapsar.

  • System call below can adjust min/max

    • Limits are “soft” (many processes larger than max)

    • Memory Manager decides when to grow/shink working sets

  • New system call in Server 2003 (SetProcessWorkingSetSizeEx) allows setting hard min/max

Windows API:

SetProcessWorkingSetSize(

HANDLE hProcess,

DWORD dwMinimumWorkingSetSize,

DWORD dwMaximumWorkingSetSize)


Locking pages
Locking Pages girişleri kapsar.

  • Sayfalar working set içinde kilitlenebilir

    • Bu şekilde prosesteki herhangi bir tred işletilirken sayfaların kesinlikle fiziksel bellekte yer almaları sağlanır.(resident)

      Windows API:

      status = VirtualLock(baseAddress, size);

      status = VirtualUnlock(baseAddress, size);

  • Kilitlenebilir sayfalar Max working set boyutunun bir bölümüdür.

    • Changed by SetProcessWorkingSetSize

  • Sayfalar fiziksel bellekte sadece kernel mod kod ile kilitlenebilir.

    • Bu durumda bu sayfalar “outswapping” durumundan muaf olurlarMmProbeAndLockPages


System working set
System Working Set girişleri kapsar.

  • Windows un pageable system-space code ve data sı “system working set” de yer alır.

  • 4 bileşenden oluşur:

    • Paged pool

    • Pageable code and data in the exec

    • Pageable code and data in kernel-mode drivers, Win32K.Sys, graphics drivers, etc.

    • Global file system data cache


Example session working set
Example: girişleri kapsar.Session Working Set

  • New memory management object to support Terminal Services in Windows

  • Session = an interactive user

  • Session working set = the memory used by a session

    • Instance of WinLogon and Win32 subsystem process

    • WIN32K.SYS remapped for each unique session

      • Win32 subsystem objects

      • Win32 subsystem paged pool

    • Process working sets page within session working set

  • Revised system space layout

x86

80000000

System code (NTOSKRNL, HAL, boot

drivers); initial nonpaged pool

A0000000

Win32k.sys *8MB)

A0800000

Session Working Set Lists

A0C00000

Mapped Views for Session

A2000000

Paged Pool for Session


Managing physical memory
Managing Physical Memory girişleri kapsar.

  • Sistem unassigned fiziksel sayfaları şu listelerden birinde saklar

    • Free page list

    • Modified page list (güncellenmiş)

    • Standby page list (güncellenmemiş)

    • Zero page list (0 sayfalama isteği)

    • Bad page list – sistem startup ta bellek testini geçemeyen sayfalar

  • Bu listeler PFN database deki girişler ile düzenlenir.

    • FIFO listesi gibi düzenlenir.


Paging dynamics
Paging Dynamics girişleri kapsar.

  • Working set e yerleştirilen yeni sayfalar free ya da zero page listin başından seçilir.

  • Working setten sayfa değişim algoritmasına göre çıkarılan sayfalar ise en sonuna gider:

    • The modified page list (eğer working sette oldukları süre içinde modify edilmişlerse)

    • The standby page list (eğer modified edilmemişlerse)

      • Karar page table entry deki “D” (dirty = modified) bitine bakarak verilir

      • Sayfalar diske yazıldıktan sonra dirty listten clean liste alınırlar.


Standby and modified page lists
Standby and Modified Page Lists girişleri kapsar.

  • Modified pages modified (dirty) liste yazılır.

    • Bu sayfaların diske yazılmadan bellekten alınmalarını engeller

  • Unmodified pages standby (clean) liste yazılır.

  • Bu listeler, “yeniden ihtiyaç duyulabilecek olan sayfalar” a ait bir system-wide cache kurarlar.

    • standby and modified page listedeki sayfalar proseste yeniden page fault hatasına sebep olabilirler.

    • Bunlar page faultlar olarak sayılırlar,page reads olarak değil


Free and zero page lists
Free and Zero Page Lists girişleri kapsar.

  • Free Page List

    • Page reads için kullanılır

    • Process exit olduğunda modified pages ler listeye yazılır

    • Yüklü işletim sistemlerinde, bu liste genelde boştur

  • Zero Page List

    • Zero thread windowsun en düşük öncelikli tredidir. (priority 0) Görevi dirty page leri sıfırlamaktır, windows sıfırlanmış sayfalara ihtiyaç duyar ve bunları elinde bulundurur. Güvenlik açısından allocate edilmiş bir belleğin dirty page barındırmamasını sağlar.

    • Free list 8 yada daha fazla girişe sahip olduğunda bu tred signal edilir.

  • MMU önce free liste gider, bu liste boş ise zero liste gider, bu buş ise stand by liste gider.


Paging dynamics1

modified girişleri kapsar.

page

writer

“soft”

page

faults

Paging Dynamics

demand zero page faults

page read from disk or kernel allocations

Standby

PageList

Free

PageList

Zero

Page

List

Bad

Page

List

Process

Working

Sets

zero

page

thread

Modified

PageList

working set replacement

Private pages at process exit


Working sets in memory

Proses page fault a maruz kalırsa, sayfalar girişleri kapsar.free, modified, yada standby listesinden çıkarılır ve prosesin working setinin bir parçası yapılır.

Paylaşılmış bir sayfa birden çok prosesin working setinde resident olabilir.

Working Sets in Memory

Process 3

Process 2

00000000

Process 1

M

M

3

F

F

2

F

2

S

M

S

S

F

1

Pages in Physical Memory

F

1

F

3

F

F

M

F

2

F

3

F

F

1

M

S

7FFFFFFF

80000000

FFFFFFFF


Page frame number database
Page Frame Number-Database girişleri kapsar.

  • Her fiziksel sayfa için bir giriş (24 bytes)

    • Her sayfanın fiziksel bellekteki durumunu (state) tanımlar

  • active/valid sayfalar için girişler şunları kapsar:

    • Original PTE value

    • Original PTE virtual address

    • Working set indexi

  • Diğer sayfalar için girişler şunlarda link edilmiştir:

    • Free, standby, modified, zeroed, bad lists

  • Share count (active/valid pages):

  • Reference count:

    • Reference count 1->0: page free, standby yada modified listesine eklendi


PFD girişleri kapsar.


Before: girişleri kapsar.

Notepad

Word

Explorer

System

Available

During:

Avail.

RAM Optimizer

Notepad

Word

Explorer

System

After:

Available

See Mark’s article on this topic athttp://www.winnetmag.com/Windows/Article/ArticleID/41095/41095.html


Increased limits in 64 bit windows
Increased Limits in 64-bit Windows girişleri kapsar.

Itanium x64 x86

User Address Space 7152 GB 8192 GB 2-3 GB

Page file limit 16 TB 16 TB 4095 MB

PAE: 16 TB

Max page file space 256 TB 256 TB ~64 GB

System PTE Space 128 GB 128 GB 1.2 GB

System Cache 1 TB 1 TB 960 MB

Paged pool 128 GB 128 GB 470-650 MB

Non-paged pool 128 GB 128 GB 256 MB


ad