ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

详解多级页表与块表

2021-07-26 15:03:37  阅读:490  来源: 互联网

标签:多级 快表 物理地址 地址 详解 页表 内存


多级页表与快表

文章目录

什么是页表

页表就是一个用于将虚拟地址转换为物理地址的工具

转换的公式就是: 通过页表先找到页,在使用页内偏移地址找到最终对应的实际物理内存

页表带来的问题

在页式内存管理中有两个重要的问题

  1. 虚拟物理地址到物理地址转换要快
  2. 当虚拟空间很大的时候页表也会变的很大

所以为了解决第一个问题就有了快表

所以为了解决第二个问题就有了多级页表

快表

快表一般存放在 CPU 内部的高速缓冲存储器 Cache。

快表可以直接理解为页式内存管理的高速缓存(Cache)

快表的原理是基于局部性原理

  • 时间局部性: 也就是某个数据被访问过那么这个数据不久很可能再次访问
  • 空间局部性: 就是某个存储单元被访问过,那么它周围的存储单元很有可能被访问

快表的作用:加速虚拟地址到物理地址的转换速度

快表中存放着页表的一部分甚至全部内容

快表作为页表的高速缓存器(Cache),作用与页表的本质作用一致,只不过提高了页表的访问速度

原理:如果用页表做地址转换,则读写数据内存时,CPU要访问内存两次。当使用快表,有时只要访问一次高速缓存器,一次主存,这样就可以加速查找并提高指令执行速度

使用快表之后的地址转换流程:

  1. 根据虚拟地址中的页号查找快表
  2. 若该页在快表中,则直接从快表中读取对应的物理地址
  3. 若该页不在快表中,则访问内存中的页表,再从页表中读取物理地址,同时将该页表中的物理地址映射到快表中
  4. 当快表填满时,又要增加新的页表,就按照一定的淘汰策略删掉一页

多级页表

为了提高内存空间利用率,页应该小,页小了那么页表就大了

如果只有一级页表那么4G的虚拟地址空间就需要4M的连续内存来存放页表,开销太大

这时候就出现了多级页表,用来节约内存

使用二级页表的画,就只需要一个4k的页表来管理1024个二级页表,这时候你会有疑问怎么消耗的内存更大了,

其实不然,这里的内存不是都要放在内存里面的,根据局部性原理只有一级页表在内存,二级页表都存放在外部磁盘。只有当缺页中断的时候才会调用进去内存中

三级页表转换法

  1. 逻辑地址转物理地址

段起始地址+段内偏移地址=线性地址

一个32位的线性地址被划分为三部分

  • 10bit 页目录索引
  • 10bit 页吧表索引
  • 12bit 页内偏移量
  1. 线性地址转物理地址

cr3(页表寄存器)中拿出页目录地址

页目录地址+页目录索引=页表地址+页表索引=页地址+业内偏移=物理地址

参考

深入理解操作系统之——分页式存储管理

页式内存管理中的快表和多级页表

标签:多级,快表,物理地址,地址,详解,页表,内存
来源: https://blog.csdn.net/ahelloyou/article/details/119109669

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有