Networks and Operang Systems Chapter 16: Demand Paging · Networks and Operang Systems Chapter 16:...

Post on 22-Mar-2020

4 views 0 download

Transcript of Networks and Operang Systems Chapter 16: Demand Paging · Networks and Operang Systems Chapter 16:...

NetworksandOpera/ngSystemsChapter16:DemandPaging

(252‐0062‐00)DonaldKossmann&TorstenHoefler

Frühjahrssemester2013

©SystemsGroup|DepartmentofComputerScience|ETHZürich

Last/me

•  Base+Limitregisters•  Segmenta/on

•  Paging•  Pageprotec/on•  Pagesharing•  Pagetablestructures•  TLBshootdown

Today

•  Usesforvirtualmemory•  Copy‐on‐write•  Demandpaging– Pagefaulthandling– Pagereplacementalgorithms– Framealloca/onpolicies

– Thrashingandworkingset

Recap:VirtualMemory

•  Userlogicalmemory≠physicalmemory.– OnlypartoftheprogrammustbeinRAMforexecu/on⇒Logicaladdressspacecanbelargerthanphysicaladdressspace

– Addressspacescanbesharedbyseveralprocesses– Moreefficientprocesscrea/on

•  Virtualizememoryusingso^ware+hardware

Themanyusesofaddresstransla/on

•  Processisola/on•  IPC•  Sharedcodesegments•  Programini/aliza/on

•  Efficientdynamicmemoryalloca/on

•  Cachemanagement

•  Programdebugging•  EfficientI/O

•  Memorymappedfiles•  Virtualmemory

•  Checkpointandrestart•  Persistentdatastructures•  Processmigra/on•  Informa/onflowcontrol•  Distributedshared

memoryandmanymore…

Copy‐on‐write(COW)

Recallfork()

•  Canbeexpensivetocreateacompletecopyoftheprocess’addressspace– Especiallyjusttodoexec()!

•  vfork():sharesaddressspace,doesn’tcopy– Fast– Dangerous–twowriterstosameheap

•  Bejer:onlycopywhenyouknowsomethingisgoingtogetwrijen

Copy‐on‐Write

•  COWallowsbothparentandchildprocessestoini/allysharethesamepagesinmemory

Ifeitherprocessmodifiesasharedpage,onlythenisthepagecopied

•  COWallowsmoreefficientprocesscrea/onasonlymodifiedpagesarecopied

•  Freepagesareallocatedfromapoolofzeroed‐outpages

Example:processessharinganareaofmemory

pageA

pageB

pageC

Process1 physicalmemory

Process2

Notnecessarilythesamevirtual

addresses(butwouldbea^erfork())

Howdoesitwork?

•  Ini/allymarkallpagesasread‐only•  Eitherprocesswrites⇒pagefault– Faulthandlerallocatesnewframe– Makescopyofpageinnewframe– Mapseachcopyintoresp.processeswriteable

•  Onlymodifiedpagesarecopied– Lessmemoryusage,moresharing– Costispagefaultforeachmutatedpage

A^erprocess1writestopageC

pageA

pageB

pageC

Process1 physicalmemory

Process2

copyofpageC

S/llread‐only

Nowwriteable

Generalprinciple

•  MarkaVPNasinvalidorreadonly⇒trapindicatesajempttoreadorwrite

•  Onapagefault,changemappingssomehow•  Restartinstruc/on,asifnothinghadhappened

•  General:allowsemula-onofmemoryaswellasmul-plexing.–  E.g.on‐demandzero‐fillingofpages– And…

Pagingconcepts

page0

page1

page2

page3

pagev

virtualaddressspace

pagetablephysicaladdressspace

disk

Pagingconcepts

page0

page1

page2

page3

pagev

virtualaddressspace

pagetablephysicaladdressspace

disk

memory‐residentpage

Pagingconcepts

page0

page1

page2

page3

pagev

virtualaddressspace

pagetablephysicaladdressspace

disk

Keeptrackofwherepagesareondisk

