能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
[求助]启用分页后如何寻址GDT
在启用分页机制的过程中,如果一些数据已经在固定的物理内存中存在 比如GDT表,0b8000 等。这些固定的都是由分页程序来完成物理地址到分页地址的一一映射。如果线性地址(物理地址)是08b000H 那么在分页机制启用的过程中就要把分页地址0b8000H对应到物理地址0b8000H 如此一来 就保证了分页机制启用后 系统的寻址方式是段机制+分页机制的统一形式且数据不会错乱
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
[求助]保护模式的段选择子问题!
1 不明白
2 使用不tongue的CR3,就可以是相同的线性地址对应不通的物理地址。
你可以去看看于渊的 第三章 pmtest8.asm
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
[求助]启用分页后如何寻址GDT
3楼和6楼的观点不一样
3楼 段描述符表由处理器的内存管理硬件来引用,跟分页机制独立的
描述符里有32位的段基地址 这个段基地址在没启用分页的时候 指的就是物理地址 启用了分页之后呢?
6楼 逻辑地址到线性地址的是没有变 但是在启用分页前的线性地址就是物理地址 而启用的分页之后 就由分页机制决定物理地址。
一旦段寄存器装载完成,描述符就被SHADOW寄存器缓存起来了,之后只要不重新装载段寄存器,不管进行什么操作(比如从保护模式返回实模式,或者修改内存中GDT中的描述符),SHADOW寄存器中的内容就不会变,那么逻辑地址到线性地址的映射关系就不会变。 在此刻之前 我一直以为我现在写的实模式程序 是段左移4位加上偏移得出物理地址。其实不然,80386(可能是80286吧,没考究过)的寻址是一样的,只不过实模式下SHADOW寄存器的段描述符是固定的。
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|