bÖlÜm 10

88
Yrd. Doç. Dr. Sevinç İlha n Omurca OS Bolum 10 1 BÖLÜM 10 SANAL BELLEK

Upload: maja

Post on 02-Feb-2016

60 views

Category:

Documents


0 download

DESCRIPTION

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ş. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: BÖLÜM 10

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

1

BÖLÜM 10

SANAL BELLEK

sevinc
Page 2: BÖLÜM 10

2

İç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

Page 3: BÖLÜM 10

3

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.

Page 4: BÖLÜM 10

4

Sanal Bellek Fiziksel Bellekten daha büyük olabilir

Page 5: BÖLÜM 10

5

... 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.

Page 6: BÖLÜM 10

6

Ö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.

Page 7: BÖLÜM 10

7

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.

Page 8: BÖLÜM 10

8

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.

Page 9: BÖLÜM 10

9

Valid-Invalid Bit

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

Page 10: BÖLÜM 10

10

... 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 11: BÖLÜM 10

11

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

Page 12: BÖLÜM 10

12

... Ö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.

Page 13: BÖLÜM 10

13

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

Page 14: BÖLÜM 10

14

... 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

Page 15: BÖLÜM 10

15

... 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ı

Page 16: BÖLÜM 10

16

...

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

Page 17: BÖLÜM 10

17

… 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.

Page 18: BÖLÜM 10

18

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 ?

Page 19: BÖLÜM 10

19

Sayfa Değişim İhtiyacı

Page 20: BÖLÜM 10

20

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 21: BÖLÜM 10

21

Sayfa Değişimi

Page 22: BÖLÜM 10

22

... 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.

Page 23: BÖLÜM 10

23

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.

Page 24: BÖLÜM 10

24

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

Page 25: BÖLÜM 10

25

Ö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.

Page 26: BÖLÜM 10

26

Page Fault-Frame Sayısı

Page 27: BÖLÜM 10

27

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

Page 28: BÖLÜM 10

28

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.

Page 29: BÖLÜM 10

29

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.

Page 30: BÖLÜM 10

30

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.

Page 31: BÖLÜM 10

31

LRU Proseslerin locality modeline dayanır. Optimum yer değişim algoritmasına iyi bir yaklaşık çözüm

üretebilir.

Page 32: BÖLÜM 10

32

Page Fault Frekansı

Page 33: BÖLÜM 10

33

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)

Page 34: BÖLÜM 10

34

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.

Page 35: BÖLÜM 10

35

Clock Algorithm: Not recently used

Page 36: BÖLÜM 10

36

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.

Page 37: BÖLÜM 10

37

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ı. 0sayacı 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)

Page 38: BÖLÜM 10

38

Second Chance Alg.

Page 39: BÖLÜM 10

39

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.

Page 40: BÖLÜM 10

40

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.

Page 41: BÖLÜM 10

41

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.

Page 42: BÖLÜM 10

42

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

Page 43: BÖLÜM 10

43

Page Fault Frekansı

Page 44: BÖLÜM 10

44

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.

Page 45: BÖLÜM 10

45

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

Page 46: BÖLÜM 10

46

... 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.

Page 47: BÖLÜM 10

47

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.

Page 48: BÖLÜM 10

48

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.

Page 49: BÖLÜM 10

49

... 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.

Page 50: BÖLÜM 10

50

...

Page 51: BÖLÜM 10

51

… 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.

Page 52: BÖLÜM 10

52

Working Set Listesi

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”

newer pages older pages

Page 53: BÖLÜM 10

53

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

Page 54: BÖLÜM 10

54

Sanal AdresFiziksel Adres

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

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

Virtualpages

Physical memory

Page tableentries

10 10 12

2231 21 11 012

Page directoryindex

Page tableindex

Byte index

x86:

user

system

user

system

Page 55: BÖLÜM 10

55

Shared and Private Pages

00000000

7FFFFFFF

C0000000

C1000000

80000000

FFFFFFFF

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

Process A Process B

PhysicalMemory

