Global Descriptor Table
Global Descriptor Table
Main page

Global Descriptor Table

logo
Community Hub0 subscribers
What are your thoughts?
Be the first to start a discussion here.
Be the first to start a discussion here.
Global Descriptor Table

The Global Descriptor Table (GDT) is a core part of Intel's x86 architecture that helps manage how memory is accessed and protected. Introduced with the Intel 80286 processor, it plays a key role in defining memory segments and their attributes: the base address, the size, and access privileges like executability and writability.

Even though modern 64-bit systems rarely rely on segmentation, the GDT remains a required component for starting up the processor and managing certain system-level tasks.

The GDT helps isolate memory between application software and the operating system.

In protected mode (a more advanced processor mode that allows memory protection), the GDT defines:

Each entry in the GDT is 8 or 16 bytes long and holds a segment descriptor that defines the properties of one segment. Each descriptor includes access rights, ensuring programs cannot modify protected memory.


To use a segment, a program refers to it using a segment selector — a special value that tells the processor which GDT entry to use. The processor then loads this descriptor into a segment register, which holds both visible and hidden metadata about the segment.

In 64-bit mode, segmentation is mostly disabled: all segment bases are treated as zero, and limits are ignored, creating a flat address space. However, the GDT is still required to define system descriptors such as the Task State Segment (TSS). Two segment registers, FS and GS, remain active and are often used by operating systems for thread-local storage or process-specific data (e.g., the Thread Environment Block in Windows or gs_base in Linux).

Notably, Windows enforces strict protections: attempts to hook or modify the GDT in 64-bit versions will trigger a system crash (bug check).

See all
User Avatar
No comments yet.