Pagingconcepts

page0

page1

page2

page3

pagev

virtualaddressspace

pagetablephysicaladdressspace

disk

Keeptrackofwherepagesareondisk

Write“dirty”pagesouttodisk

Pagingconcepts

page0

page1

page2

page3

pagev

virtualaddressspace

pagetablephysicaladdressspace

disk

Readinpagesfromdiskondemand

DemandPaging

•  Bringapageintomemoryonlywhenitisneeded– LessI/Oneeded– Lessmemoryneeded– Fasterresponse– Moreusers

•  TurnsRAMintoacacheforprocessesondisk!

DemandPaging

•  Pageneeded⇒reference(loadorstore)toit–  invalidreference⇒abort–  not‐in‐memory⇒bringtomemory

•  Lazyswapper–neverswapsapageintomemoryunlesspagewillbeneeded–  Swapperthatdealswithpagesisapager–  Candothiswithsegments,butmorecomplex

•  Strictdemandpaging:onlypageinwhenreferenced

PageFault•  Ifthereisareferencetoapage,firstreferenceto

thatpagewilltraptoopera/ngsystem:pagefault1. Opera/ngsystemlooksatanothertabletodecide:

–  Invalidreference⇒abort–  Justnotinmemory

2. Getemptyframe3.  Swappageintoframe4.  Resettables5.  Setvalida/onbit=v6.  Restarttheinstruc/onthatcausedthepagefault

Recall:handlingapagefault

1)ProcessorsendsvirtualaddresstoMMU

2‐3)MMUfetchesPTEfrompagetableinmemory

4)Validbitiszero,soMMUtriggerspagefaultexcep/on

5)Handlerfindsaframetouseformissingpage

6)HandlerpagesinnewpageandupdatesPTEinmemory

7)Handlerreturnstooriginalprocess,restar/ngfaul/nginstruc/on

MMU Cache/Memory

CPUVA

CPUChip PTEA

PTE

1

2

3

4

Disk

Pagefaulthandler

Newpage

Excep/on

65

7

Performanceofdemandpaging

•  PageFaultRate0≤p≤1.0–  ifp=0nopagefaults–  ifp=1,everyreferenceisafault

•  Effec/veAccessTime(EAT) EAT=(1–p)xmemoryaccess +p(pagefaultoverhead +swappageout +swappagein +restartoverhead

)

Demandpagingexample

•  Memoryaccess/me=200nanoseconds

•  Averagepage‐faultservice/me=8milliseconds

•  EAT=(1–p)x200+p(8milliseconds)=(1–p)x200+px8,000,000

=200+px7,999,800

•  Ifoneaccessoutof1,000causesapagefault,thenEAT=8.2microseconds.Thisisaslowdownbyafactorof40!!

PageReplacement

Whathappensifthereisnofreeframe?

•  Pagereplacement–find“lijleused”residentpagetodiscardorwritetodisk– “vic/mpage”– algorithm– performance–wantanalgorithmwhichwillresultinminimumnumberofpagefaults

•  Samepagemaybebroughtintomemoryseveral/mes

Pagereplacement

•  Trytopickavic/mpagewhichwon’tbereferencedinthefuture– Variousheuris/cs–butul/matelyit’saguess

•  Use“modify”bitonPTE– Don’twrite“clean”(unmodified)pagetodisk– Trytopick“clean”pagesover“dirty”ones(saveadiskwrite)

Pagereplacement

vic/m

Physicalmemory

0f

iv

Pagetable

framevalid

f

Pagereplacement

vic/m

Physicalmemory

0f

iv

Pagetable

framevalid

f

1.Swapvic/mpagetodisk

Pagereplacement

vic/m

Physicalmemory

00

ii

Pagetable

framevalid

f

1.Swapvic/mpagetodisk

2.Changevic/mPTEtoinvalid

Pagereplacement

vic/m

Physicalmemory

00

ii

Pagetable

framevalid

f

3.Loaddesiredpageinfromdisk

