Gestione della memoria

annuncio pubblicitario
Ogni processo che deve essere eseguito
da un sistema di elaborazione, deve essere
caricato e risiedere almeno parzialmente
nella memoria centrale
 Durante lo scheduling della CPU, essa viene
associata ciclicamente a più processi.
 Per essere efficiente il sistema di
elaborazione, i processi devono risiedere
contemporaneamente in memoria
centrale
 È compito opportuno di un modulo di
gestire la memoria centrale

Le problematiche relative alla gestione della memoria
sono le seguenti:
 Differente velocità di accesso della CPU ai propri
registri interni o all’esecuzione di una istruzione. Ciò
provoca un rallentamento del processore. L’utilizzo di
una memoria cache rende più veloce l’accesso ai
dati
 Più processi possono invadere la memoria dedicata
a processi di sistemi o ad altri; il sistema operativo
gestisce gli spazi affinchè ciò non avvenga
 Nel corso di esecuzione un processo può essere
spostato dalla memoria centrale ad una memoria di
massa. Il sistema operativo deve fare in modo che il
processo possa comunque avanzare





Lo swapping è una operazione di caricamento
e scaricamento di un processo
Avviene quando nella memoria centrale ci
sono troppi processi in coda
Alcuni processi vengono caricati in una
memoria ausiliaria
Gli scheduler che decidono di portare a
termine un processo nella memoria ausiliaria,
affidano al dispatcher il compito di reperire i
processi interessati.
Il dispatcer però cerca i processi prima tra i
pronti e poi, nella memoria ausiliaria






Gli indirizzi simbolici sono quelli cui fanno riferimento le
applicazioni e sono generalmente indici, contatori, etichette
Gli indirizzi rilocabili sono gli indirizzi di partenza delle
applicazioni ma non si riferiscono alla collocazione assoluta in
memoria.
Gli indirizzi assoluti vengono generarti in fase di caricamento del
processo o di compilazione o, come nella maggior parte dei
sistemi operativi, in fase di esecuzione
Gli indirizzi logici sono quelli generati da un programma.
L’insieme degli indirizzi logici è detto spazio degli indirizzi logici
Gli indirizzi fisici sono la locazione fisica vera e propria di un
programma all’interno della memoria. L’insieme degli indirizzi
fisici è detto spazio degli indirizzi fisici
Ad ogni indirizzo logico, viene attribuito un indirizzo fisico,
sommando l’indirizzo logico con l’indirizzo di locazione





Con l’avvento del multitasking più processi possono essere
caricati contemporaneamente e la memoria deve essere
ripartita.
Le partizioni non sono tutte della stessa dimensione;
l’estensione viene stabilita a priori
Appena si libera una partizione, viene selezionato un
nuovo processo
Un processo va ad occupare solo la porzione di memoria
che realmente gli occorre. Se avanzano degli spazi di
memoria si creano dei buchi. Il sistema operativo mette a
disposizione una tabella di partizioni fisse.
Partizione variabile:è una tecnica più moderna della
precedente; il frazionamento della memoria viene stabilito
volta per volta dal sistema operativo. Le dimensioni delle
partizioni non sono fisse ma vengono stabilite volta per
volta.



Si assegna al primo processo la prima area libera sufficientemente grande da
contenerlo; al secondo processo la seconda area libera sempre sufficientemente
grande da contenerlo e così via.
Sia allora la seguente tabella dei processi con le rispettive dimensioni e la tabella delle
partizioni di memoria:
Processi
dimensioni
P1
250 kB
P2
400 kB
P3
150 kB
P4
50 kB
P5
125 kB
Le assegnazioni sono le seguenti:
Aree
dimensioni
A
200 kB
B
140 kB
C
250 kB
D
500 kB
E
450 kB
processi
Aree
P1
C
P2
D
P3
A
P4
B
P5
E



Per migliorare la tecnica precedente, si associa ad ogni processo l’area di memoria più
piccola ma sufficientemente grande da contenere ogni processo.
Si ordina allora la tabella della memoria per ordine crescente.
In base all’esempio precedente, la tabella dei processi e delle aree di memoria sarà la
seguente:
Processi
Aree
P1
C
P2
E
P3
A
P4
B
P5
D

Con tale tecnica si associa ai processi
l’area più grande possibile. Si ordina la
tabella per ordine decrescente e, la
relazione tra processi e aree di memoria
sarà:
Processi
Aree
P1
D
P2
E
P3
C
P4
A
P5
B
In ognuno dei metodi precedenti lascia
delle aree di memoria libere dando vita
alla frammentazione esterna
 Riordinando le aree di memoria e
riunendole insieme, si effettua la
compattazione rendendo i residui aree
disponibili.

Metodo molto efficace utilizzato nei s.o. per
la gestione della memoria
 Consiste nel dividere lo spazio logico del
processo in parti uguali detti pagine; la
memoria fisica viene divisa in parti della
stessa dimensione delle pagine e sono detti
frame
 Ogni pagina viene posta in un frame
 Le pagine non occupano spazi adiacenti di
memoria per cui, c’è bisogno di una
tabella delle pagine

Memoria
logica
Pag. 0
Pag. 1
Pag. 2
Pag. 3
Mem
fisica
Pag.
Frame
2
0
0
3
3
1
5
1
2
0
3
1
2
0
3
4
1
5
Il numero di frame in cui può essere divisa una memoria è dato da
dimensione memoria/dimensione pagina






Lo spazio logico di un processo viene diviso in un
numero m di pagine di k byte ciascuna
Lo spazio fisico della memoria viene diviso in n frame
di k1 byte
La tabella delle pagine mette in relazione il numero
di pagine con il numero di frame
Es nella gestione della memoria in DOS, si effettua la
divisione in quattro segmenti: segmento codice,
segmento dati, segmento stack e segmento extra
All’interno di un segmento si può accedere
indicando lo scostamento, cioè la distanza dall’inizio
Ogni indirizzo logico è quindi individuato dal nome
del segmento s dallo scostamento d
Un programma può essere suddiviso in
procedure e funzioni
 Lo spazio logico può essere diviso in
segmenti ognuno dei quali contiene un
modulo o una struttura dati diversi





Un processo per essere eseguito può risiedere
in memoria centrale ma anche in memoria di
massa
Quando i programmi sono molto ampi possono
prevedere una parte del codice utilizzato
raramente
Conviene allora non caricare tutto il codice in
memoria ma solo in parte. Risulta più utile
caricare solo il codice che serve
La memoria di massa e quella centrale sono
viste come un’unica memoria detta virtuale e
lo spazio degli indirizzi è detto spazio degli
indirizzi virtuali
Tecnica che permette di caricare in
memoria centrale solo le pagine
necessarie e le altre le altre in memoria
di massa
 Il paginatore è un modulo del sistema
operativo che carica le pagine utili nella
memoria centrale

Scarica