Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli...

34
Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86

Transcript of Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli...

Page 1: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Gestione della memoria logica e fisica degli

elaboratori x86

Page 2: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

In modo reale gli indirizzi, determinati a livello di istruzioni, indirizzano direttamente la memoria fisica, seppur mediante un modello di segmentazione della memoria fisica stessa, mediante 20 bit (1MB)

Offset(16)

0000Reg.Seg.(16)

Page 3: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Memoria logica Memoria lineare Memoria fisica

Modello di memoria – la gerarchia

Page 4: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Modello di memoria – la gerarchia

Memoria logica: spazio di memoria visibile dall’architettura del processore, a livello di registri (assembler)

Memoria lineare: spazio di memoria gestito dall’architettura mediante un indirizzamento lineare (può coincidere con la memoria logica in alcuni processori)

Memoria fisica: spazio di memoria direttamente indirizzabile dal ABUS

Memoria reale: la memoria fisica realmente disponibile

Page 5: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

In modo protetto gli indirizzi, determinati a livello di istruzioni, sono espressi su 46 bit (64TB) segmentazione della memoria logica (virtuale)

Il modo protetto è un gran cas..o!

Offset (32/16)Reg.Seg.(14)

Page 6: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

In modo protetto ogni segmento risulta essere pari a 4 GB:

• Il registro di segmento (selettore) specifica il segmento• L’offset determina l’indirizzo all’interno del segmento

Il modo protetto è un

gran cas..!

Page 7: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Offset (32/16)Reg.Seg.(14)

Seg. 0

Seg. 1

Seg. 2

Seg. 3

Esistono 214 (pari a 16K) segmenti, ciascuno da 4 GB (offset su 32 bit)

Page 8: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Offset (32/16)Reg.Seg.(14)

segmentazione

paginazione

Indirizzo logico (46)

Indirizzo lineare (32)

Indirizzo fisico (32)

Page 9: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Seg. 0

Seg. 1

Seg. 2

Seg. 3

Memoria logica(virtuale) Memoria lineare

Page 10: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Seg. 0

Seg. 1

Seg. 2

Seg. 3

Memoria logica(virtuale) Memoria lineare

descrittore

Page 11: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Descrittori

Ad ogni segmento è associato un descrittore, contenente:

1. Mapping tra ind. Logico e ind. Lineare2. Attributi del segmento (code/data, R/W, etc.)3. Il livello di privilegio del segmento (0-3)

Un descrittore è composto da 8 byte

Tutti i descrittori sono contenuti in due tabelle: 1. i primi 8k nella Global Description Table (GDT)2. I secondi 8K nella Local Descrioption Table (LDT)

Page 12: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Seg. 0

Seg. 1

Seg. 2

Seg. 3

Memoria logica(virtuale)

DescrittoreSeg. 0

DescrittoreSeg. 1

DescrittoreSeg. 2

DescrittoreSeg. 3

Tabella dei descrittori

Page 13: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Mapping tra indirizzo logico e lineare

Offset (32/16)Reg.Seg.(14)

descrittore

Indirizzo di base(32 bit)

+ Indirizzo lineare(32 bit)

Page 14: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Seg. 0

Seg. 1

Seg. 2

Seg. 3

Memoria logica(virtuale – 46 bit ind.)

Memoria lineare(32 bit ind.)

Mapping tra indirizzo logico e lineare

Seg. 0Indirizzo di base(32 bit)

limite

Page 15: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Mapping tra indirizzo logico e lineare

Nel descrittore sono memorizzati:

1. Indirizzo di base (che corrisponde all’indirizzo di testa del segmento nella memoria lineare, su 32 bit)

2. Limite (che indica il n° di byte effettivamente utilizzati del segmento, in termini di indirizzo di fine segmento nella memoria lineare, sono memorizzati solo i primi 20 bit più significativi)

3. Attributi (10 bit)

4. Livello di privilegio (2 bit)

Page 16: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Privilegi

Ad ogni entità (processo, codice, segmento dati, tabelle disistema, …) è attribuito un livello di privilegio variabile tra 0 e3,con 0 il massimo livello.

1

0

3

2

Page 17: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Privilegi (il modello gerarchico)

1

0

3

2

Page 18: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Privilegi (le leggi generali)

R1. Qualità dei datiUn processo può accedere a dati (segmenti) allo stesso livello oa livelli più bassi (logicamente, numericamente più elevati).

PLprocesso >= Pldati(logicamente) PLprocesso <= PLdati (numericamente)

R2. Affidabilità del codice Un segmento di codice può accedere ad un altro segmento solose allo stesso livello o a livelli più alti (logicamente,numericamente inferiori).

Page 19: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Seg. 0

Seg. 1

Seg. 2

Seg. 3

Memoria logica(virtuale)

Memoria lineare

Memoria fisica

Paginazione

Page 20: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Pag. 0

Pag. 1

Pag. 2

Pag. 3

Memoria fisica

Paginazione

Ogni pagina è di 4KB:

1. L’indirizzo di testa della pagina è calcolato dal sistema di paginazione a partire dai 20 bit più significativi dell’indirizzo lineare e produce i 20 bit più significativi dell’indirizzo fisico

2. L’offset nella pagina è prelevato direttamente dall’indirizzo lineare (12 bit)

