80386虚模式内存管理(2)
来源:互联网 发布:淘宝宝贝违规被下架 编辑:程序博客网 时间:2024/06/04 19:41
页转换
这种转换主要是把线性地址(经过段转换过的)转换成物理地址。页转换是操作系统实现虚拟内存的基础,CPU也可以在也转换基础上实现页访问保护,增强系统的稳定性。
页转换是可选的,只有当CR0寄存器的PG为设为1的时候,CPU才进行页转换。一般PG位在系统初始化的时候由操作系统来设置。
1、页面
页面大小固定为4K(2^12)字节,必须为连续的物理内存。
2、线性地址
页转换过程中需要用查询页面目录表和页面表。32位线性地址包括两个表的索引。线性地址如下:
图1 线性地址的格式
线性地址的22-31位表示页面目录表中索引值,通过该索引可以查找该目录对应的页面表的物理地址。
线性地址的12-21位表示页面表的索引值,通过页面目录表的查询已经可以查询到该目录对应页面表物理地址,在此基础上用该索引值可以查询到页面的物理地址。
线性地址的0-11位为页内偏移地址,在页的物理地址基础上,加上该偏移地址即可得到所要访问的物理地址。
综上,页转换可以用下图进行宏观描述:
图2 页转换
3、页面目录表
页面目录表存在于内存中,其物理地址保存在CR3(或者称为PDBR)中,如果启用分页转换,则系统初始化的时候CR3必须进行初始化。CR3可以用MOV进行显示的初始化和在任务切换的时候进行隐式的初始化。
当任务切换的时候,必须要保证先把目标任务页目录表物理地址加载到CR3中,然后才能切换到该任务,并执行他。
4、页面目录表项和页面表项
下图展示了页面目录表项和页面表项:
图3 页面目录表项和页面表项
1)页表基地址
页面目录表项的12-31位表示,该目录对应的页表基地址(一个目录对应1k个页表,这里的基地址为第一个页表的物理地址)。注意CPU的这个设计要求页表必须要4K对齐,否则20位无法表示页表的基地址。
页表项的基地址表示该页的起始的物理地址。
2)可用位(Avail)
对于系统程序员可用,Intel不对此进行定义。
3)提交位(P)
表示改页面或者该目录是否已经提交到物理内存,如果已经提交,则为1,没有提交则为0。
其他的位都是和访问控制有关的位,主要用来提供页面访问控制,增强系统稳定性。
总结:
80386内存转换(开启页转换),可以用下图表示:
图4 80386内存转换
参考资料:
Intel 80386 programmer’s refference manual
IA-32 Intel® Architecture Software Developer’s Manual Volume 3: System Programming Guide
- 80386虚模式内存管理(2)
- 80386虚模式内存管理(1)
- iphone单列模式(内存管理)
- 保护模式内存管理
- 内存管理(2)
- 内存管理(2)
- 内存管理(2)
- 保护模式内存管理总结
- arc模式的内存管理
- arc模式的内存管理
- 内存管理(2)系统空间的内存管理算法
- Linux操作系统基础(四)保护模式内存管理(2)
- C++内存管理(2)
- 操作系统--------内存管理(2)
- OC--内存管理(2)
- 虚拟8086模式的内存管理
- IA-32 保护模式内存管理
- 80X86保护模式内存管理
- lucene3.0分词结果显示
- 技术越来越厉害啦。电视能直接摄像。
- Erlang简介
- SQL自定义快捷键
- JDBC_1_2010_03_21(补)
- 80386虚模式内存管理(2)
- google退出中国市场——g迷怎么办
- Zigbee网络基本知识小总结
- delphi 调用 dll
- Android教程之MediaStore
- commons fileupload 相关的代码
- 利用 ISAPI Rewrite 做网站301永久重定向
- cygwin下dll和lib的生成方法(转)
- 开始, C++