Che materia stai cercando?

La memoria virtuale - Architettura elaboratori

La Virtual Memory: Struttura, Concetti, alla base di un idea. Puoi trovare tutto l'essenziale che ti serve per capire cosa è una memoria virtuale e a cosa ti serve !!!!!! Appunti basati su appunti personali del publisher presi alle lezioni del prof. Mei.

Esame di Architettura degli elaboratori docente Prof. A. Mei

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


PAGINE

8

PESO

416.73 KB

AUTORE

ABsintio

PUBBLICATO

4 mesi fa


DETTAGLI
Corso di laurea: Corso di laurea in informatica
SSD:
A.A.: 2018-2019

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

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Architettura degli elaboratori

Cache - Architettura elaboratori
Appunto
Pipeline - Architettura elaboratori
Appunto
Laboratorio di basi di dati I - la progettazione concettuale
Appunto
Informatica di base - Appunti
Appunto