Upload
donhi
View
213
Download
0
Embed Size (px)
Citation preview
GESTIONE(
DELLA(
MEMORIA(
SISTEMI&OPERATIVI&AA&2012&/&2013&
Ricordiamo…(
» …&che&un&programma&per&essere&eseguito&deve&essere&trasferito&dal&disco&alla&memoria&principale&
» …&che&i®istri&e&la&memoria&principale&sono&gli&unici&disposiDvi&di&memorizzazione&cui&ha&accesso&la&CPU&
» …&che&la&cache&è&interposta&fra&la&memoria&principale&e&la&CPU&&&
&Sono&necessari&meccanismi&di&protezione)&della&memoria&per&assicurarne&il&correIo&funzionamento(
Giorgio&Giacinto&20
12&
2&
Sistemi&OperaDvi&
Giorgio&Giacinto&20
12&
Sistemi&OperaDvi&
3&
Registri(base(e(limite(
» Una&coppia&di®istri&chiamaD&base&e(limite&definiscono&lo&spazio)di)indirizzamento)logico&
Giorgio&Giacinto&20
12&
4&
Sistemi&OperaDvi&
Protezione(della(memoria(Registri(base(e(limite(
Giorgio&Giacinto&20
12&
5&
Sistemi&OperaDvi&
Fasi(di(creazione(ed(esecuzione(di(un(
programma(utente(
Giorgio&Giacinto&20
12&
6&
Sistemi&OperaDvi&
Binding(
» L’associazione&di&indirizzi&di&memoria&alle&istruzioni&e&ai&daD&può&avvenire&in&tre&momenD&diversi&˃ Compilazione&Si&può&generare&codice(assoluto&se&la&locazione&in&memoria&è¬a&a&priori&
˃ Caricamento&Il&codice&generato&dalla&compilazione&si&dice&rilocabile&
˃ Esecuzione&L’associazione°li&indirizzi&è&rimandata&al&momento&dell’esecuzione&se&il&processo&può&essere&spostato&da&un’area&all’altra&della&memoria.&&+ Necessario&supporto&hardware&(ad&es.,®istri&base&e&limite)&
Giorgio&Giacinto&20
12&
7&
Sistemi&OperaDvi&
Spazi(di(indirizzi(logici(e(
fisici(» Le&tecniche&di&gesDone&della&memoria&si&basano&sul&
conceIo&di&associazione&di&spazi)di)indirizzamento)logici)a&spazi)di)indirizzamento)fisici&&˃ Indirizzi(logici(o&virtuali(Sono&generaD&dalla&CPU&
˃ Indirizzi(fisici(Sono&quelli&usaD&dall’unità&di&memoria&
» Gli&indirizzi&logici&e&fisici&coincidono&negli&schemi&di&binding)in&fase&di&compilazione&e&binding&in&fase&di&caricamento&
» Gli&indirizzi&logici&(virtuali)&e&fisici&differiscono&negli&schemi&di&binding)in&fase&di&esecuzione&
Giorgio&Giacinto&20
12&
8&
Sistemi&OperaDvi&
MemoryHManagement(Unit(
(MMU)(» DisposiDvo&hardware&che&trasforma&indirizzi&virtuali&in&indirizzi&fisici&&
» Il&valore&del®istro&di&rilocazione&della&MMU&è&sommato&agli&indirizzi&generaD&dai&processi&e&trasmessi&alla&memoria&&
» I&programmi&utente&gesDscono&solo&indirizzi&logici,&non&gli&indirizzi&fisici&reali&
Giorgio&Giacinto&20
12&
9&
Sistemi&OperaDvi&
Rilocazione(dinamica(
Giorgio&Giacinto&20
12&
10&
Sistemi&OperaDvi&
Caricamento(dinamico(
» Una&procedura&non&viene&caricata&fintanto&che&non&viene&chiamata&
» Molto&uDle&se&le&procedure&poco&uDlizzate&sono&cosDtuite&da&una&porzione&di&codice&di&dimensioni&rilevanD&
» Non&occorre&supporto&parDcolare&da&parte&del&sistema&operaDvo&
Giorgio&Giacinto&20
12&
11&
Sistemi&OperaDvi&
Collegamento(dinamico(e(
librerie(condivise(» Il&collegamento&è&rimandato&al&tempo&di&esecuzione&
» La&localizzazione&in&memoria&delle&librerie(condivise&è&effeIuata&per&mezzo&di&una&piccola&porzione&di&codice&deIo&stub&˃ Lo&stub&sosDtuisce&se&stesso&con&l’indirizzo&della&procedura&che&viene&eseguita&
» Il&sistema&operaDvo&verifica&che&la&procedura&si&trovi&nello&spazio&di&indirizzamento&del&processo&
Giorgio&Giacinto&20
12&
12&
Sistemi&OperaDvi&
Giorgio&Giacinto&20
12&
Sistemi&OperaDvi&
13&
Swapping(
» Un&processo&può&essere&spostato&temporaneamente&dalla&memoria&principale&a&una&memoria&ausiliaria&(backing&store),&e&successivamente&riportato&in&memoria&per&riprendere&l’esecuzione&
» Backing(store&di&solito&un&disco&veloce,&capiente&e&con&accesso&direIo&alla&memoria&
» Roll(out,(roll(in&&versione&dello&swapping&usata&da&algoritmi&di&scheduling&basata&sulla&priorità&
Giorgio&Giacinto&20
12&
14&
Sistemi&OperaDvi&
Schema(di(funzionamento(
dello(swapping(
Giorgio&Giacinto&20
12&
15&
Sistemi&OperaDvi&
CriPcità(dello(swapping(
» Durata&dei&trasferimenD&a/da&disco&molto&maggiore&della&durata&dei&tempi&del&cambio&di&contesto&
» Un&processo&può&essere&soggeIo&a&swapping&solo&se&è&completamento&inabvo&˃ ad&es.,&non&deve&essere&in&aIesa&del&completamento&di&operazioni&di&I/O&
» Oggi&soluzione&poco&usata&˃ Alcuni&sistemi&implementano&versioni&modificate&
Giorgio&Giacinto&20
12&
16&
Sistemi&OperaDvi&
Giorgio&Giacinto&20
12&
Sistemi&OperaDvi&
17&
Allocazione(conPgua(
» La&memoria&principale&è&divisa&in&due&parDzioni&˃ Sistema&operaDvo&residente,&di&solito&allocato&negli&indirizzi&bassi&di&memoria&insieme&al&veIore°li&interrupt&
˃ Spazio&per&i&processi&utente&negli&indirizzi&alD&» Si&usano&i®istri&di&rilocazione&per&la&protezione&
reciproca&dei&processi&utente&e&per&l’allocazione&dinamica&di&memoria&al&sistema&operaDvo&˃ Il®istro&base&conDene&il&valore&dell’indirizzo&fisico&più&piccolo&
˃ Il®istro&limite)conDene&l’intervallo&di&indirizzi&logici&˃ La&MMU&effeIua&dinamicamente)la&traduzione°li&indirizzi&logici)
Giorgio&Giacinto&20
12&
18&
Sistemi&OperaDvi&
Supporto(hardware(per(la(
rilocazione(e(registri(limite(
Giorgio&Giacinto&20
12&
19&
Sistemi&OperaDvi&
Allocazioni(di(parPzioni(
mulPple(» Hole&
un&blocco&di&memoria&disponibile.&Di&solito&nella&memoria&si&trovano&buchi&di&dimensioni&variabili&
» Ciascun&processo&viene&assegnato&a&una&parDzione&sufficientemente&grande&
» Il&sistema&operaDvo&deve&tenere&traccia&delle&a)&parDzioni&allocate&&&&b)&parDzioni&libere&(hole)&
Giorgio&Giacinto&20
12&
20&
Sistemi&OperaDvi&
OS"
processo 5"
processo 8"
processo 2"
OS"
processo 5"
processo 2"
OS"
processo 5"
processo 2"
OS"
processo 5"
processo 9"
processo 2"
processo 9"
processo 10"
Allocazione(dinamica(
» FirstHfit&Assegna&al&processo&la&prima)parDzione&libera&sufficientemente&grande&
» BestHfit(Assegna&al&processo&la&parDzione&libera&più)piccola)fra&quelle&di&dimensione&sufficiente&
» WorstHfit(
Assegna&al&processo&la&parDzione&libera&più)grande)fra&quelle&di&dimensione&sufficiente&"First-fit e best-fit sono in genere migliori di worst-fit in termini di velocità e uso dello spazio di memoria"
Giorgio&Giacinto&20
12&
21&
Sistemi&OperaDvi&
Frammentazione(
» Frammentazione(esterna&&Lo&spazio&di&memoria&complessivamente&disponibile&consente&l’allocazione&di&un&processo,&ma&non&è&conDguo&
» Frammentazione(interna&&la&memoria&allocata&a&un&processo&può&essere&leggermente&superiore&a&quella&effebvamente&uDlizzata&dal&processo&
» La&frammentazione&esterna&può&essere&ridoIa&con&il&compaTamento(
˃ Si&devono&spostare&blocchi&di&memoria&allocata&ai&processi&in&modo&da&creare&un&unico&blocco&con&la&memoria&disponibile&
˃ È&possibile&solo&nei&casi&di&rilocazione&dinamica&a&tempo&di&esecuzione&&
˃ Problemi&se&ci&sono&operazioni&I/O&in&corso&
Giorgio&Giacinto&20
12&
22&
Sistemi&OperaDvi&
Giorgio&Giacinto&20
12&
Sistemi&OperaDvi&
23&
Paginazione(
» La&memoria&fisica&è&divisa&in&blocchi&di&dimensione&fissata,&chiamaD&frame&&˃ La&dimensione&è&una&potenza&di&2,&compresa&fra&512&e&8.192&byte)&
» La&memoria&logica&è&divisa&in&blocchi&di&dimensione&idenDca&ai&frame,&chiamaD&pagine&
» Per&eseguire&un&programma&di&dimensione&pari&a&n&pagine&sono&necessari&n&frame&liberi&˃ I&frame&possono&essere&non)con6gui&
» Frammentazione&interna&˃ Mediamente&pari&a&metà&della&dimensione&del&frame&
Giorgio&Giacinto&20
12&
24&
Sistemi&OperaDvi&
Paginazione(Modello(dello(spazio(Logico(e(Fisico(
Giorgio&Giacinto&20
12&
25&
Sistemi&OperaDvi&
Traduzione(degli(indirizzi(
Pagine&di&dimensione&2i&(di&solito&4KB&o&8KB)&» Gli&indirizzi&generaD&dalla&CPU&sono&divisi&in&
˃ Numero(di(pagina((p)&usato&come&indice&della&tabella)delle)pagine&che&conDene&l’indirizzo&iniziale&di&ciascuna&pagina&nella&memoria&fisica&
˃ Offset(di(pagina((d)(Combinato&con&l’indirizzo&iniziale&della&pagina&fornisce&l’indirizzo&fisico&di&memoria&
Spazio)logico)di)dimensione)2m)e)pagine)di)dimensione)2n&
Giorgio&Giacinto&20
12&
26&
Sistemi&OperaDvi&
page number" page offset"
p" d"m - n" n"
Paginazione(
Supporto(hardware(
Giorgio&Giacinto&20
12&
27&
Sistemi&OperaDvi&
Esempio(di(paginazione(
Giorgio&Giacinto&20
12&
28&
Sistemi&OperaDvi&
Memoria di 32-byte Pagine di dimensione 4-byte"
Frame(liberi(Giorgio&Giacinto&20
12&
29&
Sistemi&OperaDvi&
Prima della assegnazione" Dopo l’assegnazione"
Implementazione(della(
tabella(delle(pagine(» La&tabella&è&memorizzata&nella&memoria&principale&
˃ PageHtable(base(register&(PTBR)&&conDene&l’indirizzo&della&tabella&
˃ PageHtable(length(register((PRLR)&&indica&la&dimensione&della&tabella&
» Ogni&accesso&alla&memoria&per&daD&o&istruzioni&richiederebbe&due&accessi&˃ Uno&per&la&tabella&˃ Uno&per&il&dato&o&l’istruzione&
» Si&usa&una&cache)hardware&chiamata&translaPon(lookHaside(buffers((TLBs)&
Giorgio&Giacinto&20
12&
30&
Sistemi&OperaDvi&
TLB(e(paginazione(Giorgio&Giacinto&20
12&
31&
Sistemi&OperaDvi&
Protezione(della(memoria(
» A&ciascun&frame&può&essere&associato&un&bit&di&protezione,&memorizzato&nella&tabella&delle&pagine&ValidHinvalid&˃ “valid”&indica&che&la&pagina&associata&si&trova&nello&spazio&di&indirizzamento&logico&del&processo&
˃ “invalid”&indica&che&la&pagina&non&si&trova&nello&spazio&di&indirizzamento&logico&del&processo&
Giorgio&Giacinto&20
12&
32&
Sistemi&OperaDvi&
Valid((v)(o(Invalid((i)(Bit(Giorgio&Giacinto&20
12&
33&
Sistemi&OperaDvi&
Pagine(condivise(
» Codice(condiviso(˃ Si&manDene&in&memoria&una&sola&copia&di&codice&che&non&viene&modificato&durante&l’esecuzione&(deIo&rientrante),&che&può&essere&condiviso&da&più&processi&(ad&es.,&elaboratori&di&testo,&compilatori,&ecc.).&
˃ Il&codice&condiviso&deve&apparire&nella&stessa&locazione&nello&spazio&di&indirizzo&fisico&di&tub&i&processi&&
» Codice(e(daP(riservaP&˃ Ciascun&processo&manDene&una&copia&separata&del&codice&e&dei&daD&
˃ Le&pagine&relaDve&al&codice&e&ai&daD&riservaD&possono&essere&in&qualunque&posizione&nello&spazio&di&indirizzamento&logico&
Giorgio&Giacinto&20
12&
34&
Sistemi&OperaDvi&
Esempio(di(pagine(
condivise(
Giorgio&Giacinto&20
12&
35&
Sistemi&OperaDvi&
StruTura(della(tabella(delle(
pagine(» Paginazione&gerarchica&
» Tabella&di&Dpo&hash&
» Tabella&delle&pagine&inverDte&
Giorgio&Giacinto&20
12&
36&
Sistemi&OperaDvi&
Paginazione(gerarchica(a(
due(livelli(
Giorgio&Giacinto&20
12&
37&
Sistemi&OperaDvi&
La tabella delle pagine viene paginata a sua volta
Paginazione(gerarchica(
Traduzione(degli(indirizzi(
Giorgio&Giacinto&20
12&
38&
Sistemi&OperaDvi&
Tabella(di(Ppo(hash(
Giorgio&Giacinto&20
12&
39&
Sistemi&OperaDvi&
Tabella(delle(pagine(
inverPta(
Giorgio&Giacinto&20
12&
40&
Sistemi&OperaDvi&
Ogni riga della tabella è relativa a un frame
Giorgio&Giacinto&20
12&
Sistemi&OperaDvi&
41&
MoPvazione(
» La&segmentazione&è&un&sistema&di&gesDone&della&memoria&basato&sulla&rappresentazione&della&memoria&da&parte&dell’utente&
» Un&utente&vede&un&programma&come&una&collezione(di(moduli(o(segmenP&˃ main&˃ procedure&e&funzioni&˃ metodi&˃ oggeb&˃ variabili&locali&e&globali&&ecc.&
Giorgio&Giacinto&20
12&
42&
Sistemi&OperaDvi&
Rappresentazione(di(un(programma(dal(
punto(di(vista(dell’utente(Giorgio&Giacinto&20
12&
43&
Sistemi&OperaDvi&
Punto(di(vista(logico(della(
segmentazione(
Giorgio&Giacinto&20
12&
44&
Sistemi&OperaDvi&
1"
3"
2"
4"
1"
4"
2"
3"
spazio utente" spazio della memoria fisica"
ArchiteTura(per(la(
segmentazione(» Gli&indirizzi&logici&sono&formaD&dalla&tupla&
&<segment/number,&offset>&» Tabella(dei(segmenP&&
ogni&elemento&della&tabella&conDene:&˃ base&
indirizzo&fisico&iniziale&del&segmento&˃ limite&&
specifica&la&lunghezza&del&segmento&
» Segment/table&base®ister&(STBR)&&riferimento&alla&locazione&in&memoria&della&tabella&dei&segmenD&&
» Segment/table&length®ister&(STLR)&&indica&il&numero&di&segmenD&usaD&da&un&programma&
Giorgio&Giacinto&20
12&
45&
Sistemi&OperaDvi&
Hardware(per(la(
segmentazione(
Giorgio&Giacinto&20
12&
46&
Sistemi&OperaDvi&
Altre(proprietà(
» Protezione&˃ Ad&ogni&elemento&della&tabella&dei&segmenD&è&associato&
+ bit&di&validità&=&0&/>&segmento&illegale&
+ privilegi&read/write/execute&
» La&condivisione&si&può&realizzare&a&livello&di&segmento&
Giorgio&Giacinto&20
12&
47&
Sistemi&OperaDvi&
Esempio(di(segmentazione(
Giorgio&Giacinto&20
12&
48&
Sistemi&OperaDvi&
Giorgio&Giacinto&20
12&
Sistemi&OperaDvi&
49&
Sistema(di(gesPone(della(
memoria(» Supporta&sia&la&segmentazione&sia&la&segmentazione&con&paginazione&
» La&CPU&genera&indirizzi&logici&˃ L’unità&di&segmentazione&produce&indirizzi&lineari&
˃ Gli&indirizzi&lineari&sono&inviaD&all’unità&di&paginazione&+ Genera&gli&indirizzi&fisici&per&la&memoria&principale&
+ È&l’equivalente&della&MMU&
Giorgio&Giacinto&20
12&
50&
Sistemi&OperaDvi&
Traduzione(di(indirizzi(logici(
in(indirizzi(fisici(
Giorgio&Giacinto&20
12&
51&
Sistemi&OperaDvi&
La CPU genera indirizzi logici nel formato (selettore, offset) Il valore del selettore individua il segmento L�unità di segmentazione produce un indirizzo lineare che è inviato all�unità di paginazione
Segmentazione(
Giorgio&Giacinto&20
12&
52&
Sistemi&OperaDvi&
Paginazione(Giorgio&Giacinto&20
12&
53&
Sistemi&OperaDvi&