Che materia stai cercando?

Gestione della memoria centrale

Appunto/dispensa sulla gestione della memoria centrale. Descrizione della memoria e dei metodi di gestione Appunti di basati su appunti personali del publisher presi alle lezioni del prof. Carta dell’università degli Studi di Cagliari - Unica. Scarica il file in formato PDF!

Esame di Sistemi operativi docente Prof. S. Carta

Anteprima

ESTRATTO DOCUMENTO

PAGINAZIONE

La paginazione è un metodo di gestione della memoria che permette che lo spazio degli indirizzi

non sia contiguo, risolvendo il problema dell’utilizzo di una memoria ausiliaria.

La sua implementazione si basa sulla suddivisione della memoria fisica in blocchi di memoria

costante, detti frame o pagine fisiche, e sulla suddivisione della memoria logica in blocchi di pari

dimensione, detti pagine. La dimensione delle pagine dipende dall’architettura del calcolatore, ed è

una potenza di 2 compresa tra 512 byte e 16 MB. Quando si deve caricare un processo, si caricano

le sue pagine nei frame disponibili dalla memoria ausiliaria, che è divisa in blocchi di dimensione

fissa, uguale a quella dei frame. L’indirizzo logico generato dalla CPU è

diviso in due campi:

1. numero di pagina p;

2. scostamento di pagina d.

Il valore di p è usato come indice nella

tabella delle pagine, che contiene

l’indirizzo di base in memoria fisica per

ogni pagina. L’indirizzo di base viene

combinato con lo scostamento d per

determinare l’indirizzo fisico.

n

Supponendo che la dimensione di una pagina sia 2 e che la dimensione dello spazio degli indirizzi

m

logici sia 2 , allora i bit dell’indirizzo logico sono così suddivisibili:

n-m bit n bit

Numero di pagina p Scostamento di pagina d

La paginazione non soffre di frammentazione esterna, in quanto qualsiasi frame libero può essere

assegnato, mentre si può verificare quella interna in quanto l’ultimo frame assegnato potrebbe non

essere completamente pieno, dato che la dimensione di un processo generalmente non è multiplo

della dimensione delle pagine.

Quando si deve eseguire un processo si valuta la sua dimensione in termini di pagine. Poiché ogni

pagina deve occupare un frame, se il processo è formato da n pagine sono necessari n i frame; se

questi frame sono liberi essi vengono assegnati. SI carica la prima pagina, e poi la successiva in un

altro frame libero, aggiornando la tabella delle pagine del processo in questione.

La tabella dei frame contiene un elemento per ogni frame, del quale indica se è assegnato o meno,

e se lo è, indica a quale pagina appartiene.

Un altro vantaggio della paginazione riguarda la condivisione di codice comune.

Il codice che si può condividere è quello non automodificante, detto anche codice puro, ossia che

non cambia durante l’esecuzione, e che può quindi essere eseguito da più processi

contemporaneamente.

ARCHITETTURE DI PAGINAZIONE (REGISTRI, PTBR, TLB)

La realizzazione dell’architettura d’ausilio per la tabella delle pagine si può effettuare in vari modi.

Nel caso più semplice si utilizza uno specifico insieme di registri.

La gestione di questi registri dev’essere efficiente, in quanto le istruzioni ad essi relative sono

privilegiate. Per rendere la gestione efficiente, la tabella delle pagine deve avere una dimensione

ragionevolmente piccola (es. 256 elementi), requisito che però non è soddisfatto dai moderni

calcolatori che hanno tabelle delle pagine che raggiungono 1 milione di elementi.

La tabella delle pagine viene mantenuta in memoria e viene puntata da un registro di base della

tabella delle pagine PTBR. I cambiamenti della tabella delle pagine richiedono la sola modifica

del PTBR, riducendo così il tempo dei cambi di contesto.

Tuttavia, si presenta il problema riguardante l’accesso a una locazione di memoria; per accedere a

una locazione con indice i, occorre far riferimento alla page table mediante il contenuto del PTBR

aumentato del valore del numero di pagine di i, accedendo in memoria. A questo punto si ottiene il

numero del frame che, associato all scostamente, fornisce l’indirizzo fisico che permette l’accesso

in memoria. Con questo metodo si effettuano due accessi in memoria.

Per risolvere il problema del PTBR si può utilizzare una piccola cache veloce, chiamata TLB, nella

quale ogni elemento è formato da due campi:

1. una chiave, o tag;

2. un valore.

Le memorie associative sono molto costose e tipicamente contengono pochi elementi.

La TLB si affianca alla tabella delle pagine, infatti ne contiene una piccola parte.

Quando la CPU genera un indirizzo logico, si

presenta il suo numero di pagina p alla TLB.

Si possono verificare casi differenti:

TLB hit, il numero p è presente, il numero

• del frame è immediatamente disponibile e

lo si usa per accedere in memoria;

TLB miss, il numero p non è presente e si

• deve consultare la page table completa.

La percentuale di volte che un numero di pagina

sia presente nella TLB è detto hit ratio.

Il valore dell’hit ratio a, insieme al tempo di accesso in memoria Tmem e al tempo di ricerca nella

TLB ε, permette di calcolare il tempo effettivo d’accesso alla memoria.

EAT = (ε + Tmem)*a + (ε + 2Tmem)*(1 – a)

PROTEZIONE DELLA MEMORIA E BIT DI VALIDITÀ

Ad ogni frame è associato un bit di protezione che determina se una determinata si può leggere e

