La gestione della memoria - Home di homes.di.unimi.it

annuncio pubblicitario
La gestione della memoria
Lezione 30
Sistemi Operativi
Background
•  Un programma per poter essere eseguito deve
essere caricato in memoria
•  Per questioni prestazionali devono essere caricati in
memoria contemporaneamente più processi
•  L accesso a memoria centrale è una delle operazioni
più frequenti effettuate da un processo
•  Accesso ai dati e al codice
•  La tecnica di gestione della memoria ha quindi un
effetto determinante sulle prestazioni del sistema
A.A. 2010/2011
2
Corso: Sistemi Operativi
© Danilo Bruschi
Prestazioni
•  Calcoliamo l utilizzo della CPU in un sistema
monoprogrammato
•  Se l unico processo spende in media 40% del tempo
di esecuzione in attesa di I/O, l utilizzo complessivo
della CPU è
0.6 = 1 – 0.4
•  Per migliorare questo parametro dobbiamo ridurre il
tempo in cui la CPU è inattiva
•  Fare in modo che quando un processo esegue I/O il
microprocessore venga usato per altre attività
A.A. 2010/2011
3
Corso: Sistemi Operativi
© Danilo Bruschi
Prestazioni
•  Con due processi in esecuzione, ciascuno con
percentuale di I/O pari al 40%, l utilizzo della CPU
diventa
0.84 = 1 - 0.16
•  Generalizzando
•  Siano dati n processi indipendenti
•  Ciascun processo spende una frazione p del proprio tempo
di esecuzione in attesa di I/O
•  Non usa la CPU
•  La probabilità che tutti gli n processi siano in attesa è pn
•  L utilizzazione della CPU è 1 - pn
•  Quando tutti i processi sono in attesa, la CPU è idle
A.A. 2010/2011
4
Corso: Sistemi Operativi
© Danilo Bruschi
Memoria e prestazioni
Livello di multiprogrammazione
A.A. 2010/2011
5
Corso: Sistemi Operativi
© Danilo Bruschi
Osservazioni
•  Se i programmi sono I/O bound, molti programmi
devono essere in esecuzione per raggiungere un
elevato utilizzo di CPU
•  Aumentare la memoria centrale di un sistema non fa
aumentare l utilizzo di CPU in misura proporzionale
all incremento del livello di multiprogrammazione
•  L efficacia dipende dal livello corrente di utilizzo
•  Pendenza della curva di utilizzo
A.A. 2010/2011
6
Corso: Sistemi Operativi
© Danilo Bruschi
Requisiti Memory Manager
•  La presenza contemporanea in memoria di
più processi e la loro esecuzione
concorrente è possibile solo se il MM è in
grado di garantire la loro coesistenza
evitando ogni tipo di interferenza non
espressamente richiesta
A.A. 2010/2011
7
Corso: Sistemi Operativi
© Danilo Bruschi
Due diverse visioni della memoria
•  Dal punto di vista hardware: un insieme di byte da
condividere tra più processi
•  Dal punto di vista dei processi: un insieme di byte
dedicato
•  Il Memory Manager deve consentire a queste due
visioni di coesistere e lo fa (con il supporto dell’hw)
garantendo il soddisfacimento dei seguenti requisiti:
•  Rilocazione: ogni processo può essere caricato in qualunque
indirizzo fisico
•  Protezione: un processo non può accedere (se non
autorizzato) allo spazio di memoria di un altro processo
•  Sharing: alcuni spazi di memoria fisica possono essere
condivisi tra processi
A.A. 2010/2011
8
Corso: Sistemi Operativi
© Danilo Bruschi
Rilocazione:
Symbolic names → Logical names → Physical names
•  Lo spazio di indirizzamento di un programma
è costituito da nomi simbolici cioè gli
identificatori che il programmatore assegna a
variabili, label e procedure
•  Lo spazio degli indirizzi simbolici viene
trasformato in spazio logico dal compilatore/
linker
•  Lo spazio logico deve poi essere mappato
sullo spazio fisico, cioè sulle effettive
locazioni di memoria che conterranno dati e
istruzioni
A.A. 2010/2011
9
Corso: Sistemi Operativi
© Danilo Bruschi
Indirizzi logici & fisici
•  In generale definiamo:
•  Logici: indirizzi generati dalla CPU a seguito
dell elaborazione (decode) degli indirizzi degli
operandi presenti in un istruzione
•  Fisici: indirizzi che giungono sul bus indirizzi alla
memoria centrale e denotano una precisa
locazione di memoria
•  Raramente indirizzi logici e fisici coincidono,
l operazione di associazione tra indirizzi logici
e fisici è chiamata binding
A.A. 2010/2011
10
Corso: Sistemi Operativi
© Danilo Bruschi
Rilocazione e Binding
•  Il processo attraverso cui si riassegna un
nuovo valore agli indirizzi (logici o fisici) di dati
e istruzioni di un programma
•  Binding: l’operazione effettuata dal processo
di rilocazione per assegnare a dati e istruzioni
di un processo un valore in un determinato
spazio di indirizzi
•  In seguito indichiamo con binding, solo
l’operazione limitata all’assegnazioni di
indirizzi di memoria centrale
A.A. 2010/2011
11
Corso: Sistemi Operativi
© Danilo Bruschi
Binding
•  Il binding può essere effettuato in momenti diversi:
•  Compile time:
•  Se in fase di compilazione è gia noto lo spazio di memoria
fisica che dovrà contenere il processo, è possibile generare
codice assoluto; qualora lo spazio fisico dovesse essere
modificato sarà necessario ricompilare il codice
•  Se lo spazio di memoria fisico che conterrà il programma
non è noto alla compilazione, il compilatore associerà al
programma uno spazio logico (rilocabile) che potrà essere
mappato sullo spazio fisico:
•  Load time: durante il caricamento del programma da memoria
di massa a memoria centrale
•  Execution time: durante la fase di escuzione di un’istruzione di
provvede a rilocare opportunamente gli indirizzi in essa
contenuti. In questo caso è necessario un supporto hw per lo
svolgimento dell’operazione
A.A. 2010/2011
12
Corso: Sistemi Operativi
© Danilo Bruschi
Binding time tradeoff
•  Early binding (compilatore)
•  Produce codice efficiente
•  Consente di anticipare in fase di compilazione una serie di
verifiche
•  Delayed binding (linker e Loader)
•  Produce codice efficiente
•  Consente compilazioni separate
•  Facilità portabilità e condivisione del codice
•  Late binding (VM, linker/loader dinamici, overlay)
•  Codice meno efficiente
•  Check a runtime
•  Molto flessibile, consente riconfigurazioni a run time
A.A. 2010/2011
13
Corso: Sistemi Operativi
© Danilo Bruschi
Memory Management Unit (MMU)
•  Dispositivo hardware che mappa indirizzi
logici in indirizzi fisici
•  La trasformazione degli indirizzi viene effettuata
ogni volta che in indirizzo viene prelevato dalla
CPU dall’istruzione e inviato sul bus indirizzi
•  La CPU elabora solo indirizzi logici che sono
poi trasformati dalla MMU
A.A. 2010/2011
14
Corso: Sistemi Operativi
© Danilo Bruschi
Rilocazione dinamica
A.A. 2010/2011
15
Corso: Sistemi Operativi
© Danilo Bruschi
Protezione
•  I processi non devono poter accedere ad aree di memoria di
altri processi senza permesso
mov
loop mov
add
jmp
end ret
eax,end
(eax),0
eax,4
loop
•  Poiché è impossibile controllare a priori quali indirizzi di
memoria un programma referenzierà i riferimenti alla memoria
devono essere verificati durante l esecuzione
•  Memory protection requirement must be satisfied by the
processor (hardware) rather than the operating system
(software)
A.A. 2010/2011
16
Corso: Sistemi Operativi
© Danilo Bruschi
Protezione
A.A. 2010/2011
17
Corso: Sistemi Operativi
© Danilo Bruschi
Sharing
•  Il MM deve consentire a più processi di
accedere ad una porzione condivisa di
memoria
•  Nel caso di porzioni di codice è opportuno
prevedere la possibilità che più processi
possano condividere la stessa copia di
programma, piuttosto che prevedere la stessa
copia per ogni processo
A.A. 2010/2011
18
Corso: Sistemi Operativi
© Danilo Bruschi
Allocazione memoria
•  Suddivisione della memoria in unità minime allocabili
•  Associazione a ciascuna unità di un bit
•  Libera/occupata
•  Dimensione della tabella
•  1 bit ogni unità allocabile di k bit
•  Ricerca di successioni di n bit a zero nella bitmap per
trovare aree libere di dimensioni adeguate al
programma da caricare
•  Semplice ma inefficiente
A.A. 2010/2011
19
Corso: Sistemi Operativi
© Danilo Bruschi
Allocazione Memoria
A.A. 2010/2011
20
Corso: Sistemi Operativi
© Danilo Bruschi
Liste per allocazione memoria
•  Aree libere contigue vengono compattate
•  Quando si usano le liste linkate, può essere più efficiente
fare ricorso a liste doppiamente linkate
A.A. 2010/2011
21
Corso: Sistemi Operativi
© Danilo Bruschi
Strategie di allocazione
•  First Fit: il primo buco sufficientemente
grande per contenere il processo
•  Best Fit: il più piccolo buco sufficientemente
grande per contenere il processo
•  Worst Fit: il più grande buco che possa
contenere il processo
A.A. 2010/2011
22
Corso: Sistemi Operativi
© Danilo Bruschi
Tecniche di gestione della memoria
Memory management
techniques
Contiguous
allocation
Single partition
allocation
Multiple partition
allocation
Fixed partition
A.A. 2010/2011
Non contiguous
allocation
paging
Segmentation
Variable partition
23
Corso: Sistemi Operativi
© Danilo Bruschi
Gestione della memoria
1  Partizioni fisse
2  Partizioni variabili
3  Segmentazione
4  Paginazione
Primi computer"
OGGI: PDAs, smartcards"
SO moderni"
•  Criteri di riferimento
1  Efficienza implementativa
2  Sfruttamento della risorsa (spazio lasciato
inutilizzato)
A.A. 2010/2011
24
Corso: Sistemi Operativi
© Danilo Bruschi
Partizioni multiple fisse
•  Memoria a partizioni fisse
•  Code separate per ogni partizione
•  possibile sotto utilizzo del sistema
•  Singola coda di input
A.A. 2010/2011
25
Corso: Sistemi Operativi
© Danilo Bruschi
Partizioni multiple fisse: criticità
•  Le partizioni fisse hanno avuto un certo successo in
sistemi di tipo batch
•  Relativa staticità dei programmi eseguiti su un sistema
•  Con l avvento dei sistemi time sharing, i problemi
principali da risolvere sono diventati:
•  dover gestire processi la cui dimensione, nel complesso, era
di gran lunga superiore di quella della memoria centrale
•  Dover gestire processi la cui dimensione era fortemente
variabile
A.A. 2010/2011
26
Corso: Sistemi Operativi
© Danilo Bruschi
Partizionamento guidato dai processi
Spazio per la
crescita dello
stack e del
segmento
dati
Spazio per
la crescita
del segmento
dati
•  Le dimensioni di un processo cambiano durante
l esecuzione va quindi prevista la possibilità di
l espansione
A.A. 2010/2011
27
Corso: Sistemi Operativi
© Danilo Bruschi
Partizioni multiple variabili
•  Numero, dimensione e posizione delle partizioni cambiano col variare dei
processi in memoria
•  Lo stato della memoria si modifica continuamente
• 
• 
I processi accedono alla memoria centrale
Lasciano la memoria per poi rientrarvi, non necessariamente nello stesso posto occupato in
precedenza
A.A. 2010/2011
28
Corso: Sistemi Operativi
© Danilo Bruschi
Partizioni multiple variabili: criticità
•  Gestione delle zone libere e occupate della
memoria centrale
•  Frammentazione esterna
•  Degli spazi liberi
A.A. 2010/2011
29
Corso: Sistemi Operativi
© Danilo Bruschi
Frammentazione esterna
•  Frazionamento della memoria libera in piccoli
pezzi inutilizzabili
•  Una possibile soluzione è l adozione di
strategie di compressione della memoria
centrale
•  Operazione molto costosa in termini di efficienza
del sistema
•  Non esistono strategie ottimali
A.A. 2010/2011
30
Corso: Sistemi Operativi
© Danilo Bruschi
Paginazione
•  Problema: con gli schemi a partizione è
possibile caricare in memoria un processo
solo quando si trova una porzione di memoria
contigua, che possa contenere l intero
processo => il processo di allocazione può
richiedere parecchio tempo
•  Soluzione
•  Suddivido la memoria fisica e logica in blocchi di
dimensioni uguali (1024 byte), chiamo i primi
frame e gli altri pagine , carico un processo
quando ho a disposizione un numero di pagine
sufficiente a contenerlo
A.A. 2010/2011
31
Corso: Sistemi Operativi
© Danilo Bruschi
Paginazione
Frame 0
Frame 1
Frame 2
Pagina 1
Frame 3
Pagina 2
Frame 4
Pagina 3
Frame 6
Pagina 4
Frame :
Frame n-1
Frame n
A.A. 2010/2011
32
Corso: Sistemi Operativi
© Danilo Bruschi
Paginazione
•  In un sistema paginato gli indirizzi logici di
memoria sono espressi da una coppia <p,d>,
a cui va associato in fase di esecuzione un
indirizzo fisico lineare, che esprime la
locazione esatta del dato o istruzione in
memoria
A.A. 2010/2011
33
Corso: Sistemi Operativi
© Danilo Bruschi
Calcolo degli indirizzi
•  In un sistema paginato con pagine di 256
byte l indirizzo 26251 sarà rappresentato
dalla copia
•  p = 26251 DIV 256 = 102
•  d = 26252 MOD 256 = 139
•  Per conoscere l indirizzo fisico associato alla
locazione di indirizzo logico <102, 139>
dobbiamo conoscere in quale frame è stata
caricata la pagina 102
•  Indirizzo fisico = n.ro frame* 256 + d
A.A. 2010/2011
34
Corso: Sistemi Operativi
© Danilo Bruschi
Paginazione
•  Con pagine di dimensione 2k, per il calcolo degli
indirizzi fisici si sfrutta l indirizzo logico
•  I k bit meno significativi dell indirizzo logico individuano lo
spiazzamento all interno della pagina
•  I restanti bit più significativi individuano il numero della
pagina
•  Il numero di pagina si usa come indice nella tabella delle
pagine
•  Il valore trovato in corrispondenza è il numero di page frame
associato alla pagina
•  Se la pagina è presente in memoria, il numero di page frame
è copiato nei bit alti del registro di output e concatenato ai k
bit bassi dell offset
•  ES: 26251: 000001100110 10001011
A.A. 2010/2011
35
Corso: Sistemi Operativi
© Danilo Bruschi
Tabella delle pagine
A.A. 2010/2011
36
Corso: Sistemi Operativi
© Danilo Bruschi
Supporti necessari
•  Un sistema che offre la paginazione deve
gestire le seguenti strutture dati
•  Tabella dei frame
•  Tabella delle pagine, che definisce l associazione
pagina à frame
•  una per ogni processo in esecuzione o in attesa di
esecuzione
•  Per ogni riferimento a memoria è necessario
accedere alla tabella della pagine, l operazione
deve essere resa efficiente con il supporto
dell HW
A.A. 2010/2011
37
Corso: Sistemi Operativi
© Danilo Bruschi
Tabella delle pagine
Elemento di una tabella delle pagine
A.A. 2010/2011
38
Corso: Sistemi Operativi
© Danilo Bruschi
Tabella delle pagine
•  La dimensione della tabella può essere molto
elevata
•  Con pagine di 4KB
•  1 milione di pagine con indirizzi di 32 bit, quindi 1 milione
di elementi nella tabella
•  L associazione pagina- frame deve essere
molto efficiente
•  Eseguita per ogni riferimento alla memoria
•  Un istruzione richiede almeno 1 accesso
•  Servono soluzioni specifiche
A.A. 2010/2011
39
Corso: Sistemi Operativi
© Danilo Bruschi
Tabella delle pagine a due livelli
Top-level "
page table"
A.A. 2010/2011
40
Corso: Sistemi Operativi
© Danilo Bruschi
Tabella delle pagine invertita
La tabella indicizza i frame di memoria fisica
Un TLB permette la ricerca delle pagine più usate
A.A. 2010/2011
41
Corso: Sistemi Operativi
© Danilo Bruschi
Paginazione
• 
Procedura di caricamento di un programma
in un ambiente multiprogrammato
1.  Long term scheduling verifica disponibilità dei frame in
memoria centrale
2.  Il processo viene caricato in MC e la sua tabella delle
pagine compilata e agganciata al PCB
3.  Quando il processo va in esecuzione la sua tabella delle
pagine viene caricata in quella del sistema
A.A. 2010/2011
42
Corso: Sistemi Operativi
© Danilo Bruschi
Tabella delle pagine di sistema
•  Esistono tre alternative per implementarla
•  Registri specializzati
•  Molto efficiente in esecuzione ma molto costosa per tabelle di
grosse dimensioni, soprattutto in context switch
•  Esiste un registro che indirizza la tabella delle pagine del
processo in esecuzione, tra quelle di tutti i processi del
sistema; la tabella sta in memoria
•  Lenta richiede due accessi a memoria centrale per recuperare
le informazioni
•  Registri associativi
•  Implementano un Translation Lookaside Buffer di 32-1024
elementi
A.A. 2010/2011
43
Corso: Sistemi Operativi
© Danilo Bruschi
TLBs – Translation Lookaside Buffers
A.A. 2010/2011
44
Corso: Sistemi Operativi
© Danilo Bruschi
TLB
A.A. 2010/2011
45
Corso: Sistemi Operativi
© Danilo Bruschi
Scarica