mycs

导航

 

段选择符

13位索引 TI RPL

13位索引:去描述符表(GDT或LDT)里查第几项,共可索引8192个描述符
TI位:0→查GDT(全局描述符表);1→查LDT(局部描述符表)
RPL(请求特权级):你请求这次访问时“声称”的权限等级(0~3),用来做特权级检查

段描述符表GDT/LDT
非系统段

32位 20位 12位
段基址 段界限 属性

寻址范围 2^32=4GB
存储段范围
颗粒度G=0 以1字节为单位 0~2^20=1MB
颗粒度G=1 以4KB为单位 0~2^20*4KB=4GB
属性段
P(存在位)
DPL(描述段特权级)
S(分类位)
TYPE字段

系统段

32位 16位 16位
偏移地址 段选择符 属性

门描述符
特殊的系统段描述符,它不描述一块内存区域,而是描述一个程序入口点。它是跨越特权级的唯一合法通道。
属性

核心机制:通过段选择符->门描述符->权限检测->目标段检测符->权限检查->栈切换(特权级提升时)->执行目标代码
全局描述符表
GDTR全局描述符表寄存器

32位 16位
基地址 界限

GDT寻址: 段选择符*8+GDTR基址 -> 段描述符地址
段描述符内容(包括基址)-> 相应段cache
cache中段基址 + 虚地址偏移量 -> 物理地址
局部描述符表
性质:保存某任务使用的段描述符,每个任务一个
LDTR
|16位|32位|20位|12位|
| ---- | ---- | ---- |
|段选择符|基址|界限|属性|

LDTR 可见部分(16 位选择符)─指向→ GDT

┌──────────────────────────┘

GDT 中的 LDT 描述符
( S=0, TYPE=0010 )

├── 32 位基址 ──→ ┌────────────────┐
├── 20 位界限 │ LDT 表本身 │
└── 属性 │ (每项 8 字节) │
└──┬─────────────┘

任务私有段选择符 ──索引×8──→ LDT 中的段描述符
(TI=1) │
├── 32 位基址
├── 界限、DPL...
└──→ 最终形成目标段的基址 + 偏移量

posted on 2026-04-26 14:03  Radarman108  阅读(7)  评论(0)    收藏  举报