Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoFeliciano Manzoni Modificato 10 anni fa
1
Gestione della memoria logica e fisica degli elaboratori x86
2
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) Reg.Seg.(16) 0000 Offset(16)
3
Modello di memoria – la gerarchia
Memoria logica Memoria lineare Memoria fisica
4
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
5
Il modo protetto è un gran cas..o!
In modo protetto gli indirizzi, determinati a livello di istruzioni, sono espressi su 46 bit (64TB) segmentazione della memoria logica (virtuale) Reg.Seg.(14) Offset (32/16)
6
Il modo protetto è un gran cas..!
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
7
Reg.Seg.(14) Offset (32/16) Seg. 0 Seg. 1 Esistono 214 (pari a 16K) segmenti, ciascuno da 4 GB (offset su 32 bit) Seg. 2 Seg. 3
8
Indirizzo logico (46) Indirizzo lineare (32) Indirizzo fisico (32)
Reg.Seg.(14) Offset (32/16) Indirizzo logico (46) segmentazione Indirizzo lineare (32) paginazione Indirizzo fisico (32)
9
Seg. 0 Seg. 1 Seg. 2 Seg. 3 Memoria logica (virtuale) Memoria lineare
10
Seg. 0 Seg. 1 descrittore Seg. 2 Seg. 3 Memoria logica (virtuale) Memoria lineare
11
Descrittori Ad ogni segmento è associato un descrittore, contenente:
Mapping tra ind. Logico e ind. Lineare Attributi del segmento (code/data, R/W, etc.) Il livello di privilegio del segmento (0-3) Un descrittore è composto da 8 byte Tutti i descrittori sono contenuti in due tabelle: i primi 8k nella Global Description Table (GDT) I secondi 8K nella Local Descrioption Table (LDT)
12
Tabella dei descrittori
Seg. 0 Descrittore Seg. 0 Seg. 1 Descrittore Seg. 1 Seg. 2 Descrittore Seg. 2 Seg. 3 Descrittore Seg. 3 Tabella dei descrittori Memoria logica (virtuale)
13
Mapping tra indirizzo logico e lineare
Reg.Seg.(14) Offset (32/16) descrittore Indirizzo lineare (32 bit) + Indirizzo di base (32 bit)
14
Mapping tra indirizzo logico e lineare
Seg. 0 Seg. 1 Seg. 0 limite Seg. 2 Indirizzo di base (32 bit) Seg. 3 Memoria lineare (32 bit ind.) Memoria logica (virtuale – 46 bit ind.)
15
Mapping tra indirizzo logico e lineare
Nel descrittore sono memorizzati: Indirizzo di base (che corrisponde all’indirizzo di testa del segmento nella memoria lineare, su 32 bit) 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) Attributi (10 bit) Livello di privilegio (2 bit)
16
Privilegi Ad ogni entità (processo, codice, segmento dati, tabelle di
sistema, …) è attribuito un livello di privilegio variabile tra 0 e 3,con 0 il massimo livello. 2 1 3
17
Privilegi (il modello gerarchico)
2 1 3
18
Privilegi (le leggi generali)
R1. Qualità dei dati Un processo può accedere a dati (segmenti) allo stesso livello o a 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 solo se allo stesso livello o a livelli più alti (logicamente, numericamente inferiori).
19
Paginazione Seg. 0 Seg. 1 Seg. 2 Seg. 3 Memoria logica Memoria lineare
(virtuale) Memoria lineare Memoria fisica
20
Paginazione Pag. 0 Ogni pagina è di 4KB:
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 L’offset nella pagina è prelevato direttamente dall’indirizzo lineare (12 bit) Nel Pentium è possibile configurare il sistema di paginazione con pagine da 4MB Pag. 1 Pag. 2 Pag. 3 Memoria fisica
21
Indirizzo inizio pagina(20)
Paginazione I livello(10) II livello(10) Offset (12) Indirizzo lineare (32 bit) Due livelli di tabelle di paginazione Indirizzo inizio pagina(20) Offset (12) Indirizzo fisico (32 bit)
22
Indirizzo inizio pagina(20)
Paginazione I livello(10) II livello(10) Offset (12) Indirizzo lineare (32 bit) Indirizzo fisico (32 bit) Indirizzo inizio pagina(20) Offset (12)
23
Paginazione Ogni tabella : È costituita da 1024 elementi,
Ogni elemento è costituito da 8 byte 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 attributo Si hanno un totale di 1024 tabelle di secondo livello per un totale max di 8K*K = 8MB L’indirizzo di testa della tabella di primo livello è contenuto nel registro di cpu CR2
24
Indirizzo inizio pagina(20)
Paginazione Indirizzo inizio pagina(20) S/U R/W A 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
25
Memoria paginata lineare
Seg. 0 Seg. 1 Seg. 2 Seg. 3 Memoria logica (virtuale – 46 bit ind.) Memoria lineare (32 bit ind.)
26
Memoria paginata lineare
Reg.Seg.(14) Offset (32/16) 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
27
Indirizzo inizio pagina(20)
Segmentazione e Paginazione Ai 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 I livello(10) II livello(10) Offset (12) TLB cache Indirizzo inizio pagina(20) Offset (12)
28
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 DS(14 bit) = 200 EBX = 155
29
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 Indirizzo di base (che corrisponde all’indirizzo di testa del segmento nella memoria lineare, su 32 bit) il valore 10000 (BA = 10000).
30
BA=10000 Memoria logica (virtuale) Memoria lineare
DS(14 bit) = 200 EBX = 155 Seg. 0 ……………. Descrittore 200 BA=10000 Seg. 200 ……………. Seg. 214 Memoria logica (virtuale) Memoria lineare
31
10000 (BA) + 155 (EBX) = 10155 (indirizzo dato in memoria lineare)
Esempio L’Indirizzo di base viene sommato al valore dell’offset (BX) determinando l’indirizzo lineare effettivo del dato da leggere dalla memoria. il valore ottenuto risulta: 10000 (BA) (EBX) = (indirizzo dato in memoria lineare) Tale indirizzo se NON è abilitata la paginazione è inviato allo ABUS In caso contrario all’unità di paginazione
32
BA=10000 10155 Memoria logica (virtuale) Memoria lineare
DS(14 bit) = 200 EBX = 155 Seg. 0 ……………. Descrittore 200 BA=10000 Byte di Indirizzo 10155 Seg. 200 ……………. Seg. 214 Memoria logica (virtuale) Memoria lineare
33
Tabelle PAG. (TLB cache)
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)
34
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.