[转]X86的分页机制和相应系统结构
来源:互联网 发布:淘宝手机端的网址 编辑:程序博客网 时间:2024/06/06 16:31
X86的分页机制和相应系统结构
32bits的线性地址空间可以直接映射到物理地址空间,也可以间接映射到许多小块的物理空间(磁盘存储空间)上。这种间接映射方式就是分页机制。X86可用页大小为4KB、2MB和4MB(2MB和4MB只能在Pentium和Pentium Pro处理器中使用,本文中限定采用4KB页)。
在分页机制,X86使用了四种数据结构:
· 页目录项(PDE,Page Directory Entry):32bits结构,高20bits为页表基地址(物理地址),以4KB为递增单位,低12bits为页表属性,具体换算参见后面初始化部分;
· 页目录(Page directory):存储页目录项,位于一页中,总共可容纳1024个页目录项;
· 页表项(PTE,Page Table Entry):32bits结构,高20bits为页基地址(物理地址),低12bits为页属性;
· 页表(Page table):存储页表项,位于一页中,总共可容纳1024个页表项;
· 页(Page):4KB的连续地址空间;
为了实现分页机制和提高地址转换的效率,X86提供和使用了如下的硬件结构:
· 页标志位(PG,Page):该标志位为1,说明采用页机制;实际就是控制寄存器CR0的第31bit;
· 页缓存/快表(TLBs,Translation Lookaside Buffers):存储最近使用的PDE和PTE,以提高地址转换的效率;
· 页目录基地址寄存器(PDBR,Page Directory Base Register):用于存储页目录的基地址(物理地址),实际就是控制寄存器CR3;
为了实现将线性地址映射到物理地址,X86将32bits线性地址解释为三部分:第31bit到第22bit为页目录中的偏移,用于索引页目录项(得到对应页表的基地址);第21bit到第12bit为页表中的偏移,用于索引页表项(得到对应页的基地址);第11bit到第0bit为页中的偏移。这样,通过两级索引和页中的偏移量,最后能正确得到线性地址对应的物理地址。
- [转]X86的分页机制和相应系统结构
- 基于80x86的Linux的分段和分页机制
- 基于80x86的Linux的分段和分页机制
- X86中的分页机制
- 1基于80x86的Linux的分段和分页机制
- x86架构下与分页机制有关的宏和函数
- 【浅谈】x86内存管理的分段分页机制
- x86(32位)分页管理的机制
- x86(32位)分页管理的机制
- X86和X86-64的函数栈帧结构
- Windows x86 内存管理及分页机制
- usb设备的描述符和相应结构体
- 为什么说LINUX没有利用80X86微处理器的段分页机制实现程序分段?
- JIURL文档-Linux的虚拟内存与分页机制(x86-64位)(一)
- JIURL文档-Linux的虚拟内存与分页机制(x86-64位)(一)
- JIURL文档-Linux的虚拟内存与分页机制(x86-64位)(二)
- Linux的分段和分页机制
- Linux的分段和分页机制
- 泛域名和URL重写
- 用VB判断文件、隐藏文件、文件夹是否存在
- C# 中的委托和事件
- ASP.NET中,如果有一些引用存在于标记中,则不会重命名这些引用,继续吗?
- 安装程序无法创建一个DCOM用户帐号来注册 D:/....的解决方法
- [转]X86的分页机制和相应系统结构
- GUI自动化测试——框架及其状态模型
- 学习如何利用FitNesse解决开发质量方面的问题
- CSS网页布局DIV垂直居中的各种方法
- ASP.NET2.0中使用AJAX1.0控件的一点经验
- 登山的故事(什么是XP,设计)
- 函数的调用机制_用递归实现栈(Function call machenism_Recursive calls stimulate stack)
- 不写代码已经很多年了
- 对InstallSh...的使用建议