GDT每个CPU都会有一个,LDT是GDT里的一项,所以访问LDT是先要访问GDT的有关LDT的一项
intel提供6个段寄存器cs,ss,ds,es,fs,gs。还有两个相关的寄存器gdtr和ldtr,用来存放全局描述符表和当前活动局部描述符表的基地址。
cs:code segment
de:data segment
ss:stack segment
es,fs,gs是通用段寄存器,每个段寄存器还对应着一个64的不可编程寄存器,用来存放每个对应段选择子的段描述符。当段寄存器的内容被改变后,相应的不可编程寄存器会被重新载入对应的段描述符,以便能快
速地将逻辑地址转为线性地址。
其中cs还有2个field是用来说明CPL(current privilege level) of the CPU.每个寄存器用来存放segment selector
segment selector:
index[13]TI[1]RPL[2]
段描述符为64位,主要field有base,limit,type,DPL(Descriptor Privilege Level)用来指明需要什么的cpu权限才能访问这个段,G(粒度)用来指明limit采用的粒度,是byte还是4kb,S,P
(是不是在内存中),DorB,AVL。
linux常使用的几种段描述符:
code segment descriptor,data segment descriptor,task state segment descriptor,local descriptor table descriptor.
2009/01/12 一
有关段的知识
最新推荐文章于 2024-06-06 21:21:04 发布
1134

被折叠的 条评论
为什么被折叠?



