• Non ci sono risultati.

La Memoria Virtuale

N/A
N/A
Protected

Academic year: 2021

Condividi "La Memoria Virtuale"

Copied!
20
0
0

Testo completo

(1)

La Memoria Virtuale

(2)

Requisiti per la gerarchia di memoria

l 

Se il principio di località permette di ottenere

un ottimo rapporto velocità/capacità tra cache

e memoria centrale è pensabile di adottare lo

stesso approccio tra memoria centrale e

memoria di massa?

l 

Ci sono altri requisiti che è opportuno

(3)

Memoria Virtuale

l 

Successivo livello nella gerarchia di memoria

l  Fornisce ai programmi l’illusione di avere uno

spazio di memoria illimitato

l  Distribuisce le “pagine” tra memoria centrale

(pagine attive) e disco

l 

È lo strumento con il quale il Sistema Operativo

condivide la memoria e protegge i processi.

l 

Attualmente, la funzione di protezione è più utile

(4)

Corrispondenza tra indirizzo virtuale e fisico

l  Ogni processo lavora nel suo spazio virtuale di indirizzi.

l  Ogni processo è protetto da interventi errati di altri

processi.

l  Il SO pianifica l’impiego della memoria

l  La traduzione dell’indirizzo virtuale in indirizzo fisico

avviene via hardware.

Indirizzo virtuale (inst. fetch

Il processo opera

nel suo spazio di indirizzi virtuale HW mapping Indirizzo fisico Memoria Fisica (incl. caches)

(5)

OS

User A

User B

User C

$base

$base+

$bound

• 

Requisiti:

discontinuous mapping

Process size >> mem

Spazio sufficiente per

ulteriore processo

ma discontinuo

(“Frammentazione”)

(6)

§  Si divide la memoria in pezzi di uguale

dimensione (4 KB - 8 KB)

§  Ciascun pezzo di M.V. assegnato ad

un pezzo di memoria fisica (“pagina”) Physical Memory

V irtu al Me m o ry

Stack

64 MB

(7)

Funzione di mapping per la M.V.

o

Non è possibile definire una funzione semplice

per il mapping: si impiega una lookup table

o

Tabella delle pagine per il mapping:

indicizzata sul Page number

o

Mapping per la M.V.:

Offset fisico= Offset virtuale

Page Number fisico (Page frame) = PageTable[Page Number virtuale]

(8)
(9)

Formato dell’entry della TDP

l 

Bit di validità: indica se la pagina è

effettivamente in memoria; se a 0, il SO forza

la ricerca sul disco

l 

Numero di pagina fisica

l 

Potrebbe essere presente anche una

descrizione dei diritti di accesso alla pagina

(Read only, Read/Write, Executable)

(10)

Tabella delle pagine

l 

La tabella delle pagine è una struttura del

sistema operativo che contiene la corrispondenza

tra indirizzi virtuali e locazioni fisiche.

l  Diversi approcci per organizzare la tabella, tutti

gestiti dal sistema operativo

l 

Ogni processo attivo nel sistema operativo ha una

propria tabella delle pagine

l  Lo stato di un processo è costituito dal PC, dai

registri del processore e dalla TDP

l  Il SO passa dalla TDP di un processo a quella di un

altro modificando il Registro della tabella delle pagine (Page table base register).

(11)

Protezione degli spazi di indirizzi

l 

Condivisione della memoria con protezione

l  Differenti pagine fisiche possono essere

allocate su diversi processi (condivisione)

l  Un processo può accedere alle sole pagine

presenti nella sua TDP (protezione)

l 

Spazi degli indirizzi separati

l  Siccome i processi usano gli indirizzi virtuali,

differenti processi possono avere codice/dati agli stessi indirizzi (virtuali)

(12)

M.V. con più processi

Processo B: Virtual Memory

Static

Heap

Stack

Processo A: Virtual Memory

Physical Memory

64 MB

Static

Heap

Stack

(13)

M.V. con più processi

Processo B: Virtual Memory Static Heap Stack Processo A: Virtual Memory

Physical Memory 64 MB Static Heap Stack

A B

(14)

M.V. con più processi

User B: Virtual Memory

Static

Heap

Stack

Static

Heap

Stack

A Page B Page User A: Virtual Memory

0 Physical Memory 64 MB

(15)

Caratteristiche dell’approccio con TDP

l  Risolve il problema della frammentazione: tutti i pezzi

di memoria sono della stessa dimensione, per cui gli spazi liberi possono essere utilizzati senza problema

l  Il SO deve riservare dello spazio di swap sul disco per

ogni processo

l  Ogni processo ha la sua TDP

l  Il SO può aumentare la memoria di un processo (aree

dinamiche) allocando ulteriori pagine:

l  Se ci sono, usa pagine disponibili

l  Altrimenti, scarica (swap) alcune pagine su disco (bit

dirty)

l  Metodo LRU per selezionare le pagine da scaricare (bit

(16)

TDP in memoria centrale: problema!

l 

Per ottenere un dato, sono necessari due accessi

in memoria centrale:

l  Uno per la traduzione da indirizzo virtuale a

indirizzo fisico

l  Uno per prelevare il dato

l 

Per velocizzare il processo si può osservare che

vale il principio di località anche nel processo di

traduzione dell’indirizzo

l 

Si può quindi considerare una memoria cache per

ospitare un certo numero di entry della TDP

(17)
(18)

Translation Look-Aside Buffer (TLB)

l 

Non molto grande: 128-256 entry

l 

Può essere direct-mapped, fully o set-associative

l 

In caso di miss, si preleva l’entry dalla TDP in

memoria

Cache

VA PA miss

hit

data

hit

miss

CPU

TLB

Memory

Main

Page

Table

(19)

Traduzione dell’indirizzo via TLB

TLB Tag TLBIndex Page Offset

TLB Tag PPN

. . .

TLB

VPN

PPN Page Offset

Tag Index Offset

Virtual Address

Physical Address

Tag Block Data

Data

Cache

(20)

Prelievo di dati in lettura

1)

Verifica il TLB (input: VPN, output: PPN)

TLB Hit:

realizza la traduzione, fornisci PPN

TLB Miss:

verifica la TDP (in memoria)

•  Page Table Hit: Carica la page table entry nel TLB

•  Page Table Miss (Page Fault): Trasferisci la pagina

dal disco alla memoria, aggiorna la page table entry corrispondente e quindi caricala nel TLB

2)

Verifica la cache (input: PPN, output: data)

Cache Hit: Fornisci i daQ al processore

Figura

Tabella delle pagine

Riferimenti

Documenti correlati

all’interno della lower level page table situata all’indirizzo appena ottenuto, si accede alla entry specificata dai bit centrali dell’indirizzo logico, che contiene il numero del

Allora in CS verrà messo l’indirizzo 4000 (vedi più avanti l’argomento SEGMENTAZIONE per ulteriori dettagli). Dopo il LOADING, poiché ora CS contiene l’indirizzo di inizio

Segmentazione pura (niente paginazione) e calcolo degli indirizzi fisici in IA-32 (Selettore di Segmento e Tabella dei Segmenti – vedi figura precedente ).. • Indirizzi Logici

– Se tenta di accedere a un indirizzo con bit di validità 0, viene generato un trap denominato page fault che può essere dovuto ad un errore nella gestione degli indirizzi

Ancora sulla paginazione su richiesta − 2.. ❖ Quando si verifica un page fault, il SO deve portare la pagina desiderata dalla memoria secondaria nella me- moria principale. ❖ La

 Alcuni SO, come Solaris, usano solo file mappati: nella memoria del processo o del kernel, a seconda della chiamata di sistema usata. File mappati in memoria: condivisione

 Accesso alla memoria: ad ogni riferimento ad una pagina, il contenuto del registro dell’orologio “viene copiato” nel campo del tempo d’uso della tabella delle pagine per

 Accesso alla memoria: ad ogni riferimento ad una pagina, il contenuto del registro dell’orologio “viene copiato” nel campo del tempo d’uso della tabella delle pagine per