palm008 发表于 2014-04-23 09:25

关于操作系统段的理解

先看一下这段话:
段选择子包括三部分:描述符索引(index)、TI、请求特权级(RPL)。他的index(描述符索引)部分表示所需要的段的描述符在描述符表的位置,由这个位置再根据在GDTR中存储的描述符表基址就可以找到相应的描述符(如图三①步)。然后用描述符表中的段基址加上逻辑地址(SEL:OFFSET)的OFFSET就可以转换成线性地址(如图三②步),段选择子中的TI值只有一位0或1,0代表选择子是在GDT选择,1代表选择子是在LDT选择。

我的疑问是TI位是否必要,这个值似乎没有必要 因为根据GDTR中的描述表基址和描述表索引,读到的是GDT还是LDT是确定的,有没有TI位(区分GDT还是LDT) 都不能改变是GDT还是LDT这个事实。

kkddkkdd11 发表于 2014-04-23 10:03

:)) 好像还有LDTR的啊

palm008 发表于 2014-04-23 10:25

kkddkkdd11 发表于 2014-04-23 10:03 static/image/common/back.gif
好像还有LDTR的啊

的确是有的,如果通过IDTR寻址,就没有必要使用GDTR,但又说IDT表是在GDT表中,这块很混乱,求高人指点

kkddkkdd11 发表于 2014-04-23 11:36

回复 3# palm008


现在 都忘了 :'(
以前看过 http://item.jd.com/11335604.html 这书
好像讲的还不错 你可以搞个看看 :)

humjb_1983 发表于 2014-04-23 17:04

不指定GDT/LDT的话,寻址时不知道到哪个表中去索引吧?

stuman 发表于 2014-05-02 18:33

ti不设置时,在gdt中查找段描述符,如果被设置,则到LDT中查找描述符,此时还要用到ldtr寄存器,此寄存器保存指向gdt的描述符,相应描述符基址表示ldt表的地址。最后CS中存放的是设置了ti的局部选择符。
页: [1]
查看完整版本: 关于操作系统段的理解