Page 56: BÖLÜM 10

56

2 GB2 GBUserUser

process process spacespace

2 GB2 GBUserUser

process process spacespace

2 GB2 GBSystemSystemSpaceSpace

2 GB2 GBSystemSystemSpaceSpace

32-bit x86 Address Space

3 GB3 GBUserUser

process process spacespace

3 GB3 GBUserUser

process process spacespace

1 GB1 GBSystem SpaceSystem Space

1 GB1 GBSystem SpaceSystem Space

Default 3 GB user space

32-bits = 4 GB

Page 57: BÖLÜM 10

57

8192 GB8192 GB(8 TB)(8 TB)UserUser

process process spacespace

8192 GB8192 GB(8 TB)(8 TB)UserUser

process process spacespace

6657 GB6657 GBSystemSystemSpaceSpace

6657 GB6657 GBSystemSystemSpaceSpace

64-bit Address Spaces

7152 GB7152 GB(7 TB)(7 TB)UserUser

process process spacespace

7152 GB7152 GB(7 TB)(7 TB)UserUser

process process spacespace

6144 GB6144 GBSystemSystemSpaceSpace

6144 GB6144 GBSystemSystemSpaceSpace

x64 Itanium

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

Page 58: BÖLÜM 10

58

CodeCode: EXE/DLLs: EXE/DLLsDataData: EXE/DLL : EXE/DLL

static storage, per-static storage, per-thread user mode thread user mode

stacks, process stacks, process heaps, etc.heaps, etc.

CodeCode: EXE/DLLs: EXE/DLLsDataData: EXE/DLL : EXE/DLL

static storage, per-static storage, per-thread user mode thread user mode

stacks, process stacks, process heaps, etc.heaps, etc.

00000000

7FFFFFFF

Code:Code: NTOSKRNL, HAL, NTOSKRNL, HAL, driversdriversData:Data: kernel stacks, kernel stacks,

File system cacheFile system cacheNon-paged pool,Non-paged pool,Paged poolPaged pool

Code:Code: NTOSKRNL, HAL, NTOSKRNL, HAL, driversdriversData:Data: kernel stacks, kernel stacks,

File system cacheFile system cacheNon-paged pool,Non-paged pool,Paged poolPaged pool

FFFFFFFF

80000000

Process page tables,Process page tables,hyperspacehyperspace

C0000000

32-bit x86 Virtual Address Space

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.

Unique per process,

accessible in user or kernel

mode

System wide,accessible

only in kernel mode

Per process, accessible only

in kernel mode

Page 59: BÖLÜM 10

59

User mode space User mode space per processper process

User mode space User mode space per processper process

00000000 00000000

E0000000 00000000

FFFFFF00 00000000FFFFFFFF FFFFFFFF System space page System space page

tablestables

System space page System space page tablestables

64-bit ia64 (Itanium) Virtual Address Space

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

6FC 00000000

Kernel modeKernel modeper processper process

Kernel modeKernel modeper processper process

1FFFFF00 00000000

Process Process page tablespage tables

Process Process page tablespage tables

20000000 00000000

Session spaceSession spaceSession spaceSession space

Session spaceSession spacepage tablespage tables

Session spaceSession spacepage tablespage tables

System spaceSystem spaceSystem spaceSystem space

3FFFFF00 00000000

E0000600 00000000

Page 60: BÖLÜM 10

60

x86 Virtual Address Translation

Page tableselector

Page tableselector

Page tableentry selector

Page tableentry selector Byte within pageByte within page

index

Page Directory(one per process, 1024 entries)

index

Page Tables(up to 512 per process,

plus up to 512 system-wide)

physicalpage number(“page framenumber” or

“PFN”)

Physical Pages(up to 2^20)

1

CR3CR3

physicaladdress

2

3

4

5

6

7

8

9

10

11

12

PFN 0

31 0

Page 61: BÖLÜM 10

61

x64 Virtual Address Translation

Page tableselector

Page tableselector

Page tableentry selector

Page tableentry selector

