©2004 ing.conti
Gestione Memoria nella
architettura IA32
(386
PIV)
• Dal 386 memoria divisa in pagine, da 4 KB
• 4KB è un compromesso
• Adatto alla dimensione dei blocchi su HD
(512Byte) per swap
©2004 ing.conti
Pagine
Area di RAM contigua che contiene
dati/codice
La sua dimensione può raggiungere:
- 1MB (bit Granularity = 0)
- 4GB (bit Granularity = 1)
La dimensione è contenuto in campo di una
particolare struttura: sono 20 bit
©2004 ing.conti
Segmento: definizione
Se bit Granularity = TRUE, 20 bit di limite
NON SONO byte, ma sono espressi in
termini di pagine:
Dimensione (detta “Limite”) = 100 significa
100 pagine
Quindi al max: 2^20 Pagine
(Pagina: blocco di ram “atomico”, solitamente
di 4 KB)
©2004 ing.conti
Segmenti in modalità protetta
Un segmento al max grande:
20 bit di segmento = 2^20 = 1 Milione di
pagine
Quindi 1 Milione x 4 KB = 4 GB
©2004 ing.conti
Segmenti in modalità protetta (2)
Un registro di segmento (CS, DS….SS) contiene un
valore a 16 bit che NON è più un valore di segmento,
ma un selettore
Selettore: un indice in una tabella ( + altro...)
Esistono due tipi di TABELLE:
- GDT (global desciptors table)
- LDT (local desciptors table(s) )
(al max di 64 K, anche di meno...)
©2004 ing.conti
Dai Segmenti ai descrittori
Contiene un valore a 16 bit composto da:
(da: IA32 Software Developers Manual Vol3 25366814.pdf pag. 3-8)
•RPL:
•TI :
•Indice:
livello di privilegio (da 0 a 3)
flag per il tipo di Tabella da puntare
13 bit -> max 2^13 = 8192 entry
nelle GDT e LDT
©2004 ing.conti
Cosa contiene un registro di
segmento?
“Una struttura” che contiene:
- Locazione (indirizzo di inizio)
- Lunghezza (20 bit... Già detto)
- Diritti di accesso (access rights)
©2004 ing.conti
DESCRITTORE (di un segmento)
•Indirizzo di partenza (BASE, 32 bit)
•Dimensione (20 bit; in modalità 386 è espressa in pagine)
•Diritti di accesso (8 bit)
•Flag:
•G ( granularity del segmento)
• D (modo reale (0) , protetto (1))
•AV(ailable): segmento disponibile
•(+ un bit non utilizzato)
©2004 ing.conti
Struttura di un DESCRITTORE
©2004 ing.conti
Struttura di un DESCRITTORE (2)
•Ogni descrittore quindi = 32 + 20 + 8 +4 = 64 bit = 8 Byte
•I descrittore in tipi di DUE TABELLE:
- Global Descriptors Table
- Local Descriptors Table
•Ognuna di 8192 entry
©2004 ing.conti
DESCRITTORI & Tabelle
©2004 ing.conti
DT & Access Rights
7
6
P
5
4
DPL
3
S
2
E
1
ED/C R/W
0
A
Di questi ci interessano:
•Descriptor Privilege level
•E: Executable
Se E =0 (data segment) W =writeble, se 0 read only
Se E =1 (code segment)R =readable, se 0 NO Read
NB: il bit E cambia di significato il bit R/W (protezione del codice!)
(da: IA32 Software Developers Manual Vol3 25366814.pdf pag. 3-13)
©2004 ing.conti
DT & Access Rights (dettaglio)
Global Descriptor Table
Comune a tutti i programmi
Local Descriptor Table(s)
Specifica per ogni programma: il s.o. Farà sì che il µP utilizzi quella
corretta per ogni Applicazione ad ogni switch del contesto
Sono puntate da due nuovi registri:
GDTRe LDTR nella memoria lineare SENZA altre rimappature
(esiste poi un IDTR, per gli interrupt...)
©2004 ing.conti
GDT e LDT
(da: IA32 Software Developers Manual Vol3 25366814.pdf pag. 2-10)
©2004 ing.conti
GDTRe LDTR and so on...
(da: IA32 Software Developers Manual Vol3 25366814.pdf pag. 3-5)
©2004 ing.conti
Schema complessivo generale
segmentazione
(da: IA32 Software Developers Manual Vol3 25366814.pdf pag. 3-7)
©2004 ing.conti
Schema generazione indirizzo
lineare
©2004 ing.conti
Esempio (1)
1000
CS =80 =
0000000001010 000 b
(da: IA32 Software Developers Manual Vol3 25366814.pdf pag. 3-7)
©2004 ing.conti
Esempio (2)
1000
CS =80 =
0000000001010 000 b
Index = 10
1010
0 00
GTD
©2004 ing.conti
Esempio (3)
1000
Index = 10
GTD
20000
0
20000
1
0
21000
0
2
ll segmento comincia
dall’indirzzo 21000 ed è
lungo 2 pagine
Se il µP ha la paginazione abilitata, l’indirizzo lineare viene
ulteriormente elaborato tramite altre TABELLE:
•Page Directory: (unica) sta in una pagina fisica -> 1024 entry
•Page Tables: ognuna grande una pagina, -> 1024 PTE
PTE page table entry
©2004 ing.conti
Non è finita...
(da: IA32 Software Developers Manual Vol3 25366814.pdf pag. 3-21)
©2004 ing.conti
Paginazione
(da: IA32 Software Developers ManualVol3 25366814.pdf pag. 3-2)
©2004 ing.conti
Schema accesso alla RAM completo
Nei processori dal Pentium Pro in avanti esiste un bit PAE
(physical Adress Extension) che abilta l’uso di una ULTERIORE
tabella, mappando 36 bit di RAM.....
©2004 ing.conti
Ed oltre...
Scarica

Gestione Memoria nella architettura IA32 (386