| Global Descriptor Table |
Article Index for Global |
Website Links For Global |
Information AboutGlobal Descriptor Table |
| CATEGORIES ABOUT GLOBAL DESCRIPTOR TABLE | |
| x86 architecture | |
| memory management | |
|
The ''GDT'' can hold things other than segment descriptors as well. Every 8-byte entry in the ''GDT'' is a descriptor, but these can be Task State Segment (or TSS) descriptors, LDT descriptors, or Call Gate descriptors. The last one, Call Gates , are particularly important for transferring control between x86 privilege levels although this mechanism is not used on most modern operating systems. There is also an LDT , or ''Local Descriptor Table''. The LDT is supposed to contain memory segments which are private to a specific program, while the GDT is supposed to contain global segments. The x86 processors contain facilities for automatically switching the current LDT on specific machine events, but no facilities for automatically switching the GDT. Every memory access which a program can perform always goes through a segment. On 386 and later, because of 32-bit segment offsets and limits it is however often possible to make segments cover the entire addressable memory, giving the illusion that there are no segments. In order to reference a segment a program must use its index inside the GDT or the LDT. Such an index is called a ''segment selector'' or ''selector'' in short. The selector must generally be loaded into a ''segment register'' to be used. Apart from the machine instructions which allow one to set/get the position of the GDT (and of the Interrupt Descriptor Table ) in memory, every machine instruction referencing memory has an implicit Segment Register, occasionally two. Most of the time this Segment Register can be overridden by adding a Segment Prefix before the instruction. Loading a selector into a segment register automatically reads the GDT or the LDT and stores the properties of the segment inside the processor itself. Subsequent modifications to the GDT or LDT will not be effective unless the segment register is reloaded. |
|
|