Memoria

La memoria è un vettore di stringhe di bit (word/parole)

In memoria è allocato il Sistema Operativo.



In memoria sono allocati i programmi per poter essere
processati.
I programmi possono essere ripetutamente spostati in
memoria e dalla memoria al disco rigido in modo da poter
tenere in memoria quello che serve.
Ogni volta la posizione “fisica” in memoria cambia.
Rilocazione della memoria



Tecnica con cui si traducono gli indirizzi virtuali in quelli fisici.
Rilocazione statica: il programma va tutto in memoria prima
della sua esecuzione
Rilocazione dinamica: in memoria fisica viene allocato runtime solo la porzione di codice che serve.
Allocazione


A singola partizione: oltre alla fetta per il S.O., quella residua
è occupata da un unico programma (sistemi
monoprogrammati).
A partizioni multiple: oltre alla fetta occupata dal S.O. La
parte residua è divisa in più parti di dimenzioni prestabilite.
S.O.
S.O.
Part 1
Programma
Part 2
Part 3
Partizioni statiche

La dimensione delle partizioni è stabilita dal sistemista.

Il numero è stabilito dal sistemista.

Non si può più variarle o solo se si riconfigura tutto.

Vantaggio: gestione semplice della memoria

Svantaggio: spreco di spazio inutilizzato o

Svantaggio: impossibilità a caricare programmi troppo
grandi.
Partizioni dinamiche


Le partizioni non sono fissate a priori.
Ogni volta che il MMU deve allocare un programma in RAM ne
viene creata una

La loro dimensione è variabile

Il loro numero è variabile
Partizioni dinamiche


Tabella delle partizioni: il MMU dispone di una tabella dove sono
annotati indirizzi e dimensioni delle partizioni.
Tabella delle aree libere: il MMU dispone di una tabella dove sono
annotati indirizzi e dimensioni delle aree libere.
ID
DIM
IND
100K
1
50
100
150K
2
50
180
3
50
250
ID
DIM
IND
1
30
150
2
40
210
SO
PG1
180K
PG2
210K
250K
PG3
300K
Frammentazione



Gli spazi residui in memoria
possono essere:
Troppo piccoli per contenere un
programma
La loro dimensione totale
contiene invece un programma.
SO
100K
PG1
150K
180K
PG2
210K

Questa condizione è detta di
frammentazione dello spazio
residuo.
250K
PG3
300K
Paginazione

La memoria centrale è suddivisa in blocchi di eguale
dimensione.

I programmi sono divisi in parti chiamate pagine.

Pagine e blocchi hanno eguali dimensioni.

Un programma può essere allocato in memoria se ci sono
un numero di blocchi liberi superiore a quello delle pagine in
cui il programma è diviso.
Con la paginazione, infatti, le pagine di uno stesso programma
che sono contigue vengono allocate in memoria anche se i
blocchi non sono contigui. In questo modo si evita la
frammentazione.
Paginazione

È necessario avere due Tabelle:

Tabella dei blocchi di memoria.

Tabella delle pagine in memoria.
La memoria virtuale

I programmi non sono realmente caricati in memoria per
intero, ma solo parzialmente, per quella parte che è in
esecuzione in un certo istante.

Ogni programma è suddiviso in fette (pagine o segmenti)

La memoria è suddivisa in blocchi

Anche programmi ampi possono essere elaborati, basta
portare in memoria la “fetta” che interessa e rimetterla nel
disco dopo che è stata processata.
La memoria virtuale





Virtualmente possiamo avere una memoria virtuale grande
quando vogliamo gestendo ogni volta swap-in e swap-out
Realisticamente, lo swapping è una operazione lenta perchè
coinvolge il disco rigido che è lento rispetto alla ram. Una
memoria virtuale eccessiva rallenta il sistema.
Si deve spezzettare il programma
Si deve caricare in memoria solo alcuni pezzetti lasciando il
resto su memoria di massa
Se serve una pagina non presente in rama si carica da
disco (interrupt di page fault).
La segmentazione





È alternativa alla paginazione
I programmi non sono divisi in fette di dimensione fissa ma
in fette di dimensione variabile
La divisione in fette non è basata su un criterio di spazio
fisico disponibile ma è fatta dal programmatore sulla base
del contenuto del programma usando un criterio logico
Il programmatore può decidere di usare segmenti più piccoli
per certe parti del programma che usano molti dati da
memorizzare.
La divisione è più efficiente.
Scarica

MMU - Antonio Vasco