scrivere o se si può solamente leggere. Il controllo di questo bit avviene nel mentre che si calcola

l’indirizzo fisico.

Ad ogni elemento si associa anche un altro bit, il bit di validità:

se è impostato a valido indica che la pagina corrispondente fa parte della spazio degli

• indirizzi logici del processo;

altrimenti è impostato a non valido.

Questo bit ha il compito di identificare gli indirizzi illegali e di notificarne la presenza mediante un

segnale di eccezione.

PAGINAZIONE GERARCHICA

La maggior parte dei moderni calcolatori dispone di uno spazio d’indirizzi logici molto grande (da

32 64

2 a 2 elementi). In un ambiente di questo tipo la stessa tabella delle pagine fi nirebbe per

diventare eccessivamente grande.

Una possibile soluzione a questo problema è la paginazione gerarchica, o paginazione a due livelli,

dove la page table stessa è paginata.

L’indirizzo logico assume la seguente suddivisione,

numero di pagina scostamento

p1 (10 bit) p2 (10 bit) d (12 bit)

dove: p1 è l’indice della page table di primo livello (o esterna);

• p2 è lo scostamento all’interno della pagina indicata dalla page table esterna;

• d è lo scostamento.

TABELLA DELLE PAGINE DI TIPO HASH

Un metodo di gestione tipico per gli spazi di indirizzi relativi ad architetture superiori a 32 bit è la

tabella delle pagine di tipo hash, in cui l’argomento della funzione hash è il numero di pagina

virtuale. Per la gestione delle collisioni, ogni

elemento della tabella contiene una lista

concatenata di elementi che la funzione

hash fa corrispondere alla stessa

locazione. Ciascun elemento ha 3 campi:

1. numero di pagina virtuale ;

2. indirizzo del frame

corrispondente alla pagina

virtuale;

3. puntatore all’elemento

successivo.

L’algoritmo opera come segue: si applica la funzione hash al numero della pagina virtuale,

identificando un elemento della tabella. Si confronta il numero di pagina virtuale con il primo

campo del primo elemento della lista concatenata corrispondente. Se i valori coincidono, si usa

l’indirizzo del relativo frame contenuto nel secondo campo dell’elemento per generare l’indirizzo

fisico desiderato. Altrimenti, l’algoritmo esamina allo stesso modo gli ele menti successivi della

lista concatenata.

TABELLA DELLE PAGINE INVERTITA

Per risolvere il problema delle dimensioni elevate della tabella delle pagine, si può far uso della

cosidetta tabella delle pagine invertita, la quale contiene un elemento per ogni frame.

Ciascun elemento è quindi costituito dall’indirizzo virtuale della pagina memorizzata in quella reale

locazione di memoria, con informazioni relative al processo.

Gli indirizzi virtuali sono triple formate dai seguenti campi:

1. id processo;

2. numero di pagina;

3. scostamento.

Ogni elemento della tabella è una coppia formata dal campo id processo, che è l’identificatore dello

spazio degli indirizzi, e dal campo numero di pagina. Quando si fa un riferimento alla memoria, si

presenta solo una parte dell’inidirizzo

virtuale, formato da <id processo, numero di

pagina>. Si cerca una corrispondenza nella

tabella e se la si trova, ad esempio

nell’elemento i, si genera l’indirizzo fisico

formato da <i, scostamento>, altrimenti si è

tentato un accesso illegale in memoria.

La tabella invertita è ordinata per indirizzi

fisici, per cui la ricerca richiede molto tempo

in quanto occorre esaminare tutti gli

elementi contenuti.

SEGMENTAZIONE

La segmentazione è un metodo che permette di gestire la visione della memoria fisica da parte

dell’utente, il quale fornisce l’indirizzo logico come una coppia <numero del segmento,

scostamento>.

Gli indirizzi forniti sono bidimensionali e vanno tradotti in indirizzi fisici unidimensionali.

La traduzione avviene mediante l’utilizzo della tabella dei segmenti, che contiene elementi formati

da due campi ordinati:

1. base del segmento, che contiene l’indirizzo fisico iniziale della memoria dove il segmento

risiede;

2. limite del segmento, che contiene la lunghezza del segmento.

L’indirizzo logico fornito dalla CPU è

formato da un numero di segmento e dallo

scostamento. Per consentire o meno

l’accesso in memoria, si effettua un test sul

valore dello scostamento:

se il valore di d è compreso tra 0 e

• limite allora si somma il valore

della base allo scostamento d e si

permette l’accesso in memoria;

se il valore di d è superiore a quello

• di limite allora s’invia un segnale

di eccezione, impedendo l’accesso

in memoria.

La protezione è garantita dal bit di protezione presente per ogni elemento della tabella dei segmenti.

La segmentazione permette la condivisione, infatti separa i dati dal codice e più processi possono

condividere gli stessi segmenti di codice. Ogni processo ha una propria tabella dei segmenti nel

PCB.


PAGINE

9

PESO

760.23 KB

PUBBLICATO

4 mesi fa


DETTAGLI
Corso di laurea: Corso di laurea in informatica (CAGLIARI)
SSD:
Università: Cagliari - Unica
A.A.: 2018-2019

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher frensisssss di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Cagliari - Unica o del prof Carta Salvatore.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Sistemi operativi

Sistemi Operativi - Appunti Teoria Prima Parte
Appunto
Sistemi Operativi - Appunti Teoria Seconda Parte
Appunto
Gestione della memoria virtuale
Appunto
Calcolo differenziale Integrale -Appunti
Esercitazione