Pagereplacement

vic/m

Physicalmemory

f0

vi

Pagetable

framevalid

f

3.Loaddesiredpageinfromdisk

4.ChangefaultPTEtovalid

Pagereplacementalgorithms•  Wantlowestpage‐faultrate

•  Evaluatealgorithmbyrunningitonapar/cularstringofmemoryreferences(referencestring)andcompu/ngthenumberofpagefaultsonthatstring

•  E.g.7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

Pagefaultsvs.numberofframes

Whatwemightexpect…

Numberofframes

Num

berofpagefaults

Plentyofmemory:moredoesn’thelp

much

Verylijlememory:thrashing(see

later)

FIFO(First‐In‐First‐Out)pagereplacement

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

7 7 7 2 2 2 4 4 4 0 0 0 7 7 70 0 0 3 3 3 2 2 2 1 1 1 0 0

1 1 1 0 0 0 3 3 3 2 2 2 1

referencestring:

pageframes:

Here,15pagefaults.

5

2

3

4

5

1

3

4

5

1

2

4

5

1

2

3

4

1

2

3

4

5

2

3

Morememoryisbejer?Referencestring:1,2,3,4,1,2,5,1,2,3,4,5•  3frames(3pagescanbeinmemory):

•  4frames:

Belady’sAnomaly:moreframes⇒morepagefaults

9pagefaults

10pagefaults!

5

3

4

5

3

2

5

1

2

4

1

2

4

1

3

4

2

3

1

2

3

1

2

1

1 1

2

1

2

3

1

2

3

4

FIFOshowingBelady’sAnomalyNum

berofpagefaults

Numberofframes

1

2

3

4

1

2

3

5

Op/malalgorithm

Replacepagethatwillnotbeusedforlongestperiodof/me

4framesexample: 123412512345

Howdoyouknowthis?–youcan’t!Usedformeasuringhowwellyouralgorithmperforms

⇒6pagefaults

4

2

3

5

Op/malpagereplacement

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

7 7 7 2 2 2 2 2 70 0 0 0 4 0 0 0

1 1 3 3 3 1 1

referencestring:

pageframes:

Here,9pagefaults.

LeastRecentlyUsed(LRU)algorithm

•  Referencestring:123412512345

•  Counterimplementa/on–  Everypageentryhasacounter;every/mepageisreferenced

throughthisentry,copytheclockintothecounter–  Whenapageneedstobechanged,lookatthecountersto

determinewhicharetochange

5

2

4

3

1

2

3

4

1

2

5

4

1

2

5

3

1

2

4

3

LRUpagereplacement

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1

7 7 7 2 2 4 4 4 0 1 1 10 0 0 0 0 0 3 3 3 0 0

1 1 3 3 2 2 2 2 2 7

referencestring:

pageframes:

Here,12pagefaults.

LRUalgorithm

•  Stackimplementa/on–keepastackofpagenumbersinadoublelinkform:–  Pagereferenced:

•  moveittothetop•  requires6pointerstobechanged

– Nosearchforreplacement

•  Generalterm:stackalgorithms– Havepropertythataddingframesalwaysreducespagefaults(noBelady’sAnomaly)

2

1

0

7

4

7

2

1

0

4

Useastacktorecordmostrecentpagereferences

4 7 0 7 1 0 1 2 1 2 7 1 2

Referencestring

LRUapproxima/onalgorithms

•  Referencebit–  Witheachpageassociateabit,ini/ally=0–  Whenpageisreferencedbitsetto1–  Replacetheonewhichis0(ifoneexists)

•  Wedonotknowtheorder,however

•  Secondchance–  Needreferencebit–  Clockreplacement–  Ifpagetobereplaced(inclockorder)hasreferencebit=1then:

•  setreferencebit0•  leavepageinmemory•  replacenextpage(inclockorder),subjecttosamerules

Second‐chance(clock)pagereplacementalgorithm

0

0

1

1

0

1

1…

Circularqueueof

pages

Referencebits