Page MapLevel 4

PageTables

Physical Pages(up to 2^40)

1

2

3

4

5

6

7

8

9

10

11

12

PFN 0

Byte within pageByte within pagePage dirpointer

Page dirpointer

Page mapLevel 4

Page mapLevel 4

PageDirectories

PageDirectoryPointers

CR3CR3

48 0

Page 62: BÖLÜM 10

62

Byte within pageByte within pageVirtual page numberVirtual page number

Virtual Address Translation

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

Physical page numberPhysical page number Byte within pageByte within page

PageDirectory

PageDirectory

PageTables

PageTables

virtual address

physical address

TranslationLookaside

Buffer

TranslationLookaside

Buffer

a cache of recently-used page table entries

Address translation (hardware)Address translation (hardware)

if pagenot valid...

page fault(exception,handled bysoftware)

Page 63: BÖLÜM 10

63

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.Page Directories

(Her proses için bir tane)Her prosese ait sayfa

tablosu kümeleri (up to 512

per process)

System-wide page tables(up to 512 persystem)

Page 64: BÖLÜM 10

64

Page Directory ve Page Table Girişleri

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

KDx86> !pte fea80000FEA80000 - PDE at C0300FE8 PTE at C03FAA00 contains 0040C063 contains 0002D063 pfn 0040C DA--KWV pfn 0002D DA--KWV

KDx86> !pte 5000000050000 - PDE at C0300000 PTE at C0000140 contains 002AF067 contains 0011A080 pfn 002AF DA--UWV not valid PageFile 0 Offset 11a Protect: 4

1

32

98764 5

A

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

1

32

4

5

6

78

9

A

Page 65: BÖLÜM 10

65

Translating a virtual address

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

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

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

4. 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.5. PTE valid sayfaya işaret ettiği zaman, byte index’i

istenen verinin adresini göstermek üzere kullanılır.

Page 66: BÖLÜM 10

66

Page directories & Page tables 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.

Page 67: BÖLÜM 10

67

System and process-private page tables

Proses yaratılmasında, system alanı page directory’si, girişleri var 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)

PTE 0 PDE 0

PDE 511

PDE n Sys PTE 0

Sys PTE n

PTE 0PDE 0

PDE 511

PDE nProcess 1page tables

Systempage tables

Process 1page directory

Process 2page directory

private

PDE 512PDE 512

Process 2page tables

Page 68: BÖLÜM 10

68

Page Table Entries Page tables Page Table Entries den oluşan bir dizidir.

(PTEs) Valid PTE’ ler iki alana sahiptir:

Page Frame Number (PFN) Sayfanın Durumunu ve korumasını bildiren bayraklar

Page frame number VU P Cw Gi L D A Cd Wt O W

Res (writable on MP Systems)ResResGlobalRes (large page if PDE)DirtyAccessedCache disabledWrite throughOwnerWrite (writable on MP Systems)

valid31 12 0

Page 69: BÖLÜM 10

69

PTE Status and Protection Bits (Intel x86 only)

Name of Bit Meaning on x86

Accessed Page has been read

Cache disabled

Disables caching for that page

Dirty Page has been written to

Global Translation applies to all processes

Large page Indicates that PDE maps a 4MB page (used to map kernel)

Owner Indicates whether user-mode code can access the page of whether the page is limited to kernel mode access

Valid Indicates whether translation maps to page in phys. Mem.

Write through Disables caching of writes; immediate flush to disk

Write Uniproc: Indicates whether page is read/write or read-only;Multiproc: ind. whether page is writeable/write bit in res. bit

Page 70: BÖLÜM 10

70

