©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...