Gestione della memoria Introduzione Ogni processo che deve

  • Slides: 21
Download presentation
Gestione della memoria

Gestione della memoria

Introduzione Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere

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 memoria Le problematiche relative alla gestione della memoria sono le seguenti: �

Gestione della memoria 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

Swapping � � � Lo swapping è una operazione di caricamento e scaricamento di

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

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

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

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: Processi dimensioni P 1 250 k. B P 2 400 k. B P 3 150 k. B P 4 50 k. B P 5 125 k. B Le assegnazioni sono le seguenti: Aree dimensioni A 200 k. B B 140 k. B C 250 k. B D 500 k. B E 450 k. B processi Aree P 1 C P 2 D P 3 A P 4 B P 5 E

Best fit � Per migliorare la tecnica precedente, si associa ad ogni processo l’area

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 Aree P 1 C P 2 E P 3 A P 4 B P 5 D

Worst fit � Con tale tecnica si associa ai processi l’area più grande possibile.

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 Aree P 1 D P 2 E P 3 C P 4 A P 5 B

Compattazione � In ognuno dei metodi precedenti lascia delle aree di memoria libere dando

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 �

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 Mem fisica Memoria logica Pag. 0 Pag. 1 Pag. 2

Paginazione: tabella delle pagine Mem fisica Memoria logica Pag. 0 Pag. 1 Pag. 2 Pag. 3 Pag. Frame 2 0 0 3 3 1 1 5 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

Paginazione � � � Lo spazio logico di un processo viene diviso in un

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 k 1 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 è quindividuato dal nome del segmento s dallo scostamento d

Segmentazione � Un programma può essere suddiviso in procedure e funzioni � Lo spazio

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

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

Paginazione su richiesta � Tecnica che permette di caricare in memoria centrale solo le pagine necessarie e le altre in memoria di massa � Il paginatore è un modulo del sistema operativo che carica le pagine utili nella memoria centrale