La memoria virtuale - Architettura elaboratori
Anteprima
ESTRATTO DOCUMENTO
Non è necessario che il numero di pagine indirizzabili attraverso l’indirizzo virtuale corrisponda al
numero di quelle indirizzabili attraverso l’indirizzo fisico: avere un numero di pagine virtuali maggiore
di quelle fisiche è alla base della concezione che la memoria virtuale deve risultare illimitata all’utente
o più in particolare al programmatore.
Nei sistemi di memoria virtuale molte scelte di progettazioni sono dovute dall’elevato costo di una
miss (page fault). Questa richiede milioni di cicli di clock per essere risolta. Esempi di scelte sono:
⚫ Le pagine devono essere sufficientemente grandi. Adesso le dimensioni di una
pagina variano tra 4 KiB e 16 KiB;
⚫ Tecniche di riduzione dei page fault. La principale consiste in un posizionamento
flessibile delle pagine nella memoria tramite tecniche completamente
associative;
⚫ Gestione dei page fault via software in quanto l’incremento del tempo di
elaborazione è piccolo se confrontato con il tempo di accesso al disco;
⚫ Scrittura Write-Back. La scrittura Write-Through rallenterebbe di troppo in
quanto ogni volta dobbiamo accedere alla memoria di massa.
COME FACCIAMO AD INDIVIDUARE LA POSIZIONE DI UNA PAGINA ? ...
A causa dell’altissima penalità dei page fault, i progettisti cercano di ridurne la frequenza ottimizzando
la posizione delle pagine.
Ad esempio potrebbe essere utile mappare una pagina virtuale su una qualsiasi pagina fisica; il
sistema operativo potrà scegliere di sostituire qualsiasi pagina fisica quando ci sarà una situazione di
page fault.
Questa soluzione che comporta un implementazione completamente associativa ha però dei difetti,
come già mensionato riguardo le cache completamente associative. Quindi in un sistema di memoria
virtuale la pagina fisica corrispondente ad una pagina virtuale viene trovata attraverso una tabella che
indicizza la memoria; questa tabella viene chiamata Tabella delle pagine (page table), che contiene la
traduzione degli indirizzi virtuali in indirizzi fisici e risiede nella memoria principale, precisamente nel
registro della tabella delle pagine. 3
Come nella cache, ogni elemento della tabella ha un validity bit per indicare se quella specifica pagina
è contenuta al suo interno (bit a 1) oppure no (bit a 0 -> page fault).
I PAGE FAULT
Se il bit di validità della tabella delle pagine è impostato a 0 allora si genera un errore di page fault e il
controllo viene dato al sistema operativo. Esso deve scoprire dove si trova la pagina richiesta nel livello
inferiore della gerarchia, solitamente composto o da una memoria Flash oppure da una memoria di
massa (HDD) e decidere dove copiarla nella memoria principale.
Il singolo indirizzo virtuale non è necessario per trovare la pagina all’interno della memoria di massa;
occorre allora tenere conto della posizione su disco di ciascuna pagina definita nella spazio di
indirizzamento virtuale.
Dato che non possiamo prevedere quale pagina della memoria principale verrà sostituita, di solito il
sistema operativo riserva sul disco uno spazio sufficiente per tutte le pagine di un processo nel
momento in cui crea il processo stesso. Questo spazio viene chiamato Spazio di Swap (spazio di
scambio). Contemporaneamente il SO crea una struttura dati in cui registra la posizione su disco di
ciascuna pagina virtuale. Questa struttura può far parte della tabella delle pagine o può essere una
struttura a se, sempre indicizzata come la precedente.
Quando si verifica un errore di page fault, se tutte le pagine della memoria fisica sono in uso, il sistema
operativo deve scegliere quale sostituire. Essendo importante la filosofia del “meno page fault ho,
4
meglio è”, molti sistemi operativi scelgono una pagina che suppongono di non dover utilizzare poco
dopo. Allora usano una tecnica già vista nelle cache; ossia quella dell’LRU (Least Recently Used). Le
pagine sostituite vengono salvate nello spazio di swap del disco.
Per riconoscere tali pagine viene utilizzato una implementazione di LRU approssimata in cui si tiene
traccia delle pagine che sono state utilizzate più recentemente tramite un bit, che viene detto bit di
utilizzo o reference bit (bit di indirizzamento). Se questo bit è impostato ad 1 allora quella pagina è
stata utilizzata più recentemente, altrimenti se invece è a 0. Periodicamente allora il SO azzera tutti i
bit settando ad 1 solo quella pagina che è stata indirizzata da quel momento in poi. Tramite questo
metodo il sistema operativo deve solo controllare quale bit è a 0 e scegliere una pagina tra quelle.
GESTIONE DELLA SCRITTURA
Contrariamente alla cache nella quale una scrittura write-through era ammessa, in un sistema di
memoria virtuale, a causa dell’eccessiva latenza prodotta da una scrittura nella memoria di massa,
cioè non è possibile.
Viene allora implementato lo schema di scrittura write-back, nel quale scriviamo inizialmente solo
nella memoria virtuale, e poi nel momento della sostituzione copiamo l’intera pagina nella memoria di
livello inferiore.
Tuttavia un’operazione di scrittura sul disco risulta essere sempre meno costosa rispetto ad un
write-through, ma comunque troppo costosa per ciò che noi ci aspettiamo. Perciò è opportuno sapere
se è necessario copiare una pagina sul disco se si sceglie di sostituirla. Per sapere se il sistema abbia
scritto su una certa pagina a partire dall’istante in cui la pagina è stata caricata in memoria, si aggiunge
un bit, detto dirty bit (bit sporco), alla tabella delle pagine.
Questo viene impostato ad 1 appena qualsiasi parola della pagina viene scritta.
Il Sistema Operativo allora controlla questo bit e valuta se è necessario scrivere la pagina sul disco
prima di sostituirla (ovviamente se il bit è a 0, sarebbe un’operazione inutile).
Una pagina il cui contenuto è stato modificato viene chiamata dirty page (pagina sporca).
TRADUZIONE DEGLI INDIRIZZI PIÙ VELOCE: IL TLB
Dato che la tabella delle pagine deve essere salvata nella memoria principale, ogni accesso alla
memoria da parte di un programma richiede almeno il doppio del tempo.
Quando si utilizza la traduzione di un certo numero di pagina virtuale, è molto probabile che la stessa
traduzione sia richiesta poco dopo, dato che le parole contenute in memoria godono della proprietà
5
I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ABsintio di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università La Sapienza - Uniroma1 o del prof Mei Alessandro.
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