您的位置:首页 > 其它

关于windows保护模式的一些个人见解

2015-09-03 08:54 351 查看
1.寻址方式:通过段寄存器,首先需要知道的是段寄存器是一个索引值,ldtr也是。判断是在gdt中还是在ldt中,若是在gdt中,则直接根据gdtr中的一部分值先确定gdt的基址,然后根据索引就可以得到段的属性所在的位置;如果是在ldt中,则先要确定ldt所在的位置,因为ldtr其实也是一个索引值,所以根据gdt基址就可以找到ldt所在地址,然后再根据段寄存器就可以找到段相关属性所在的位置。

2.虚拟内存:因为当初实际所能拥有的物理内存并不能达到寻址方式所能实现的4GB,所以需要有虚拟内存。

然后就可以想到内存分页机制:原因就是防止TSR程序导致内存碎片化,然后实际情况下就可以随意映射。所以一般程序的线性地址并不是实际的物理地址。

虚拟内存在这里的作用就是在页面访问的时候 ,如果要访问的数据并没有映射到物理内存里面,那么就会从虚拟内存寻找,如果在虚拟内存,那么就会在RAM中寻找空闲的内存

如果没有就找到无效的数据,再找不到就把数据存到虚拟内存,然后再把要访问的数据映射到物理内存。

另外页目录要联系到cr3寄存器,CR3含有存放页目录表页面的物理地址

cr0寄存器决定了是否使用分页机制,也就决定了得到的地址是不是真正的物理地址。

另外附上罗云彬老师书上的虚拟内存实现图




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息