ivan scagnetto a.a. 2007-2008 - dipartimento di …ivan.scagnetto/so3/memory.pdfgestione della...
TRANSCRIPT
Gestione della memoria
Ivan Scagnetto
Università di Udine — Facoltà di Scienze MM.FF.NN.
A.A. 2007-2008
Copyright c©2000–04 Marino Miculan ([email protected])
La copia letterale e la distribuzione di questa presentazione nella sua integrità sono permesse con qualsiasi mezzo,
a condizione che questa nota sia riprodotta.
Ivan Scagnetto Gestione della memoria
Gestione della Memoria - Sommario
FondamentiAssociazione degli indirizzi alla memoria fisicaSpazio indirizzi logico vs. fisicoAllocazione contigua
partizionamento fissopartizionamento dinamico
Allocazione non contiguaPaginazioneSegmentazioneSegmentazione con paginazione
Implementazione
Ivan Scagnetto Gestione della memoria
Gestione della Memoria
La memoria è una risorsa importante, e limitata.“I programmi sono come i gas reali: si espandono fino ariempire la memoria disponibile”.Memoria illimitata, infinitamente veloce, economica: nonesiste.Esiste la gerarchia della memoria, gestita dal gestore dellamemoria.
Registers
Cache
Main memory
Magnetic tape
Magnetic disk
1 nsec
2 nsec
10 nsec
10 msec
100 sec
<1 KB
1 MB
64-512 MB
5-50 GB
20-100 GB
Typical capacityTypical access time
Ivan Scagnetto Gestione della memoria
Gestione della memoria: Fondamenti
La gestione della memoria mira a soddisfare questi requisiti:Organizzazione logica: offrire una visione astratta dellagerarchia della memoria, ovvero, allocare e deallocarememoria ai processi su richiesta.Organizzazione fisica: tener conto a chi è allocato cosa, eeffettuare gli scambi con il disco.Rilocazione.Protezione: tra i processi, e per il sistema operativo.Condivisione: aumentare l’efficienza.
Ivan Scagnetto Gestione della memoria
Monoprogrammazione
(a) (b) (c)
0xFFF …
0 0 0
Userprogram
Userprogram
Userprogram
Operatingsystem in
RAM
Operatingsystem in
RAM
Operatingsystem in
ROM
Devicedrivers in ROM
Un solo programma per volta (oltre al sistema operativo). (c) ilcaso del DOS.
Ivan Scagnetto Gestione della memoria
Multiprogrammazione
La monoprogrammazione non sfrutta la CPU.Idea: se un processo usa la CPU al 20%, 5 processi lausano al 100%.Più precisamente, sia p la percentuale di tempo in attesadi I/O di un processo. Con n processi:
utilizzo CPU = 1− pn
Maggiore il grado di multiprogrammazione, maggiorel’utilizzo della CPU.Il modello è ancora impreciso (i processi non sonoindipendenti); un modello più accurato si basa sulla teoriadelle code.Può essere utile per stimare l’opportunità di upgrade.Esempio:
Memoria = 16MB: grado = 4, utilizzo CPU =60%Memoria = 32MB: grado = 8, utilizzo CPU =83% (+38%)Memoria = 48MB: grado = 12, utilizzo CPU =93% (+12%)
Ivan Scagnetto Gestione della memoria
Multiprogrammazione
50% I/O wait
80% I/O wait
20% I/O wait100
80
60
40
20
1 2 3 4 5 6 7 8 9 100Degree of multiprogramming
CP
U u
tiliz
atio
n (in
per
cent
)
325
Ivan Scagnetto Gestione della memoria
Analisi delle prestazioni: esempio
JobArrivaltime
CPUminutesneeded
12
3
4
10:0010:10
10:15
10:20
43
2
2
CPU idle
CPU busy
CPU/process
.80
.20
.20
.64
.36
.18
.51
.49
.16
.41
.59
.15
1
2
3
4
0100 15 20 22 27.6 28.2 31.7
2.0 .9
.9
.8
.8
.8
.3
.3
.3
.3
.9
.9
.9
.1
.1 .7
Job 2 starts
1 2 3 4
# Processes
(a)
(c)
(b)
Time (relative to job 1's arrival)
Job 1 finishes
Ivan Scagnetto Gestione della memoria
Multiprogrammazione
Ogni programma deve essere portato in memoria e postonello spazio indirizzi di un processo, per poter essereeseguito.Coda in input: l’insieme dei programmi su disco in attesa diessere portati in memoria per essere eseguiti.La selezione è fatta dallo scheduler di lungo termine (sec’è).Sorgono problemi di rilocazione e protezione.
Ivan Scagnetto Gestione della memoria
Binding degli indirizzi
L’associazione di istruzioni e dati a indirizzi di memoria puòavvenire al
Compile time: Se le locazioni di memoria sono note apriori, si può produrre del codice assoluto. Deve esserericompilato ogni volta che si cambia locazione diesecuzione.Load time: La locazione di esecuzione non è nota a priori;il compilatore genera codice rilocabile la cui posizione inmemoria viene decisa al momento del caricamento. Nonpuò essere cambiata durante l’esecuzione.Execution time: L’associazione è fatta durantel’esecuzione. Il programma può essere spostato da unazona all’altra durante l’esecuzione. Necessita di unsupporto hardware speciale per gestire questa rilocazione(es. registri base e limite).
Ivan Scagnetto Gestione della memoria
Caricamento dinamico
in-memory binary
memory image
object module
linkage editor
source program
compiler orassembler
load module
loader
execution time (run time)
compile time
load time
other object
modules
system library
dynamicallyloaded system library
dynamiclinking
Ivan Scagnetto Gestione della memoria
Caricamento dinamico
Un segmento di codice (eg. routine) non viene caricatofinché non serve (la routine viene chiamata).Migliore utilizzo della memoria: il codice mai usato nonviene caricato.Vantaggioso quando grosse parti di codice servono pergestire casi infrequenti (es. errori).Non serve un supporto specifico dal sistema operativo:può essere realizzato completamente a livello di linguaggioo di programma.Il sistema operativo può tuttavia fornire delle librerie perfacilitare il caricamento dinamico.
Ivan Scagnetto Gestione della memoria
Collegamento dinamico
Linking dinamico: le librerie vengono collegateall’esecuzione.Esempi: le .so su Unix, le .DLL su Windows.Nell’eseguibile si inseriscono piccole porzioni di codice,dette stub, che servono per localizzare la routine.Alla prima esecuzione, si carica il segmento se non èpresente in memoria, e lo stub viene rimpiazzatodall’indirizzo della routine e si salta alla routine stessa.Migliore sfruttamento della memoria: il segmento di unalibreria può essere condiviso tra più processi.Utili negli aggiornamenti delle librerie (ma bisogna fareattenzione a tener traccia delle versioni!).Richiede un supporto da parte del sistema operativo perfar condividere segmenti di codice tra più processi.
Ivan Scagnetto Gestione della memoria
Spazi di indirizzi logici e fisici
Il concetto di spazio indirizzi logico che viene legato aduno spazio indirizzi fisico diverso e separato èfondamentale nella gestione della memoria.
Indirizzo logico: generato dalla CPU. Detto anche indirizzovirtuale.Indirizzo fisico: indirizzo visto dalla memoria.
Indirizzi logici e fisici coincidono nel caso di binding alcompile time o load timePossono essere differenti nel caso di binding al tempo diesecuzione. Necessita di un hardware di traduzione.
Ivan Scagnetto Gestione della memoria
Memory-Management Unit (MMU)
È un dispositivo hardwareche associa al run time gliindirizzi logici a quelli fisici.Nel caso più semplice, ilvalore del registro dirilocazione viene sommatoad ogni indirizzo richiestoda un processo.Il programma utente vedesolamente gli indirizzilogici; non vede mai gliindirizzi reali, fisici.
Memory-Management Unit (MMU)
• E un dispositivo hard-
ware che associa al
run time gli indirizzi
logici a quelli fisici.
• Nel caso piu semplice,
il valore del registro di
rilocazione viene som-
mato ad ogni indi-
rizzo richiesto da un
processo.
• Il programma utente
vede solamente gli in-
dirizzi logici; non vede
mai gli indirizzi reali,
fisici.
Process Control Block
Program
Data
Stack
Comparator
Interrupt tooperating system
Absoluteaddress
Process image inmain memory
Relative address
Base Register
Bounds Register
Adder
332
Ivan Scagnetto Gestione della memoria
Allocazione contigua
La memoria è divisa in (almeno) due partizioni:Sistema operativo residente, normalmente nella zonabassa degli indirizzi assieme al vettore delle interruzioni.Spazio per i processi utente — tutta la memoria rimanente.
Allocazione a partizione singolaUn processo è contenuto tutto in una sola partizione.Schema di protezione con registri di rilocazione e limite, perproteggere i processi l’uno dall’altro e il kernel da tutti.Il registro di rilocazione contiene il valore del primo indirizzofisico del processo; il registro limite contiene il range degliindirizzi logici.Questi registri sono contenuti nella MMU e vengono caricatidal kernel ad ogni context-switch.
Ivan Scagnetto Gestione della memoria
Allocazione contigua: partizionamento statico
La memoria disponibile èdivisa in partizioni fisse(uguali o diverse).
Il sistema operativo mantieneinformazioni sulle partizioniallocate e quelle libere.
Quando arriva un processo,viene scelta una partizionetra quelle libere ecompletamente allocatagli.
Porta a frammentazioneinterna: la memoria allocataad un processo è superiore aquella necessaria, e quindiparte non è usata.
Oggi usato solo su hardwarepovero.
Allocazione contigua: partizionamento statico
• La memoria disponibile e divisa in
partizioni fisse (uguali o diverse)
• Il sistema operativo mantiene infor-
mazioni sulle partizioni allocate e
quelle libere
• Quando arriva un processo, viene
scelta una partizione tra quelle
libere e completamente allocatagli
• Porta a frammentazione interna:
la memoria allocata ad un proces-
so e superiore a quella necessaria, e
quindi parte non e usata.
• Oggi usato solo su hardware povero
Operating System8 M
Operating System8 M
8 M2 M
4 M
6 M
8 M
8 M
12 M
16 M
8 M
8 M
8 M
8 M
8 M
8 M
(a) Equal-size partitions (b) Unequal-size partitions
334
Ivan Scagnetto Gestione della memoria
Allocazione contigua: code di input
(a)
Multipleinput queues
Partition 4
Partition 3
Partition 2
Partition 1
Operatingsystem
Partition 4
Partition 3
Partition 2
Partition 1
Operatingsystem
700K
400K
100K
0(b)
Singleinput queue
200K
800K
Quando arriva un processo, viene scelta una partizione tra quelle libere ecompletamente allocatagli.
Una coda per ogni partizione: possibilità di inutilizzo di memoria.
Una coda per tutte le partizioni: come scegliere il job da allocare?first-fit: per ogni buco, il primo che ci entra,best-fit: il più grande che ci entra. Penalizza i job piccoli (che magari sonointerattivi. . . ).
Ivan Scagnetto Gestione della memoria
Allocazione contigua: partizionamento dinamico
Le partizioni vengono decise al runtime.Hole: blocco di memoria libera. Buchi di dimensionevariabile sono sparpagliati lungo la memoria.Il sistema operativo mantiene informazioni sulle partizioniallocate e i buchi.Quando arriva un processo, gli viene allocato unapartizione all’interno di un buco sufficientemente largo.
Ivan Scagnetto Gestione della memoria
Allocazione contigua: partizionamento dinamico
(a)
OperatingSystem 128K
320K
576K
896K
(b)
OperatingSystem
Process 1 320K
224K
352K
(c)
OperatingSystem
Process 1
Process 2
320K
224K
288K
64K
(d)
OperatingSystem
Process 1
Process 2
224KProcess 2
Process 3
320K
224K
288K
64K
(e)
OperatingSystem
Process 1
Process 3
320K
128K
96K
288K
64K
(f)
OperatingSystem
Process 1
Process 4
Process 3
320K
128K
96K
288K
64K
(g)
OperatingSystem
Process 4
Process 3
128K
96K
96K
288K
64K
(h)
OperatingSystem
Process 4
Process 3
Ivan Scagnetto Gestione della memoria
Allocazione contigua: partizionamento dinamico
Hardware necessario: niente se la rilocazione non èdinamica; base-register se la rilocazione è dinamica.Non c’è frammentazione interna.Porta a frammentazione esterna: può darsi che ci siamemoria libera sufficiente per un processo, ma non ècontigua.La frammentazione esterna si riduce con lacompattazione:
riordinare la memoria per agglomerare tutti i buchi in ununico buco,la compattazione è possibile solo se la rilocazione èdinamica,Problemi con I/O: non si possono spostare i buffer duranteoperazioni di DMA. Due possibilità:
Mantenere fissi i processi coinvolti in I/O.Eseguire I/O solo in buffer del kernel (che non si sposta mai).
Ivan Scagnetto Gestione della memoria
Overlay
Mantenere in memoriasolo le istruzioni e idati che servono in undato istante.
Necessario quando unprocesso è più grandedella memoriaallocatagli.
Gli overlay sonoimplementatidall’utente, senzasupporto particolaredal sistema operativo.
La programmazione diun programma aoverlay è complessa.
symbol table
20K
common routines
30K
overlay driver
10K
pass 2 80Kpass 170K
Ivan Scagnetto Gestione della memoria
Allocazione contigua: partizionamento dinamico
Come soddisfare una richiesta di dimensione n?First-fit: Alloca il primo buco sufficientemente grande.Next-fit: Alloca il primo buco sufficientemente grande apartire dall’ultimo usato.Best-fit: Alloca il più piccolo buco sufficientemente grande.Deve scandire l’intera lista (a meno che non sia ordinata).Produce il più piccolo buco di scarto.Worst-fit: Alloca il più grande buco sufficientementegrande. Deve scandire l’indera lista (a meno che non siaordinata). Produce il più grande buco di scarto.
In generale, gli algoritmi migliori sono il first-fit e il next-fit.Best-fit tende a frammentare molto. Worst-fit è più lento.
Ivan Scagnetto Gestione della memoria
Allocazione contigua: esempi di allocazioneAllocazione contigua: esempi di allocazione
8K
12K
22K
18K
8K
6K
14K
36K
(a) Before
Lastallocatedblock (14K)
8K
12K
6K
2K
8K
6K
14K
20 K
(b) After
Next Fit
Allocated block
Best Fit
First Fit
Free block
339Ivan Scagnetto Gestione della memoria
Swapping
Un processo in esecuzione può essere temporaneamenterimosso dalla memoria e riversato (swapped) in unamemoria secondaria (detta backing store o swap area); inseguito può essere riportato in memoria per continuarel’esecuzione.Lo spazio indirizzi di interi processi viene spostato.Backing store: dischi veloci e abbastanza larghi da tenerecopia delle immagini delle memorie dei processi che siintende swappare.
main memory
backing store
process P1
process P2
user space
operating system
swap out1
swap in2
Ivan Scagnetto Gestione della memoria
Swapping
È gestito dallo scheduler di medio termine.Allo swap-in, il processo deve essere ricaricato esattamentenelle stesse regioni di memoria, a meno che non ci sia unbinding dinamico.Roll out, roll in: variante dello swapping usata per algoritmi discheduling (a medio termine) a priorità: processi a bassa prioritàvengono riversati per permettere il ripristino dei processi apriorità maggiore.La maggior parte del tempo di swap è nel trasferimento da/per ildisco, che è proporzionale alla dimensione della memoriaswappata.Per essere swappabile, un processo deve essere “inattivo”:buffer di I/O asincrono devono rimanere in memoria, strutture inkernel devono essere rilasciate ecc.Attualmente, lo swapping standard non viene impiegato–troppocostoso.Versioni modificate di swapping erano implementate in moltisistemi, es. primi Unix, Windows 3.x.
Ivan Scagnetto Gestione della memoria
Allocazione non contigua: Paginazione
Lo spazio logico di un processo può essere allocato inmodo non contiguo: ad un processo viene allocatamemoria fisica dovunque essa si trovi.Si divide la memoria fisica in frame, blocchi di dimensionefissa (una potenza di 2, tra 512 e 8192 byte).Si divide la memoria logica in pagine, della stessadimensione.Il sistema operativo tiene traccia dei frame liberi.Per eseguire un programma di n pagine, servono n frameliberi in cui caricare il programma.Si imposta una page table per tradurre indirizzi logici inindirizzi fisici.Non esiste frammentazione esterna.Ridotta frammentazione interna.
Ivan Scagnetto Gestione della memoria
Esempio di paginazione
physical memory
page 37
6
5
page 14
page 23
2
page 01
0
frame number
0 1
1 4
2 3
3 7
page table
logical memory
page 3
page 1
page 2
page 0
Ivan Scagnetto Gestione della memoria
Schema di traduzione degli indirizzi
L’indirizzo generato dallaCPU viene diviso in
Numero di pagina p:usato come indice inuna page table checontiene il numerodel framecontenente lapagina p.Offset di pagina d :combinato con ilnumero di framefornisce l’indirizzofisico da inviare allamemoria.
page table
f
CPU
logical address
physical address
physical memory
p d f d
p
Ivan Scagnetto Gestione della memoria
Paginazione: condivisione
La paginazione permette la condivisione del codiceUna sola copia di codice read-only può essere condivisatra più processi. Il codice deve essere rientrante (separarecodice eseguibile da record di attivazione). Es.: editor,shell, compilatori, . . .Il codice condiviso appare nelle stesse locazioni logicheper tutti i processi che vi accedono.Ogni processo mantiene una copia separata dei propri dati.
Ivan Scagnetto Gestione della memoria
Paginazione: condivisione
data 27
6
5
ed 24
ed 13
2
data 11
0
3
4
6
1
page tablefor P1
process P1
data 1
ed 2
ed 3
ed 1
3
4
6
2
page tablefor P3
process P3
data 3
ed 2
ed 3
ed 1
3
4
6
7
page tablefor P2
process P2
data 2
ed 2
ed 3
ed 1
8
9
10
data 3
ed 3
Ivan Scagnetto Gestione della memoria
Paginazione: protezione
La protezione della memoria è implementata associandobit di protezione ad ogni frame.Valid bit collegato ad ogni entry nella page table
“valid” = indica che la pagina associata è nello spazio logicodel processo, e quindi è legale accedervi“invalid” = indica che la pagina non è nello spazio logico delprocesso ⇒ violazione di indirizzi (Segment violation)
Ivan Scagnetto Gestione della memoria
Allocazione non contigua: Segmentazione
È uno schema di MM chesupporta la visione utentedella memoriaUn programma è unacollezione di segmenti.Un segmento è una unitàlogica di memoria; adesempio: programmaprincipale, procedure,funzioni, variabili locali,variabili globali stack,tabella dei simbolimemoria condivisa, . . .
1
43
1
4
3
2
2
physical memoryuser space
Ivan Scagnetto Gestione della memoria
Architettura della Segmentazione
L’indirizzo logico consiste in un coppia<segment-number, offset>.
La segment table mappa gli indirizzi bidimensionalidell’utente negli indirizzi fisici unidimensionali. Ogni entryha
base: indirizzo fisico di inizio del segmentolimit: lunghezza del segmento
Segment-table base register (STBR) punta all’inizio dellatabella dei segmenti.Segment-table length register (STLR) indica il numero disegmenti usati dal programma
segment number s è legale se s < STLR.
Ivan Scagnetto Gestione della memoria
Hardware per la segmentazione
CPU
physical memory
s d
< +
trap; addressing error
no
yes
segment table
limit base
s
Ivan Scagnetto Gestione della memoria
Architettura della Segmentazione
Rilocazionedinamica, attraverso tabella dei segmenti
Condivisioneinteri segmenti possono essere condivisi
Allocazionegli stessi algoritmi dell’allocazione contiguaframmentazione esterna; non c’è frammentazione interna
Protezione: ad ogni entry nella segment table si associabit di validità: 0 ⇒ segmento illegaleprivilegi di read/write/execute
I segmenti possono cambiare di lunghezza durantel’esecuzione (es. lo stack): problema di allocazionedinamica di memoria.
Ivan Scagnetto Gestione della memoria
Architettura della Segmentazione
logical memory process P1
editor
data 1
physical memory
98553
editor
limit0 1
25286 4425
base43062 68348
segment 0
segment 1
editor
data 2
segment 0
segment 1
segment table process P1
limit0 1
25286 8850
base43062 90003
segment table process P2
data 1
data 2
90003
72773
68348
43062
logical memory process P2
Ivan Scagnetto Gestione della memoria
Implementazione della Page Table
Idealmente, la page table dovrebbe stare in registri velocidella MMU.
Costoso al context switch (carico/ricarico di tutta la tabella)Improponibile se il numero delle pagine è elevato. Es:indirizzi virtuali a 32 bit, pagine di 4K: ci sono 220 > 106
entry. A 16 bit l’una (max RAM = 256M) ⇒ 2M in registri.La page table viene tenuta in memoria principale
Page-table base register (PTBR) punta all’inizio della pagetablePage-table length register (PTLR) indica il numero di entrydella page table
Ivan Scagnetto Gestione della memoria
Paginazione con page table in memoriaPaginazione con page table in memoria
Page # Offset Frame #
Virtual Address
PageFrame
Offset
Offset
Program Paging Main Memory
P#
Page Table Ptr
Register
Page Table
Frame #
+
354
Ivan Scagnetto Gestione della memoria
Paginazione con page table in memoria
Rimane comunque un grande consumo di memoria (1page table per ogni processo). Nell’es. di prima: 100processi ⇒ 200M in page tables (su 256MB RAMcomplessivi).Ogni accesso a dati/istruzioni richiede 2 accessi allamemoria: uno per la page table e uno per i dati/istruzioni⇒ degrado del 100%.Il doppio accesso alla memoria si riduce con una cachededicata per le entry delle page tables: registri associatividetti anche translation look-aside buffer (TLB).
Ivan Scagnetto Gestione della memoria
Registri Associativi (TLB)Registri Associativi (TLB)
Page # Offset
Frame #
Virtual Address
Offset
Offset
LoadpagePage Table
Main MemorySecondaryMemory
Real Address
TranslationLookaside Buffer
TLB hit
TLB miss
Page fault
356
Ivan Scagnetto Gestione della memoria
Traduzione indirizzo logico (A′, A′′) con TLB
Il virtual page number A′ viene confrontato con tutte leentry contemporaneamente.Se A′ è nel TLB (TLB hit), si usa il frame # nel TLB.Altrimenti, la MMU esegue un normale lookup nelle pagetable in memoria, e sostituisce una entry della TLB conquella appena trovata.Il S.O. viene informato solo nel caso di un page fault.
Ivan Scagnetto Gestione della memoria
Variante: software TLB
I TLB miss vengono gestiti direttamente dal S.O.nel caso di una TLB miss, la MMU manda un interrupt alprocessore (TLB fault)si attiva una apposita routine del S.O., che gestisce lepage table e la TLB esplicitamente
Abbastanza efficiente con TLB suff. grandi (≥ 64 entries)MMU estremamente semplice ⇒ lascia spazio sul chip perulteriori cache.Molto usato (SPARC, MIPS, Alpha, PowerPC, HP-PA,Itanium. . . )
Ivan Scagnetto Gestione della memoria
Tempo effettivo di accesso con TLB
ε = tempo del lookup associativot = tempo della memoriaα = Hit ratio: percentuale dei page # reperiti nel TLB(dipende dalla grandezza del TLB, dalla natura delprogramma. . . )
EAT = (t + ε)α + (2t + ε)(1− α) = (2− α)t + ε
In virtù del principio di località, l’hit ratio è solitamente altoCon t = 50ns, ε = 1ns, α = 0.98 si ha EAT/t = 1.04
Ivan Scagnetto Gestione della memoria
Paginazione a più livelli
Per ridurre l’occupa-zione della page table,si pagina la page tablestessa.Solo le pagine effet-tivamente usate sonoallocate in memoriaRAM.
. . .memory
. . .
. . .
. . .
. . .
. . .
page table
900
929. . .
page of page table
. . .
708
100. . .
. . .
500
1. . .
. . .
outer-pagetable
0
1
100
500
708
900
929
Ivan Scagnetto Gestione della memoria
Esempio di paginazione a due livelli
Un indirizzo logico (a 32 bit con pagine da 4K) è diviso inun numero di pagina consistente in 20 bitun offset di 12 bit
La page table è paginata, quindi il numero di pagina èdiviso in
un directory number di 10 bitun page offset di 10 bit.
outer-page table
logical address
p1 dp2
p1
page of page table
p2
d
Ivan Scagnetto Gestione della memoria
Performance della paginazione a più livelli
Dato che ogni livello è memorizzato in RAM, laconversione dell’indirizzo logico in indirizzo fisico puònecessitare di diversi accessi alla memoria.Il caching degli indirizzi di pagina permette di ridurredrasticamente l’impatto degli accessi multipli; p.e., conpaginazione a 4 livelli:
EAT = α(t + ε) + (1− α)(5t + ε) = ε + (5− 4α)t
Nell’esempio di prima, con un hit rate del 98%:EAT/t = 1.1: 10% di degradoSchema molto adottato da CPU a 32 bit (IA32 (Pentium),68000, SPARC a 32 bit, . . . )
Ivan Scagnetto Gestione della memoria
Tabella delle pagine invertita
Una tabella con una entry per ogni frame, non per ognipage.Ogni entry consiste nel numero della pagina (virtuale)memorizzata in quel frame, con informazioni riguardo ilprocesso che possiede la pagina.Diminuisce la memoria necessaria per memorizzare lepage table, ma aumenta il tempo di accesso alla tabella.Questo schema è usato su diversi RISC a 32 bit(PowerPC), e tutti quelli a 64 bit (UltraSPARC, Alpha,HPPA, . . . ), ove una page table occuperebbe petabytes(es: a pagine da 4k: 8× 252 = 32PB per ogni page table)
page table
pid
CPU
logical address
physical memory
i
p
search
physical address
i dpid p d
Ivan Scagnetto Gestione della memoria
Tabella delle pagine invertita con hashing
Per ridurre i tempi di ricerca nella tabella invertita, si usa unafunzione di hash (hash table) per limitare l’accesso a pocheentry (1 o 2, solitamente).
page table
pid
CPU
logical address
physical memory
i
p
search
physical address
i dpid p d
Ivan Scagnetto Gestione della memoria
Segmentazione con paginazione: MULTICS
Il MULTICS ha risolto il problema della frammentazioneesterna paginando i segmenti.Permette di combinare i vantaggi di entrambi gli approcci.A differenza della pura segmentazione, nella segment tableci sono gli indirizzi base delle page table dei segmenti.
Ivan Scagnetto Gestione della memoria
Segmentazione con paginazione: MULTICS
memory
s d
+
segment table
segment length
page–tablebase
logical address
≥
trap
no
STBRp d'
d
+ f d'f
physical address
page table forsegment s
yes
Ivan Scagnetto Gestione della memoria
Segmentazione con paginazione a 2 livelli: la IA32
physical address
selector offset
+
page table entry
logical address
page frame
page table
directory entry
page directory
segment descriptor
descriptor table
directorylinear address page offset
page directorybase register
Ivan Scagnetto Gestione della memoria
Sommario sulle strategie della Gestione dellaMemoria
Supporto Hardware: da registri per base-limite a tabelle dimappatura per segmentazione e paginazione.Performance: maggiore compessità del sistema, maggioretempo di traduzione. Un TLB può ridurre sensibilmentel’overhead.Frammentazione: la multiprogrammazione aumental’efficienza temporale. Massimizzare il num. di processi inmemoria richiede ridurre spreco di memoria non allocabile.Due tipi di frammentazione.Rilocazione: la compattazione è impossibile con bindingstatico/al load time; serve la rilocazione dinamica.
Ivan Scagnetto Gestione della memoria
Sommario sulle strategie della Gestione dellaMemoria
Swapping: applicabile a qualsiasi algoritmo. Legato allapolitica di scheduling a medio termine della CPU.Condivisione: permette di ridurre lo spreco di memoria equindi aumentare la multiprogrammazione. Generalmente,richiede paginazione e/o segmentazione. Altamenteefficiente, ma complesso da gestire (dipendenze sulleversioni).Protezione: modalità di accesso associate a singolesezioni dello spazio del processo, in caso disegmentazione/paginazione. Permette la condivisione el’identificazione di errori di programmazione.
Ivan Scagnetto Gestione della memoria