LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃...
Transcript of LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃...
![Page 1: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/1.jpg)
LAMEMORIAVIRTUALE
SISTEMIOPERATIVI
Motivazioni» Spessonontuttelefunzionidiunprogrammasonoutilizzatedurantel’esecuzione˃ Procedureperlagestionedierroripocofrequenti˃ Spazioriservatoperarray,listeetabelle˃ Funzionalitàaccessorieusatedirado
» Proposta˃ Caricareinmemoriasolounapartedelprogramma˃ Altrimodulicaricatisurichiesta
˃ L’immaginedelprocessosiestendeoltrelacapacitàdellamemoriafisica
GiorgioGiacinto201
7
2
SistemiOperativi
![Page 2: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/2.jpg)
VantaggidellaMemoriaVirtuale» Separazionedellamemorialogicavistadall’utentedaquellafisica˃ Spaziodiindirizzilogico>=spaziodiindirizzifisici
» Aumentodelgradodimultiprogrammazioneodiutentiinterattivi
» Caricare/scaricareiprogrammiin/dallamemoriarichiedeunnumeroinferioredioperazioniI/O
GiorgioGiacinto201
7
3
SistemiOperativi
Memoriavirtualepiùgrandedellamemoriafisica
GiorgioGiacinto201
7
4
SistemiOperativi
Þ
![Page 3: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/3.jpg)
SpaziodegliindirizzivirtualiGiorgioGiacinto201
7
5
SistemiOperativi
Memoriavirtualeelibreriecondivise
GiorgioGiacinto201
7
6
SistemiOperativi
![Page 4: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/4.jpg)
GiorgioGiacinto201
7
SistemiOperativi
7
Definizione» Sonocaricateinmemoriasololepagineeffettivamente utilizzateperl’esecuzione˃ lazy swapper
» Richiestadiunapagina=>riferimentoallapagina˃ Riferimentononvalido=>abort˃ not-in-memory =>trasferireinmemoria
» Pager˃ Modulodelsistemaoperativochegestiscelapaginazione
GiorgioGiacinto201
7
8
SistemiOperativi
![Page 5: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/5.jpg)
Paginazionesurichiestaeswapping diprocessipaginati
GiorgioGiacinto201
7
9
SistemiOperativi
TabelladellepagineSoloalcunepaginesonoinmemoria
GiorgioGiacinto201
7
10
SistemiOperativi
![Page 6: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/6.jpg)
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
![Page 7: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/7.jpg)
Copy-on-WriteGiorgioGiacinto201
7
13
SistemiOperativi
PageFault» Quandosideveaccedereaunindirizzovirtualediunapaginachenonècaricatainmemoria˃ Indicatodalbitdivalidità
» Sigeneraunaeccezionegestitadalsistemaoperativo˃ Sel’indirizzoènonvalido=>abort˃ Seinvecesitrattadiunapaginamancante,occorrecaricarlanelsistema
GiorgioGiacinto201
7
14
SistemiOperativi
![Page 8: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/8.jpg)
GestionediunpagefaultGiorgioGiacinto201
7
15
SistemiOperativi
Considerazioni» Paginazionepura
˃ Sicaricanoinmemorialepaginesolo quandorichiesto+ All’avviodelprocessosiavrannonumerosipagefault
» Localitàdeiriferimenti˃ Èimprobabilecheistruzionilogicamenteconsecutivesi
trovinoinpaginediverse» Memoriasecondaria
˃ Deveriservareunaareadiscambio (swapspace)» Esecuzionidiistruzionicomplesse
˃ Pagefaultcausatedall’accessoaglioperandi
GiorgioGiacinto201
7
16
SistemiOperativi
![Page 9: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/9.jpg)
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
![Page 10: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/10.jpg)
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
![Page 11: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/11.jpg)
Sostituzionedellepagine1. Ricercadellaposizionesuldiscodellapagina
dacaricareinmemoria2. Ricercadiunframelibero
˃ sepresente,caricalapagina˃ senoncisonoframeliberi,eseguiunalgoritmodi
sostituzionedellepaginepertrovareunframevittima
3. Memorizzalapaginanelframeliberoaggiornaletabelledeiframeedellepagine
4. Riavviailprocesso
GiorgioGiacinto201
7
21
SistemiOperativi
Sostituzionedellepagine
GiorgioGiacinto201
7
22
SistemiOperativi
![Page 12: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/12.jpg)
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
![Page 13: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/13.jpg)
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
![Page 14: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/14.jpg)
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
![Page 15: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/15.jpg)
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
![Page 16: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/16.jpg)
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
![Page 17: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/17.jpg)
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
![Page 18: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/18.jpg)
GiorgioGiacinto201
7
SistemiOperativi
35
Allocazionedeiframe» Occorreassicurareaogniprocessounnumerominimo diframeperevitaretroppipagefault
» AllocazioneuniformeSidistribuisconoiframeinmodouniformefraidiversiprocessi
» AllocazioneproporzionaleSidistribuisconoiframeinmodoproporzionalealledimensionidiciascunprocesso
» AllocazioneperprioritàSitienecontoanchedellapriorità
GiorgioGiacinto201
7
36
SistemiOperativi
![Page 19: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/19.jpg)
Allocazioneglobaleeallocazionelocale
Perlasostituzionedellepaginelavittimapuòessere lapaginadiunprocessodiversodaquellochehageneratoilfault˃ Variazionedinamicadelnumerodiframeassegnatiaun
processo
Puòesseresostituitasolounapaginainunodeiframeallocatialprocessochehageneratoilfault
» IncasodiarchitettureNUMA occorretenercontodeidiversitempid’accessoallememoriedelsistema
GiorgioGiacinto201
7
37
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
38
![Page 20: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/20.jpg)
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
![Page 21: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/21.jpg)
PaginazionesurichiestaeThrashing» Perchélapaginazionesurichiestaaumental’efficienzadelsistema?
˃ Durantel’esecuzioneunprocessomigradaunalocalitàaun’altra
˃ Lelocalitàpossonosovrapporsi
» Perchépuòverificarsiilthrashing?Σ dimensionilocalità>dimensionememoria
GiorgioGiacinto201
7
41
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
42
Principiodilocalità
![Page 22: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/22.jpg)
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
![Page 23: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/23.jpg)
Modellodelworking-setGiorgioGiacinto201
7
45
SistemiOperativi
Modellobasatosullafrequenzadeipage-fault» Hal’obiettivodistabilireunafrequenza“accettabile” dipage-fault
˃ selafrequenzaattualeètroppobassa,sipossonosottrarreframealprocesso
˃ selafrequenzaattualeètroppoalta,ilprocessopuòguadagnaredeiframe
GiorgioGiacinto201
7
46
SistemiOperativi
![Page 24: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/24.jpg)
WorkingSeteFrequenzadeiPageFault
GiorgioGiacinto201
7
47
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
48
![Page 25: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/25.jpg)
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
![Page 26: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/26.jpg)
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
![Page 27: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/27.jpg)
AllocazionealastreGiorgioGiacinto201
7
53
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
54
![Page 28: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/28.jpg)
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
![Page 29: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/29.jpg)
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
![Page 30: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/30.jpg)
I/Ointerlock» Alcunepaginedevonoesserevincolate inmemoria˃ Nondevonoesseresostituiteincasodipagefault
» CasotipicoinoperazioniI/OLepagineinusoperlacopiadidatidaunaperifericanondevonoessererimosse
GiorgioGiacinto201
7
59
SistemiOperativi
GiorgioGiacinto201
7
SistemiOperativi
60
![Page 31: LA MEMORIA VIRTUALE · 2017. 11. 2. · ˃ Caricare in memoria solo una parte del programma ˃ Altri moduli caricati su richiesta ˃ L’immagine del processo si estende oltre la](https://reader031.fdocuments.net/reader031/viewer/2022013023/5fe75b6148b9c020e8283cc3/html5/thumbnails/31.jpg)
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