Indietro

ⓘ Global Descriptor Table




                                     

ⓘ Global Descriptor Table

La tabella dei descrittori globale o Global Descriptor Table è una struttura dati usata dai processori della famiglia x86 di Intel, a partire dall80286, per definire varie aree di memoria nellesecuzione di un programma, come per esempio lindirizzo base, la dimensione e i privilegi di accesso come leseguibilità e la scrittura. Queste aree di memoria sono chiamate segmenti nella terminologia Intel.

La GDT contiene altro oltre ai descrittori di segmento. Ogni 8 byte nella GDT rappresentano un descrittore, ma questi possono essere descrittori Task State Segment o TSS, descrittori LDT, o descrittori Call gate. Gli ultimi, i Call Gate, sono particolarmente importanti per trasferire il controllo tra i vari livelli di privilegi degli x86, anche se questo metodo non è utilizzato dai moderni sistemi operativi.

                                     

1. Come lavora il sistema operativo

Per caricare la GDT il sistema operativo deve eseguire listruzione LGDT addr, dove addr è lindirizzo della struttura che rappresenta il registro della GDT.

Questo registro, composto da 48 bit, ha questa struttura:

                                     

2. La tabella dei descrittori globali

La dimensione massima della GDT è di 8192 elementi, questo poiché in una memoria segmentata si hanno in genere 2 14 16384 segmenti, la metà dei quali 8192 assegnati a informazioni di sistema, laltra alle informazioni dei processi utente. La metà dei descrittori è dunque memorizzata nella GDT, laltra metà nella LDT. I processori Intel richiedono che il primo elemento della GDT, e quindi i primi 8 byte, sia settato a 0. Ogni elemento della GDT ha questa struttura:

                                     

2.1. La tabella dei descrittori globali Base

Il campo base 32 bit è formato dai campi BaseLow 16 bit, BaseMiddle 8 bit e BaseHigh 8 bit. Questo campo indica lindirizzo fisico da cui comincia il segmento. Diversi segmenti possono "sovrapporsi"

                                     

2.2. La tabella dei descrittori globali Access

Il campo access contiene diverse informazioni. Ogni bit specifica come viene utilizzato quel segmento:

                                     

2.3. La tabella dei descrittori globali Granularity

Il campo granularity, così come il campo access fornisce diverse informazioni: