码迷,mamicode.com
首页 > 其他好文 > 详细

32位机内存管理(下)

时间:2014-05-03 21:03:23      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ext   2014   http   数据   

既然这样,段描述符表放在那里呢?80386中引入了两个新的寄存器来管理描述符表。一个是48位的全局描述符表寄存器GDTR,一个是16位的局部描述符表寄存器LDTR。那么,为什么有两个描述符表寄存器呢?

GDTR指向的描述符表为全局描述符表GDT。它包含操作系统中所有任务都可用的段描述符,通常包含描述操作系统所使用的代码段、数据段、堆栈段的描述符及各任务的LDT段等,全局描述符表只有一个。

LDTR则指向局部描述符表LDT。80386处理器设计成每个任务都有一个独立的LDT。它包含有每个任务私有的代码段、数据段、堆栈段的描述符,也包含该任务所使用的一些门描述符。

不同任务的局部描述符表分别组成不同的内存段,描述这些内存段的描述符当做系统描述符放在全局描述符表中。和GDTR直接指向内存地址不同,LDTR和CS,DS等段选择器一样只存放索引,指向局部描述符表内存段对应的描述符在全局描述符表中的位置。随着任务的切换,只要改变LDTR的值,系统当前的局部描述符表LDT也随之切换,这样便于各任务之间数据的隔离,但GDT并不随着人物的切换而切换。

看到这里,可能会有一个问题,既然有全局描述符表和局部描述符表两个表,那么段选择器中的索引对应哪个表中的描述符呢?实际上16位的段选择器中只有高13位表示索引值,剩下的3个数据位中,第0,1位表示程序的当前优先级RPL,第二位TI用来表示在段描述符表的位置,TI=0在GDT中,TI=1在LDT中。

啥都不说了,一张图足以:

bubuko.com,布布扣

32位机内存管理(下),布布扣,bubuko.com

32位机内存管理(下)

标签:style   blog   ext   2014   http   数据   

原文地址:http://blog.csdn.net/getnextwindow/article/details/24919507

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!