Segmentation in Hardware
Starting with the 80386 model, Intel microprocessors perform address translation in two different ways called real mode and protected mode . These are described in the next sections. Real mode exists mostly to maintain processor compatibility with older models and to allow the operating system to bootstrap (see Appendix A for a short description of real mode).
Segmentation Registers
A logical address consists of two parts: a segment identifier and an offset that specifies the relative address within the segment. The segment identifier is a 16-bit field called the Segment Selector , while the offset is a 32-bit field.
To make it easy to retrieve segment selectors quickly, the processor
provides segmentation registers
whose only purpose is to hold Segment
Selectors; these registers are called cs
,
ss
, ds
, es
,
fs
, and gs
. Although there are
only six of them, a program can reuse the same segmentation register
for different purposes by saving its content in memory and then
restoring it later.
Three of the six segmentation registers have specific purposes:
-
cs
The code segment register, which points to a segment containing program instructions
-
ss
The stack segment register, which points to a segment containing the current program stack
-
ds
The data segment register, which points to a segment containing static and external data
The remaining three segmentation registers are general purpose and may refer to arbitrary data segments.
The cs
register has another important ...
Get Understanding the Linux Kernel, Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.