Nel Pentium è possibile configurare ilsistema di paginazione con pagine da4MB

Page 21: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Indirizzo lineare(32 bit)

Due livelli di tabelle di paginazione

Indirizzo fisico(32 bit)

Paginazione

Offset (12)II livello(10)I livello(10)

Offset (12)Indirizzo inizio pagina(20)

Page 22: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Indirizzo lineare(32 bit)

Indirizzo fisico(32 bit)

Paginazione

Offset (12)II livello(10)I livello(10)

Offset (12)Indirizzo inizio pagina(20)

Page 23: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Paginazione

Ogni tabella :

1. È costituita da 1024 elementi,2. Ogni elemento è costituito da 8 byte3. Ogni elemento contiene:

• 20 bit di indirizzo (al primo livello l’indirizzo di testa della tabella di secondo livello, al secondo livello l’indirizzo di testa della pagina nella memoria fisica)

• un certo numero di bit di attributo4. Si hanno un totale di 1024 tabelle di secondo livello

per un totale max di 8K*K = 8MB5. L’indirizzo di testa della tabella di primo livello è

contenuto nel registro di cpu CR2

Page 24: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Paginazione

S/U = livello di privilegio della pagina System (pari ai livelli 0,1,2 della Segmentazione), User (livello 3)

R/W = accessibilità in lettura/scrittura della pagina in Memoria

A = accessed, indica se una pagina nella memoria fisica è stata modificata, utile negli algoritmi di swapping

S/UIndirizzo inizio pagina(20) R/W A

Page 25: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Seg. 0

Seg. 1

Seg. 2

Seg. 3

Memoria logica(virtuale – 46 bit ind.)

Memoria lineare(32 bit ind.)

Memoria paginata lineare

Page 26: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Memoria paginata lineare

Facendo puntare tutti i segmenti all’inizio della memoria, si elimina di fatto la segmentazione, realizzando una memoria lineare paginata (gestita a livello programmazione dai soli offset)

I registri di segmento CS,DS, SS, …. ( ed i relativi descrittori) vengono inizializzati una sola volta al boot del sistema operativo

Offset (32/16)Reg.Seg.(14)

Page 27: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Segmentazione e PaginazioneAi fini della velocità di esecuzione i controlli e le traduzioni tra ind. Logico ed ind. Fisico devo essere fatte in un tempo di pipeline ) i descrittori dei segmenti attivi e gli elementi delle tabelle di paginazione più frequentemente usati sono contenuti in apposite cache on chip, di cui la seconda èindicata come TLB

TLB cache

Offset (12)II livello(10)I livello(10)

Offset (12)Indirizzo inizio pagina(20)

Page 28: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Esempio

Si consideri l’istruzione in modo protetto:

MOV AX, (EBX)

Si supponga che DS = 200 e EBX = 155

L’indirizzo logico(virtuale) risulta:

DS: EBX = 200:155

EBX = 155DS(14 bit) = 200

Page 29: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Esempio

Si consideri l’istruzione in modo protetto:

MOV AX, (EBX)

Si supponga che DS = 200 e EBX = 155

L’indirizzo logico(virtuale) risulta:

DS: EBX = 200:155

Viene pertanto selezionato il 200-esimo descrittore nella tabella dei descrittori

Si supponga che tale descritto contenga come Indirizzodi base (che corrisponde all’indirizzo di testa del segmento nella memoria lineare, su 32 bit) il valore 10000 (BA = 10000).

Page 30: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Seg. 0

Seg. 200

Seg. 214

Memoria logica(virtuale)

Memoria lineare

Descrittore200

BA=10000

…………….

…………….

EBX = 155DS(14 bit) = 200

Page 31: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Esempio

L’Indirizzo di base viene sommato al valore dell’offset(BX) determinando l’indirizzo lineare effettivo del dato daleggere dalla memoria.

il valore ottenuto risulta:

10000 (BA) + 155 (EBX) = 10155 (indirizzo dato in memoria lineare)

Tale indirizzo se NON è abilitata la paginazione è inviato allo ABUS

In caso contrario all’unità di paginazione

Page 32: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Seg. 0

Seg. 200

Seg. 214

Memoria logica(virtuale)

Memoria lineare

Descrittore200

BA=10000

…………….

…………….

EBX = 155DS(14 bit) = 200

Byte di Indirizzo10155

Page 33: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

Paginazione

L’indirizzo lineare su 32 bit viene tradotto in indirizzo fisico dalle tabelle di paginazione ed inviato su ABUS.

10155

Tabelle PAG. (TLB cache)

Xxxx (ABUS)

Page 34: Prof. Marco Mezzalama –All rights reserved Gestione della memoria logica e fisica degli elaboratori x86.

Prof. Marco Mezzalama –All rights reserved

CONSIDERAZIONI

Nei sistemi operativi odierni, la segmentazione è di fatto “disabilitata”, nel senso che si definiscono all’attivazione segmenti molto ampi e sovrapposti. Al contrario la gestione dei processi e dei privilegi viene fatta, seppur in modo meno preciso a livello di paginazione.

Il modo reale è attivato solo in fase di avvio-reset, al fine di eseguire il POST del BIOS e il bootstrap del SO. Questo in alcune versioni contiene un suo BIOS proprietario, compatibile con il modo protetto, che rende più facile la gestione fisica dei periferici in un contesto multi task