Memoria La memoria è un vettore di stringhe di bit (word/parole) In memoria è allocato il Sistema...

12
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.

Transcript of Memoria La memoria è un vettore di stringhe di bit (word/parole) In memoria è allocato il Sistema...

Page 1: 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.

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.

Page 2: 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.

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 run-time solo la porzione di codice che serve.

Page 3: 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.

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.

Programma

S.O.

Part 1

Part 2

Part 3

Page 4: 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.

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.

Page 5: 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.

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

Page 6: 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.

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.

SO

PG1

PG2

PG3

ID DIM IND

1 50 100

2 50 180

3 50 250

100K

150K

180K

210K

250K

300K

ID DIM IND

1 30 150

2 40 210

Page 7: 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.

Frammentazione

Gli spazi residui in memoria possono essere:

Troppo piccoli per contenere un programma

La loro dimensione totale contiene invece un programma.

Questa condizione è detta di frammentazione dello spazio residuo.

SO

PG1

PG2

PG3

100K

150K

180K

210K

250K

300K

Page 8: 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.

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.

Page 9: 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.

Paginazione

È necessario avere due Tabelle:

Tabella dei blocchi di memoria.

Tabella delle pagine in memoria.

Page 10: 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.

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.

Page 11: 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.

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).

Page 12: 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.

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.