Gestione della memoria
Introduzione 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
Gestione della memoriaLe 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
Swapping 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
Indirizzi 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
Allocazione della memoria 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.
First Fit 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:
Le assegnazioni sono le seguenti:
Processi dimensioni
P1 250 kBP2 400 kBP3 150 kBP4 50 kBP5 125 kB
Aree dimensioni
A 200 kBB 140 kBC 250 kBD 500 kBE 450 kB
processi AreeP1 CP2 DP3 AP4 BP5 E
Best fit 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 AreeP1 CP2 EP3 AP4 BP5 D
Worst fit 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 AreeP1 DP2 EP3 CP4 AP5 B
Compattazione 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.
Paginazione 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
Paginazione: tabella delle pagine
Memoria logica
Pag. 0Pag. 1Pag. 2Pag. 3
Pag. Frame 0 31 52 03 1
Mem
fisica23
0
1
0
12345
Il numero di frame in cui può essere divisa una memoria è dato da dimensione memoria/dimensione pagina
Paginazione Lo spazio logico di un processo viene diviso in un
numero m di pagine di k byte ciascuna Lo spazio fisico della memori 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
Segmentazione 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
Memoria virtuale 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
Paginazione su richiesta 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