
【計】 segment descriptor word
part; passage; sect; section; segment
【計】 segment
【醫】 piece; sectile; segment; segmentum
【計】 descriptor
letter; printing type; pronunciation; word; writings
【計】 graphtyper; W; WD; word
在計算機體系結構(特别是x86架構)中,段描述符字(Segment Descriptor) 是保護模式下用于定義内存段屬性的關鍵數據結構。它存儲在全局描述符表(GDT)或局部描述符表(LDT)中,由CPU通過段選擇子索引訪問。以下是其核心含義與技術細節:
段描述符是一個8字節(64位) 的數據結構,包含以下核心信息:
32位字段,定義内存段的起始物理地址。
20位字段,指定段的長度(單位由粒度标志決定)。
控制段的讀寫權限、特權級(DPL)和類型(代碼/數據/系統段)。
包括粒度(Granularity,0=字節/1=4KB頁)和默認操作大小(16/32位模式)。
下表展示段描述符的位級布局:
字節偏移 | 字段名稱 | 作用說明 |
---|---|---|
0-1 | Limit (Low) | 段界限的低16位 |
2-4 | Base (Low) | 段基址的低24位 |
5 | Type + DPL | 段類型與描述符特權級 |
6 | Limit (High) + Flags | 段界限高4位 + 粒度/操作大小 |
7 | Base (High) | 段基址的高8位 |
通過界限檢查防止越界訪問,例如:
if (offset > descriptor.limit) trigger #GP(0); // 觸發一般保護異常
DPL(Descriptor Privilege Level)字段限制當前特權級(CPL)對段的訪問權限。
邏輯地址通過 段基址 + 偏移量
轉換為線性地址。
在Linux内核初始化時,需構建GDT并加載到GDTR寄存器:
lgdt [gdt_ptr]; 加載GDTR
mov ax, 0x10; 加載數據段選擇子
mov ds, ax
其中GDT包含:
中文術語 | 英文術語 |
---|---|
段描述符字 | Segment Descriptor |
段基址 | Segment Base Address |
段界限 | Segment Limit |
描述符特權級 | Descriptor Privilege Level (DPL) |
全局描述符表 | Global Descriptor Table (GDT) |
權威參考來源:
- Intel® 64 and IA-32 Architectures Software Developer Manuals, Volume 3A, Chapter 3.4.5 "Segment Descriptors"
- AMD64 Architecture Programmer’s Manual, Volume 2, Section 4.8 "Descriptor Tables"
- 《x86彙編語言:從實模式到保護模式》(李忠著)第11章
- OSDev Wiki: "Global Descriptor Table" (https://wiki.osdev.org/GDT)
段描述符是x86架構保護模式下用于内存管理的核心數據結構,屬于全局描述符表(GDT)或局部描述符表(LDT)中的條目,用于定義内存段的屬性、位置和訪問權限。以下是其關鍵解析:
段基址(Base)
共32位,分散在描述符的第16-31位、32-39位和56-63位。表示段在内存中的起始地址,16字節對齊以優化性能。
段限長(Limit)
共20位(第0-15位和48-51位),通過G标志位确定單位:
訪問控制字段
其他關鍵标志
段選擇符(16位)通過高13位索引GDT/LDT中的描述符,低3位包含請求特權級(RPL)。處理器根據選擇符定位描述符,提取基址與邏輯地址偏移量組合為線性地址。
段描述符是保護模式下實現内存分段機制的核心,通過基址、限長和屬性字段控制段的訪問與操作模式。實際使用中需結合GDT/LDT及段選擇符完成地址轉換與權限校驗。
包含子目錄布噻嗪純文學作者存取線動脈冠段标識符字段多标量防範性拘捕權放逐國外分段面積腹部沖擊水療法高音的固定氣體海帶毫無結果的審判回旋喉鏡靜态程式塊結構機器器具極細粉即興而作良材脈動點摸感式開關尿生殖窦乳浴聲延遲線實際等級雙重幻核送牛奶馬車速率比