Segment Selector

From OSDev.wiki
Revision as of 06:57, 15 February 2022 by Revolution (talk | contribs) (Overhaul article. Its rather short so I don't think any of the prior contents survived.)
Jump to navigation Jump to search

A Segment Selector is a 16-bit binary data structure that is used on x86 CPUs in Protected Mode and Long Mode. Its value identifies a segment in either the Global Descriptor Table or a Local Descriptor Table. It contains three fields and is used in a variety of situations to interact with Segmentation.

For more information, see Section 3.4.2: Segment Selectors and Figure 3-6: Segment Selector of the Intel Software Developer Manual, Volume 3-A.

Segment Selector

Segment Selector
15    3 2 1   0
Index TI RPL
  • Index: The Index of the GDT or LDT entry referenced by the selector. Since Segment Descriptors are 8 bytes in length, the value of Index is never unaligned and contains no data in the lowest 3 bits. As such Index in a segment selector is not shifted from a standard 16-bit representation.
  • TI: Specifies which descriptor table to use. If clear (0) then the GDT is used, if set (1) then the LDT is used.
  • RPL: The requested Privilege Level of the selector, determines if the selector is valid during permission checks and may set execution or memory access privilege.

Uses

Segment Selectors are used in a few locations, including: