Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
LAMEMORIAVIRTUALE
SISTEMIOPERATIVI
Motivazioni» Spessonontuttelefunzionidiunprogrammasonoutilizzatedurantel’esecuzione˃ Procedureperlagestionedierroripocofrequenti˃ Spazioriservatoperarray,listeetabelle˃ Funzionalitàaccessorieusatedirado
» Proposta˃ Caricareinmemoriasolounapartedelprogramma˃ Altrimodulicaricatisurichiesta
˃ L’immaginedelprocessosiestendeoltrelacapacitàdellamemoriafisica
GiorgioGiacinto201
7
2
SistemiOperativi
VantaggidellaMemoriaVirtuale» Separazionedellamemorialogicavistadall’utentedaquellafisica˃ Spaziodiindirizzilogico>=spaziodiindirizzifisici
» Aumentodelgradodimultiprogrammazioneodiutentiinterattivi
» Caricare/scaricareiprogrammiin/dallamemoriarichiedeunnumeroinferioredioperazioniI/O
GiorgioGiacinto201
7
3
SistemiOperativi
Memoriavirtualepiùgrandedellamemoriafisica
GiorgioGiacinto201
7
4
SistemiOperativi
Þ
SpaziodegliindirizzivirtualiGiorgioGiacinto201
7
5
SistemiOperativi
Memoriavirtualeelibreriecondivise
GiorgioGiacinto201
7
6
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
7
Definizione» Sonocaricateinmemoriasololepagineeffettivamente utilizzateperl’esecuzione˃ lazy swapper
» Richiestadiunapagina=>riferimentoallapagina˃ Riferimentononvalido=>abort˃ not-in-memory =>trasferireinmemoria
» Pager˃ Modulodelsistemaoperativochegestiscelapaginazione
GiorgioGiacinto201
7
8
SistemiOperativi
Paginazionesurichiestaeswapping diprocessipaginati
GiorgioGiacinto201
7
9
SistemiOperativi
TabelladellepagineSoloalcunepaginesonoinmemoria
GiorgioGiacinto201
7
10
SistemiOperativi
Paginazioneespaziodiswapsudisco» Lapaginazionesurichiestapuòfarusodellospaziodiswapsudisco˃ Disolitoaccessopiùvelocerispettoafilesystem
» Ingenere,lepagineasolalettura,comequellechecontengonocodice,sonosovrascritte˃ lepaginesonocaricatedirettamentedalfilesystem
» Lepagineanonime (heap,stack,ecc.)vengonoinvecescrittesullospaziodiswap˃ Isistemioperativimobilenonsovrascrivonomailepagineanonime
GiorgioGiacinto201
7
11
SistemiOperativi
Copy-on-Write» Creazionediunprocessomediantefork()
˃ Copiadell’immaginedelgenitore˃ Lacopiaèinutilesefork() èseguitadaexec()
» LatecnicaCopy-on-Write(COW)consistenellacondivisionedellestessepaginefisichedapartedigenitoreefiglio
» Unapaginaècopiatasoloseunodeidueprocessilamodifica
» Lacopiaavvieneindividuandounframeliberodallalistadiframedisponibili
GiorgioGiacinto201
7
12
SistemiOperativi
Copy-on-WriteGiorgioGiacinto201
7
13
SistemiOperativi
PageFault» Quandosideveaccedereaunindirizzovirtualediunapaginachenonècaricatainmemoria˃ Indicatodalbitdivalidità
» Sigeneraunaeccezionegestitadalsistemaoperativo˃ Sel’indirizzoènonvalido=>abort˃ Seinvecesitrattadiunapaginamancante,occorrecaricarlanelsistema
GiorgioGiacinto201
7
14
SistemiOperativi
GestionediunpagefaultGiorgioGiacinto201
7
15
SistemiOperativi
Considerazioni» Paginazionepura
˃ Sicaricanoinmemorialepaginesolo quandorichiesto+ All’avviodelprocessosiavrannonumerosipagefault
» Localitàdeiriferimenti˃ Èimprobabilecheistruzionilogicamenteconsecutivesi
trovinoinpaginediverse» Memoriasecondaria
˃ Deveriservareunaareadiscambio (swapspace)» Esecuzionidiistruzionicomplesse
˃ Pagefaultcausatedall’accessoaglioperandi
GiorgioGiacinto201
7
16
SistemiOperativi
Prestazionidellapaginazionesurichiesta» Iltempoeffettivod’accessoallamemoria(Effective AccessTime- EAT)sicalcolaEAT=(1– p)×ma +p × (tempogestionepagefault)
» Esempioma=200nstempomediogestionepagefault=8msSep =0,1%=>EAT=8,2μs =41×ma!!
SesivuoleEAT<=1,1maallorap >=0,25×10-6%
GiorgioGiacinto201
7
17
SistemiOperativi
Cosasuccedesenoncisonopiùframeliberi?» Over-allocation
˃ Lamemoriacomplessivachepuòessererichiestadaiprocessièmaggiorediquelladisponibile
˃ Lalistadeiframeliberipuòesserevuota
˃ Algoritmoperindividuarepaginechenonsonopiùutilizzate
˃ L’algoritmodevegarantirelagenerazionediunnumeroridottodipagefault
» Effettocollaterale˃ Alcunepaginepotrebberoesserecaricateinmemoria
diversevoltedurantel’esecuzione
GiorgioGiacinto201
7
18
SistemiOperativi
Over-allocationesostituzionedellepagine
GiorgioGiacinto201
7
19
SistemiOperativi
Sostituzionedellepagineetempomediodiaccesso» Lasostituzionediunapaginapuòaumentareiltempo
mediodiaccesso˃ sidevescriveresudiscolapaginacheverràsostituitada
quellachehageneratoilfault˃ Servonodue accessiallamemoriasecondaria
» Perridurreilsovraccaricodovutoallascritturasudiscodellapaginadasostituire˃ modify (dirty)bit indicaqualipaginesonostate
modificatesololepaginemodificatedevonoessereriscritte
GiorgioGiacinto201
7
20
SistemiOperativi
Sostituzionedellepagine1. Ricercadellaposizionesuldiscodellapagina
dacaricareinmemoria2. Ricercadiunframelibero
˃ sepresente,caricalapagina˃ senoncisonoframeliberi,eseguiunalgoritmodi
sostituzionedellepaginepertrovareunframevittima
3. Memorizzalapaginanelframeliberoaggiornaletabelledeiframeedellepagine
4. Riavviailprocesso
GiorgioGiacinto201
7
21
SistemiOperativi
Sostituzionedellepagine
GiorgioGiacinto201
7
22
SistemiOperativi
Andamentodeipagefaultall’aumentaredeln.ro diframe
GiorgioGiacinto201
7
23
SistemiOperativi
Algoritmidisostituzionedellepagine» Obiettivo
Minimizzareilnumerodipagefault» Leprestazionideglialgoritmisivalutanousandouna
particolaresequenzadirichiestedipagine˃ Generatacasualmente˃ Registratadurantel’esecuzionediunprogrammaecalcolandoilnumerodipagefaultgenerati
Negliesempicheseguonouseremolasequenza7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1eunamemoriasuddivisain3frame
GiorgioGiacinto201
7
24
SistemiOperativi
AlgoritmoFIFO“inordinediarrivo”» Èilpiùsemplicedaimplementare» Puògeneraremoltipagefault
˃ Quandosisostituisceunapaginainmemoriadamoltotempomaancoramoltoutilizzata
» AnomaliadiBelady˃ All’aumentaredeln.ro diframe,ipagefaultpossono
aumentare
GiorgioGiacinto201
7
25
SistemiOperativi
15pagefault
AnomaliadiBelady
GiorgioGiacinto201
7
26
SistemiOperativi
Ottenutaconlasequenza1,2,3,4,1,2,5,1,2,3,4,5
AlgoritmoOPTSostituzioneottimale» Sisostituisconolepaginechenonsarannousateperil
periododitempopiùlungo˃ Informazionedisponibile?
» Utilizzatopercalcolareilminimonumerodipagefaultchesipossonogenerare
GiorgioGiacinto201
7
27
SistemiOperativi
9pagefault
AlgoritmoLRULeastRecentlyUsed» Sisostituiscelapaginanonusata perilperiodopiùlungo
˃ Adogniriferimentoaunapaginasicopiailvaloredelclock disistemainuncampodellatabella
˃ Sisostituiscelapaginaconilvalorepiùpiccolo» Svantaggi
˃ Spazioinmemoriapermemorizzareilcontatore˃ Ricercadellapaginaconilvalorepiùpiccolodelcontatore
GiorgioGiacinto201
7
28
SistemiOperativi
12pagefault
AlgoritmoLRUImplementazioneconstack
» Unapaginasispostaincimaallapilaquandovienereferenziata
» Nelcasopeggioresidevonomodificare6puntatori
» Nonserveeffettuarelaricercadelframevittima
GiorgioGiacinto201
7
29
SistemiOperativi
Siusaunapiladoppiamenteconcatenataconpuntatoriall’elementoinizialeefinale.
AlgoritmoLRUConsiderazioni» L’algoritmoLRUrichiedeilsupportohardwareper
l’aggiornamentodeicontatoriodellapila˃ ItempirichiestidaunaesecuzioneviasoftwaredelSO
vanificherebberoivantaggidellamemoriavirtuale
» IlsupportohardwarerichiestoèpiuttostoonerosoSonostatesviluppateapprossimazioni LRU˃ CompromessofraprestazioniecomplessitàHWeSW
GiorgioGiacinto201
7
30
SistemiOperativi
ApprossimazioneLRUAlgoritmosecondachance» Siusaunreference bit associatoaciascunapagina
˃ Inizializzatoa0˃ Adogniriferimentoallapaginailbitèimpostatoa1˃ Sisostituisceunapaginaconbit=0(seesiste)
+ Sepiùpaginehannobit=0,comesisceglie?» Algoritmo
˃ Siesaminanolepagine insensoorario (clock)˃ Selapaginacandidataperlasostituzionehailreference
bit=1+ Siimpostailreference bit=0+ Silascialapaginainmemoria+ Sicandidaperlasostituzionelapaginasuccessiva(insensoorario)seguendolestesseregole
GiorgioGiacinto201
7
31
SistemiOperativi
Algoritmodisostituzionesecondachance(clock)
GiorgioGiacinto201
7
32
SistemiOperativi
Varianti- Uso di più bit di
riferimento- Uso del bit di
riferimento e del bit di modifica
AlgoritmibasatisulconteggiodeiriferimentiSi utilizza un contatore dei riferimenti fatti a ciascuna pagina
» LFU (LeastFrequentlyUsed)sostituiscelapaginaconilconteggiominore
» MFU (MostFrequentlyUsed)sostituiscelapaginaconilconteggiomaggiore
» Questetecnichesonopocodiffuseperché˃ Implementazioneonerosa˃ NonapprossimanoOPT
GiorgioGiacinto201
7
33
SistemiOperativi
Altreconsiderazioni» PagebufferingAlcunisistemimantengonounalistadiframeliberichecontengonopotenzialivittime˃ Sievitadidoverscriveresudiscoillorocontenuto˃ Nelcasoquellepaginesianoreferenziate,sievitadicaricarledadisco
» Perragionidiefficienza,alcunecategoriediapplicazioninonusanoiserviziSOperlasostituzionedellepagine˃ Ades.,DBMS,DataWarehouse,ecc.
GiorgioGiacinto201
7
34
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
35
Allocazionedeiframe» Occorreassicurareaogniprocessounnumerominimo diframeperevitaretroppipagefault
» AllocazioneuniformeSidistribuisconoiframeinmodouniformefraidiversiprocessi
» AllocazioneproporzionaleSidistribuisconoiframeinmodoproporzionalealledimensionidiciascunprocesso
» AllocazioneperprioritàSitienecontoanchedellapriorità
GiorgioGiacinto201
7
36
SistemiOperativi
Allocazioneglobaleeallocazionelocale
Perlasostituzionedellepaginelavittimapuòessere lapaginadiunprocessodiversodaquellochehageneratoilfault˃ Variazionedinamicadelnumerodiframeassegnatiaun
processo
Puòesseresostituitasolounapaginainunodeiframeallocatialprocessochehageneratoilfault
» IncasodiarchitettureNUMA occorretenercontodeidiversitempid’accessoallememoriedelsistema
GiorgioGiacinto201
7
37
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
38
Thrashing» Lafrequenzadeipage-faultcresceinmodoabnormese
ilprocessohapoche pagineadisposizioneConseguenze˃ scarsousodellaCPU˃ Ilsistemaoperativopuòaumentareilgradodi
multiprogrammazioneperaumentarel’usodellaCPU˃ Unaltroprocessosiaggiungealsistema,incrementando
ulteriormenteipagefaulteriducendol’usodellaCPU
: lamaggiorpartedeltempodiesecuzionediunprocessoèimpiegataperlapaginazione!
GiorgioGiacinto201
7
39
SistemiOperativi
Thrashing
GiorgioGiacinto201
7
40
SistemiOperativi
PaginazionesurichiestaeThrashing» Perchélapaginazionesurichiestaaumental’efficienzadelsistema?
˃ Durantel’esecuzioneunprocessomigradaunalocalitàaun’altra
˃ Lelocalitàpossonosovrapporsi
» Perchépuòverificarsiilthrashing?Σ dimensionilocalità>dimensionememoria
GiorgioGiacinto201
7
41
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
42
Principiodilocalità
PrincipiodilocalitàMappadellamemoriarelativaall’esecuzionediFirefox inLinux
GiorgioGiacinto201
7
SistemiOperativi
43
ModellodeiWorking-Set» SiaΔ unafinestratemporaledelworking set» WSSi (working setdelProcessoPi)=
numerototaledipagineusatenegliultimiΔ riferimenti˃ seΔ ètroppopiccolo,potrebbenoncomprenderetuttala
località˃ seΔ ètroppogrande,potrebbecomprenderepiùlocalità˃ seΔ =∞comprendetuttelepaginedelprogramma
» D =ΣWSSi =>numerototalediframerichiestiinΔ» SeD >dim_mem =>Thrashing
˃ Perevitarethrashing sipuòsospendereunprocesso
GiorgioGiacinto201
7
44
SistemiOperativi
Modellodelworking-setGiorgioGiacinto201
7
45
SistemiOperativi
Modellobasatosullafrequenzadeipage-fault» Hal’obiettivodistabilireunafrequenza“accettabile” dipage-fault
˃ selafrequenzaattualeètroppobassa,sipossonosottrarreframealprocesso
˃ selafrequenzaattualeètroppoalta,ilprocessopuòguadagnaredeiframe
GiorgioGiacinto201
7
46
SistemiOperativi
WorkingSeteFrequenzadeiPageFault
GiorgioGiacinto201
7
47
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
48
Esigenzedelkernel» IlKernel hanecessitàdimemoriaperlesuestrutturedatichehannodimensionivariabili
» Partedellamemoriadelkernel deveesserecontigua˃ Ades.,alcunidispositiviaccedonoallamemoriasenzausarelamemoriavirtuale
» Diconseguenza,lamemoriadelkernel disolitononèpaginata˃ Ilkernel haadisposizioneuninsiemediareeliberedimemoria
GiorgioGiacinto201
7
49
SistemiOperativi
BuddySystem» Usasegmentidimemoriadidimensionefissata,formatidaunoopiùframecontigui
» Lamemoriaèallocatainporzionididimensionipotenza-di-2˃ Lerichiestesonoarrotondatepereccessoallapiùvicinapotenzadidue
˃ Selaporzionedisponibileèpiùgrandediquellarichiesta,laporzionesidivideindue( )+ Ladivisionecontinuafinchénonsigiungealladimensionerichiesta
˃ Duebuddy nonusatipossonoesserefusi
GiorgioGiacinto201
7
50
SistemiOperativi
GestoreBuddySystemGiorgioGiacinto201
7
51
SistemiOperativi
Allocazionealastre(slab)» Unalastra ( ) èformatadaunaopiùframecontigui» Lacache èformatadaunaopiùlastre» Ciascunacacheèrelativaaunastrutturadatidelkernel
˃ Ciascunacachecontieneoggetti – istanzedellastrutturadati
» Lacacheècreataconoggettisegnaticomeliberi» Quandosimemorizzanolestrutture,glioggettisono
segnaticomeusati» Seunalastraèpienasiusaunalastravuota
˃ Senonesistonolastrevuote,siallocaunanuovalastra» Nonc’è frammentazioneel’allocazioneèveloce
GiorgioGiacinto201
7
52
SistemiOperativi
AllocazionealastreGiorgioGiacinto201
7
53
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
54
Prepaginazione» Riduceilnumerodipagefaultall’avviodelprocesso» Trasferisceinmemoriaalcuneotuttelepagine
necessarieprima chesifacciaunriferimento˃ Masequestepaginenonverrannousate,abbiamo
“sprecato” operazionidiI/O» Difficoltà
Stabilirequantepagineportareinmemoria
LinguaggicomeC/C++eorientatiaglioggettinonsoddisfanoapienolocalitàepossonorendereinefficientelaprepaginazione
GiorgioGiacinto201
7
55
SistemiOperativi
Dimensionedellepagine» Influenza
˃ Ilgradodiframmentazione˃ Ladimensionedellatabelladellepagine˃ IlsovraccaricoperoperazioniI/O
» Dipendedallalocalità
GiorgioGiacinto201
7
56
SistemiOperativi
PortatadellaTLB» Èlaquantitàdimemoriachepuòessereindirizzata
dallaTLB» TLBReach=(TLBSize)× (PageSize)» IdealmentelaTLBdovrebbeindirizzareilworking set di
ciascunprocesso» PeraumentareTLBReachsipotrebbeaumentarela
dimensionedellepagine˃ Puòcausareframmentazione
» Usodipaginedidimensionediversa˃ Ciascunaapplicazioneusaladimensionedipaginache
creamenoframmentazione
GiorgioGiacinto201
7
57
SistemiOperativi
Strutturadeiprogrammiint[128,128] data;Ipotizziamo che ciascuna riga sia memorizzata inuna paginaProgram1
for (j = 0; j <128; j++)for (i = 0; i < 128; i++)
data[i,j] = 0;128x128=16,384pagefaults
Program2for (i = 0; i < 128; i++)
for (j = 0; j < 128; j++)data[i,j] = 0;
128pagefaults
GiorgioGiacinto201
7
58
SistemiOperativi
I/Ointerlock» Alcunepaginedevonoesserevincolate inmemoria˃ Nondevonoesseresostituiteincasodipagefault
» CasotipicoinoperazioniI/OLepagineinusoperlacopiadidatidaunaperifericanondevonoessererimosse
GiorgioGiacinto201
7
59
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
60
Windows» Paginazionesurichiestaconclustering
˃ Sicaricalapaginamancanteequellevicine» Aciascunprocessosiassegnaunvaloreminimo eun
valoremassimo diworking set˃ Minimogarantitodipagineinmemoria˃ Massimonumeropossibiledipagineinmemoria
» Selaquantitàdimemoriadisponibilescendesottounacertasoglia,ilsistemaesegueunariduzioneautomaticadelworking set(automatic working settrimming)˃ Mantenendoilvincolodelminimo working set
GiorgioGiacinto201
7
61
SistemiOperativi
Solaris» Mantieneunalistadipaginedisponibilidaassegnareai
processichecausanopagefault˃ Lotsfree
sogliaperavviarelapaginazionesurichiesta˃ Desfree
sogliaperaumentarelapaginazione˃ Minfree
sogliaperavviareswapping» Lapaginazionevieneeseguitadalprocessopageout
usandounalgoritmoclockaduelancette˃ Scanrate
frequenzadiscansionedellepaginevariafraslowscan efastscan
GiorgioGiacinto201
7
62
SistemiOperativi