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