Domanda

Ho cercato di cercare nel codice sorgente di Linux una struttura / unione che corrispondesse alla PTE sul sistema x86 con PAE disabilitato. Finora ho trovato solo quanto segue in arch / x86 / include / asm / page_32.h

typedef union {
        pteval_t pte;
        pteval_t pte_low;
} pte_t;

Sono un po 'confuso in questo momento poiché ho il Manuale di riferimento Intel Vol 3A aperto davanti a me e nulla in quell'unione corrisponde alla dozzina di campi dispari presenti nel PTE come spiega il manuale.

Questa potrebbe essere una domanda banale ma per me è diventata più un ostacolo nel processo di comprensione della gestione della memoria nel kernel di Linux.

EDIT: ho la fonte 2.6.29 con me

È stato utile?

Soluzione

pteval_t considera la voce della tabella delle pagine solo come un blob opaco - sull'architettura che stai osservando, è solo un valore senza segno a 32 bit.

I campi all'interno del PTE sono accessibili usando operatori e maschere bit a bit - nella fonte che ho a portata di mano (Linux 2.6.24), questi sono definiti in include / asm-x86 / pgtable_32.h . I campi visualizzati nel Manuale di riferimento di Intel (la maggior parte dei quali sono flag a bit singolo) sono definiti qui, ad esempio:

#define _PAGE_PRESENT   0x001
#define _PAGE_RW    0x002
#define _PAGE_USER  0x004
#define _PAGE_PWT   0x008
#define _PAGE_PCD   0x010
#define _PAGE_ACCESSED  0x020
#define _PAGE_DIRTY 0x040
#define _PAGE_PSE   0x080   /* 4 MB (or 2MB) page, Pentium+, if present.. */
#define _PAGE_GLOBAL    0x100   /* Global TLB entry PPro+ */
#define _PAGE_UNUSED1   0x200   /* available for programmer */
#define _PAGE_UNUSED2   0x400
#define _PAGE_UNUSED3   0x800

Altri suggerimenti

Consiglierei di acquistare Comprensione del kernel Linux da O'REILLY, nonché Driver di dispositivo Linux . E iscriversi a LWN.net ; anche se puoi iniziare piuttosto bene dalla loro indice del kernel anche senza abbonamento.

Per la gestione della memoria, cerca nella pagina dell'indice il " Gestione della memoria " sezione ... e i "sistemi a memoria grande" sezione. Quest'ultimo ha alcuni articoli che parlano del passaggio a tabelle di pagine a quattro livelli che dovrebbero essere utili per comprendere quest'area del codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top