首页
社区
课程
招聘
[求助]启用分页后如何寻址GDT
发表于: 2009-6-26 01:54 7923

[求助]启用分页后如何寻址GDT

2009-6-26 01:54
7923
最近在看《自己动手写操作系统》 第三章 的pmtest6.asm例子 碰到了一个问题
当跳到保护模式 初始化页目录和页表后置PG位=1
那么这个时候 原来的GDT描述符里的段基地址和偏移是否启用分页机制呢 如果启用 那就要做相应的转变 这个转变由硬件来完成 还是另外写程序完成 如果不启用 哪就不符合分页机制的寻址方式

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 214
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
第一天 没人问津
2009-6-26 20:49
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
段描述符表由处理器的内存管理硬件来引用,跟分页机制独立的。其实Window NT中一般用不到分段机制的,现代操作系统一般都是纯分页系统,保留分段机制只是为了兼容性的要求。用OD加载程序,查看段CS的段描述符一般为0023,该段的基地址为0,段限长为FFFFFFFF,ss,ds,es的段就是整个4G空间。
2009-6-26 21:45
0
雪    币: 214
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢楼上的。
请问 有相关的参考资料吗?
2009-6-27 21:45
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
3楼说的RING0?
2009-6-28 18:11
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
6
不论分不分页,分段机制只涉及到“逻辑地址”与“线性地址”

而分页机制涉及到线性地址与物理地址。

其实,段寄存器中装载的选择子,只有在装载时,选择子对应的描述符才被用到。一旦段寄存器装载完成,描述符就被SHADOW寄存器缓存起来了,之后只要不重新装载段寄存器,不管进行什么操作(比如从保护模式返回实模式,或者修改内存中GDT中的描述符),SHADOW寄存器中的内容就不会变,那么逻辑地址到线性地址的映射关系就不会变。

关于这一点,我最初见于梁肇新先生的《编程高手箴言》一书中,之后又在INTEL的手册中见过,不过记不得是哪一章了。
2009-6-30 19:48
0
雪    币: 214
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
3楼和6楼的观点不一样

3楼 段描述符表由处理器的内存管理硬件来引用,跟分页机制独立的
描述符里有32位的段基地址 这个段基地址在没启用分页的时候 指的就是物理地址 启用了分页之后呢?

6楼 逻辑地址到线性地址的是没有变 但是在启用分页前的线性地址就是物理地址 而启用的分页之后 就由分页机制决定物理地址。
一旦段寄存器装载完成,描述符就被SHADOW寄存器缓存起来了,之后只要不重新装载段寄存器,不管进行什么操作(比如从保护模式返回实模式,或者修改内存中GDT中的描述符),SHADOW寄存器中的内容就不会变,那么逻辑地址到线性地址的映射关系就不会变。  在此刻之前 我一直以为我现在写的实模式程序 是段左移4位加上偏移得出物理地址。其实不然,80386(可能是80286吧,没考究过)的寻址是一样的,只不过实模式下SHADOW寄存器的段描述符是固定的。
2009-6-30 21:47
0
雪    币: 214
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
在启用分页机制的过程中,如果一些数据已经在固定的物理内存中存在 比如GDT表,0b8000 等。这些固定的都是由分页程序来完成物理地址到分页地址的一一映射。如果线性地址(物理地址)是08b000H 那么在分页机制启用的过程中就要把分页地址0b8000H对应到物理地址0b8000H 如此一来 就保证了分页机制启用后 系统的寻址方式是段机制+分页机制的统一形式且数据不会错乱
2009-7-3 09:49
0
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
emc
9
呵呵,问个比较菜页和标题无关的问题哈。
这本书,好不好呀~ 我想看看。
2009-7-4 23:14
0
雪    币: 214
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
个人觉得不错
注重实践 系统点的理论知识可以去看看其它书
2009-7-6 13:46
0
雪    币: 205
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
08年的时候曾经提过一个类似的问题:http://bbs.pediy.com/showthread.php?t=74953,后来自己也就没有关注这个帖子了,今天偶然看到了这个问题,见还没有答复。今天就按照自己的理解给个答案吧,分段机制和分页机制是两个过程,分段机制是必须的,分页机制是可选的。在开启分页机制的情况下,分页机制是在分段机制后进行的,进一步将分段机制产生的线性地址转换为物理地址,由于分页机制是在分段机制之后进行的,那么在分段机制产生线性地址的过程中,寻址GDT也就不存在页目录,页表等转换过程了,而是按照分段机制的要求寻址GDT(注意红色部分),在线性地址产生后,才开始分页处理过程。
2013-3-30 19:58
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
09年的回答让22年的我醍醐灌顶
2022-12-24 21:11
0
游客
登录 | 注册 方可回帖
返回
//