Nextvic/m(“clockhand”)

Second‐chance(clock)pagereplacementalgorithm

0

0

1

1

0

1

1…

Circularqueueof

pages

Referencebits

Nextvic/m(“clockhand”)

Second‐chance(clock)pagereplacementalgorithm

0

0

0

1

0

1

1…

Circularqueueof

pages

Referencebits

Nextvic/m(“clockhand”)

Second‐chance(clock)pagereplacementalgorithm

0

0

0

0

0

1

1…

Circularqueueof

pages

Referencebits

Nextvic/m(“clockhand”)

Framealloca/onpolicies

Alloca/onofframes

•  Eachprocessneedsminimumnumberofpages

•  Example:IBM370–6pagestohandleSSMOVEinstruc/on:–  instruc/onis6bytes,mightspan2pages

–  2pagestohandlefrom–  2pagestohandleto

•  Twomajoralloca/onschemes–  fixedalloca/on–  priorityalloca/on

Fixedalloca/on

•  Equalalloca/on–  allprocessesgetequalshare.

•  Propor/onalalloca/on–  Allocateaccordingtothesizeofprocess

Priorityalloca/on

•  Propor/onalalloca/onscheme•  Usingpriori/esratherthansize

•  IfprocessPigeneratesapagefault,select:1.  oneofitsframes,or2.  framefromaprocesswithlowerpriority

Globalvs.localalloca/on•  Globalreplacement–processselectsareplacementframefromthesetofallframes;oneprocesscantakeaframefromanother

•  Localreplacement–eachprocessselectsfromonlyitsownsetofallocatedframes

Thrashing•  Ifaprocessdoesnothave“enough”pages,thepage‐faultrateisveryhigh.Thisleadsto:–  lowCPUu/liza/on–  opera/ngsystemthinksthatitneedstoincreasethedegreeofmul/programming

–  anotherprocessaddedtothesystem

•  Thrashing≡aprocessisbusyswappingpagesinandout

ThrashingUsefulCPU

u/liza/

on

Demandforvirtualmemory

Thrashingbegins!

Demandpagingandthrashing

•  Whydoesdemandpagingwork?Localitymodel– Processmigratesfromonelocalitytoanother– Locali/esmayoverlap

•  Whydoesthrashingoccur?Σsizeoflocality>totalmemorysize

Localityinamemoryreferencepajern

Working‐setmodel

•  Δ ≡working‐setwindow≡afixednumberofpagereferences

–  Example:10,000instruc/on

•  WSSi(workingsetofProcessPi)=totalnumberofpagesreferencedinthemostrecentΔ(variesin/me)– Δtoosmall⇒willnotencompassen/relocality– Δtoolarge⇒willencompassseverallocali/es– Δ=∞⇒willencompassen/reprogram

Allocatedemandframes

•  D=ΣWSSi≡totaldemandframes–  Intui/on:howmuchspaceisreallyneeded

•  D>m⇒Thrashing

•  Policy:ifD>m,suspendsomeprocesses

Working‐setmodel

...2615777751623412344434344413234443444...

Δ

WS(t1)={1,2,5,6,7} t1

Δ

WS(t2)={3,4} t2

Pagereferencestring:

Keepingtrackoftheworkingset

•  Approximatewithinterval/mer+areferencebit•  Example:Δ=10,000–  Timerinterruptsa^erevery5000/meunits–  Keepinmemory2bitsforeachpage– Whenevera/merinterruptscopyandsetsthevaluesofallreferencebitsto0

–  Ifoneofthebitsinmemory=1⇒pageinworkingset

•  Whyisthisnotcompletelyaccurate?•  Improvement=10bitsandinterruptevery1000/meunits

Page‐faultfrequencyscheme

•  Establish“acceptable”page‐faultrate–  Ifactualratetoolow,processlosesframe

–  Ifactualratetoohigh,processgainsframe

Numberofframes

Rateofp

agefaults

Lowerbound

Upperbound

Decreasenumberofframes

Increasenumberofframes