`
longxj
  • 浏览: 101884 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

有关段的知识

阅读更多

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 一

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics