http://book.51cto.com/art/200812/103230.htm

  分页机制是80x86内存管理机制的第二部分。它在分段机制的基础上完成虚拟(逻辑)地址到物理地址转换的过程。分段机制把逻辑地址转换成线性地址,而分页则把线性地址转换成物理地址。分页可以用于任何一种分段模型。处理器分页机制会把线性地址空间(段已映射到其中)划分成页面,然后这些线性地址空间页面被映射到物理地址空间的页面上。分页机制有几种页面级保护措施,可和分段机制保护机制合用或替代分段机制的保护措施。例如,在基于页面的基础上可以加强读/写保护。另外,在页面单元上,分页机制还提供了用户-超级用户两级保护。

  前面介绍的分段机制在各种可变长度的内存区域上操作。与分段机制不同,分页机制对固定大小的内存块(称为页面)进行操作。分页机制把线性和物理地址空间都划分成页面。线性地址空间中的任何页面可以被映射到物理地址空间的任何页面上。

  80x86使用4K(2^12)字节固定大小的页面。每个页面均是4KB,并且对齐于4K地址边界处。这表示分页机制把2^32B(4GB)的线性地址空间划分成2^20(1M = 1048576)个页面。分页机制通过把线性地址空间中的页面重新定位到物理地址空间中进行操作。由于4KB大小的页面作为一个单元进行映射,并且对齐于4K边界,因此线性地址的低12位可作为页内偏移量直接作为物理地址的低12位。分页机制执行的重定位功能可看做把线性地址的高20位转换到对应物理地址的高20位。

  当使用分页时,处理器会把线性地址空间划分成固定大小的页面(长度4KB),这些页面可以映射到物理内存中或磁盘存储空间中。当一个程序(或任务)引用内存中的逻辑地址时,处理器会把该逻辑地址转换成一个线性地址,然后使用分页机制把该线性地址转换成对应的物理地址。

  如果包含线性地址的页面当前不在物理内存中,处理器就会产生一个页错误异常。页错误异常的处理程序通常就会让操作系统从磁盘中把相应页面加载到物理内存中(操作过程中可能还会把物理内存中不同的页面写到磁盘上)。当页面加载到物理内存中之后,从异常处理过程的返回操作会使得导致异常的指令被重新执行。处理器用于把线性地址转换成物理地址时所需的信息及处理器产生页错误异常(若必要的话)所需的信息都存储于页目录和页表中。

  分页与分段最大的不同之处在于分页使用了固定长度的页面。段的长度通常与存放在其中的代码或数据结构具有相同的长度。与段不同,页面有固定的长度。如果仅使用分段地址转换,那么存储在物理内存中的一个数据结构将包含其所有的部分。但如果使用了分页,那么一个数据结构就可以一部分存储于物理内存中,而另一部分保存在磁盘中。

  为了减少地址转换所要求的总线周期数量,最近访问的页目录和页表会被存放在处理器的缓冲器件中。该缓冲器件被称为转换查找缓冲区(Translation Lookaside Buffer,TLB)。TLB可以满足大多数读页目录和页表的请求而无需使用总线周期。只有当TLB中不包含要求的页表项时才会使用额外的总线周期从内存中读取页表项,通常在一个页表项很长时间没有访问过时才会出现这种情况。

转载于:https://www.cnblogs.com/argenbarbie/p/5401327.html

线性地址到物理地址的映射相关推荐

  1. linux内核线性地址等于物理地址,Linux 从虚拟地址到物理地址

    我们都知道,动态共享库里面的函数的共享的,这也是动态库的优势所在,就是节省内存.C 编译出来的可执行文件几乎都会用到libc的库,假如没有这个共享的技术,每个可执行文件都要占一份libc库的内存,这将 ...

  2. linux内存管理---虚拟地址、逻辑地址、线性地址、物理地址的区别(一)

    分析linux内存管理机制,离不了上述几个概念,在介绍上述几个概念之前,先从<深入理解linux内核>这本书中摘抄几段关于上述名词的解释: 一.<深入理解linux内核>的解释 ...

  3. (转)逻辑地址,线性地址,物理地址的差别

    段页式内存管理中,逻辑地址,线性地址,物理地址的差别 线性地址是逻辑地址到物理地址变换之间的中间层,是处理器可寻址的内存空间(称为线性地址空间)中的地址.程序代码会产生逻辑地址,或者说是段中的偏移地址 ...

  4. 逻辑地址、线性地址、物理地址和虚拟地址初步认识

    早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址.当计算机同时运行多个程序时,必须保证这些 ...

  5. 逻辑地址、虚拟地址、线性地址、物理地址

    逻辑地址.虚拟地址.线性地址.物理地址的区别: 虚拟地址: 在保护模式下,虚拟地址由段选择子+段内偏移量组成.利用段选择子可以获取到段描述符,再从段描述符中取得段的基地址.也就是说虚拟地址就是xxxx ...

  6. 逻辑地址、线性地址和物理地址的关系

    逻辑地址.线性地址和物理地址的关系 首先不得不提的历史 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以 ...

  7. 逻辑地址、线性地址和物理地址之间的转换

    首先说明一点,本篇的文章是根据自己的理解总结,但是图可能是在已有的博客中截图的,在此对那些对我理解该部分知识提供帮助的博客博主表示感谢! 在逻辑地址.线性地址和物理地址一节中,已经对逻辑地址.线性地址 ...

  8. c 取地址 虚拟地址 物理地址_通过linux0.11源码理解进程的虚拟地址、线性地址、物理地址...

    进程的地址有三种,分别是虚拟地址(逻辑地址).线性地址.物理地址.在分析之前先讲一下进程执行的时候,地址的解析过程.在保护模式下,段寄存器保存的是段选择子,当进程被系统选中执行时,会把tss和ldt等 ...

  9. 逻辑地址,线性地址,物理地址

    2019独角兽企业重金招聘Python工程师标准>>> 本人是搞java开发的,但是了解一些底层的东西能帮助我理解一些编程上的东西. linux使用的基本上都是虚拟地址,内核程序中用 ...

最新文章

  1. VisualStudio 合并代码文件
  2. 关于Docker的理解
  3. IBM首席执行官提出人工智能部署三大基本原则
  4. FPGA之道(26)VHDL初始化
  5. 怎么理解linux的平均负载及平均负载高后的排查工具
  6. python wmi_python wmi模块学习
  7. iframe内联元素有白边原因_必看|番茄卷叶病发生的原因以及防治方法!
  8. DIV+CSS规范命名
  9. 【Linux系统编程】进程间通信--有名管道
  10. Nagle算法延时确认
  11. python无法使用物理网卡_Python 实现监控所有物理网卡状态
  12. 内网服务器putty到天翼云,SSH隧道管理内部服务(putty,ssh secure shell)for win
  13. 周日历插件weeklyCalendar,可添加日历提醒
  14. SSH之known_hosts文件
  15. 关于苹果AR/VR专利新闻的一次超详细探索!
  16. php实现远程下载文件到本地服务器指定目录
  17. Winsock 函数
  18. GAN动漫人像生成实现(附带源码)
  19. 163邮箱登陆忘记密码怎么办?163手机邮箱怎么登录?
  20. Python3下Web下载媒体小工具(常用来下B站视频)

热门文章

  1. 如何提升你的CSS技能?掌握这20个css技巧即可[完整版]
  2. 2020年最新程序员职业发展路线指南,超详细!
  3. python中numpy、matplotlib的引入及测试
  4. 接口 对象 = new 实现类 与 实现类 对象= new 实现类
  5. linux系统为什么很重要,为什么Linux系统始终取代不了Windows?这4个原因80%的人不知道!...
  6. 计算机技术与分析化学论文,分析化学论文范文
  7. c语言红警源代码,真香!红警游戏源代码开源了,70,80,90最好的游戏
  8. c语言第八章实验题答案,第八章实验报告
  9. 加减法叫做什么运算_【课堂实录】加减法运算的本质(四上)
  10. STM8 ADC转换模式-------单次模式