TLB (Ö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 #: 5Virtual page #: 17

Virtual page #: 64

Virtual page #: 17

Virtual page #: 7

Virtual page #: 65

Page frame 290

Invalid

Page frame 1004

Invalid

Page frame 801

Eş zamanlı okuma ve karşılaştırma

Page 71: BÖLÜM 10

71

Page Fault Handling (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.

Page 72: BÖLÜM 10

72

Invalid PTEs and their structure (Win) Page file: desired page resides in paging file

Page file offset ProtectionPageFile No 0

TransitionPrototypeValid31 12 11 10 9 5 4 1 0

Page 73: BÖLÜM 10

73

Invalid PTEs and their structure (contd.)

Transition: sayfa bellekte standby, modified, yada modified-no-write listede mi? Sayfa listeden çıkarılır working set e eklenir

Page Frame Number Protection1

TransitionPrototypeProtectionCache disableWrite throughOwnerWriteValid

31 12 11 10 9 5 4 1 0

1 0

23

• 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.

Page 74: BÖLÜM 10

74

Working Set Replacement

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

PerfMonProcess “WorkingSet”

to standby or modified

page list

Page 75: BÖLÜM 10

75

Working Set System Services

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)

Page 76: BÖLÜM 10

76

Locking Pages

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

Page 77: BÖLÜM 10

77

System Working Set

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

Page 78: BÖLÜM 10

78

80000000System code (NTOSKRNL, HAL, bootdrivers); initial nonpaged pool

A0000000 Win32k.sys *8MB)

A0800000 Session Working Set Lists

x86

Mapped Views for Session

Paged Pool for Session

A0C00000

A2000000

Example: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

Page 79: BÖLÜM 10

79

Managing Physical Memory 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.

Page 80: BÖLÜM 10

80

Paging Dynamics 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.

Page 81: BÖLÜM 10

81

Standby and Modified Page Lists

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

Page 82: BÖLÜM 10

82

Free and Zero Page Lists 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.

Page 83: BÖLÜM 10

83

Paging Dynamics

StandbyStandbyPagePageListList

ZeroZeroPagePageListList

FreeFreePagePageListList

ProcessProcessWorkingWorking

SetsSets

page read from page read from disk or kernel disk or kernel allocationsallocations

demand zero demand zero page faultspage faults

working set working set replacementreplacement

ModifiedModifiedPagePageListList

modifiedmodifiedpagepagewriterwriter

zerozeropagepage

threadthread

““soft”soft”pagepagefaultsfaults

BadBadPagePageListList

Private pages Private pages at process exitat process exit

Page 84: BÖLÜM 10

84

Process 3Process 3

Process 2Process 2

Process 1Process 1

Working Sets in Memory

00000000

7FFFFFFF

80000000

FFFFFFFF

Pages in Physical Memory

F

F

FF

M

M

M

M

M

S SS

S

Proses page fault a maruz kalırsa, sayfalar 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.

F

FF

F

F

FF

F

3

3

3

1

2

12

2

1

Page 85: BÖLÜM 10

85

Page Frame Number-Database

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

Page 86: BÖLÜM 10

86

PFDStatus Description

Active/valid

Page is part of working set (sys/proc), valid PTE points to it

Transition Page not owned by a working set, not on any paging listI/O is in progress on this page

Standby Page belonged to a working set but was removed; not modified

Modified Removed from working set, modified, not yet written to disk

Modified no write

Modified page, will not be touched by modified page write, used by NTFS for pages containing log entries (explicit flushing)

Free Page is free but has dirty data in it – cannot be given to user process – C2 security requirement

Zeroed Page is free and has been initialized by zero page thread

Bad Page has generated parity or other hardware errors

Page 87: BÖLÜM 10

87

Notepad Word Explorer System Available

Avail. RAM Optimizer

SystemExplorerWordNotepad

Available

Before:

During:

After:

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

Page 88: BÖLÜM 10

88

Increased Limits in 64-bit Windows

Itanium x64 x86

User Address Space 7152 GB 8192 GB 2-3 GBPage file limit 16 TB 16 TB 4095 MB

PAE: 16 TBMax page file space 256 TB 256 TB ~64 GBSystem PTE Space 128 GB 128 GB

1.2 GBSystem Cache 1 TB 1 TB 960 MBPaged pool 128 GB 128 GB

470-650 MBNon-paged pool 128 GB 128 GB

256 MB