【操作系统/计组】页面大小 与 页表项 ( 二级页表 、多级页表 )
【操作系统/计组】页面大小 与 页表项
- 结论1(一级页表)
- 结论2(二级、多级页表)
- 例题
首先,不论一级页表还是多级页表:
页面大小 = 2^(页内地址位数)
页号有多少,页就有多少个
用于存放页的地址空间就可以写为
页号 | 页内地址(或叫位移量) |
---|
接下来,分别来看一级页表和多级页表
1. 一级页表
页表是系统为每个进程建立的页面映射表
进程中的每一页在页表中都有一项,这个项就是页表项,大小可以理解为页表中一行的大小
每个页表项的结构为:
页号 | 物理块号 |
---|
此时,存储页号和物理块号的空间大小是页表项的大小
整个页表的内容就是:
页号 | 物理块号 |
---|---|
页号 | 物理块号 |
页号 | 物理块号 |
页号 | 物理块号 |
…… | …… |
易知,页表大小 = 页表项的大小 x 页表项的个数
结论1(一级页表)
在一级页表,可以认为页表项大小与页面大小没有关系
2.二级页表
当页面数量很多时,需要标很多页号,导致页号占的位数很多。
如果将所有的页号及对应的物理块号写入一个页表,页表会非常长,页表需要占据太多连续地址空间,而内存空间不够,因此需要将一页拆分
将原先页号的部分
页号 |
---|
按照原始页面大小,拆分为页号 和 “页面”。注意,还是行使页表的功能,实现页号与物理块号的映射,只是改变了结构
页号 | 页面 |
---|
现在拥有存放页的地址空间就变成了
页号 | 页面1 | 页面2 |
---|
将现在的页号命名为【外层页号】
将从页号拆分出来的页面1命名为【外层页】
原始的页面视为【内层页】
外层页号 | 外层页 | 内层页 |
---|
接下来看位数
内层页还是原始页面的大小
上文提到,外层页面大小 = 内层页面大小
但外层页是要履行页表功能,存放内层页的索引,页表项还是“一行”的大小
因此外层页的位数 = log2(内层页面大小 / 页表项的大小),即外层页还是表示存放页表项的个数
这就是页面大小与页表项大小的关系
在课本中,二级页表结构为
外层页号 | 外层页内地址 | 页内地址 |
---|
结论2(二级、多级页表)
1)外层页号对外层页的计数,存放外层页号,位数 = log2(外层页个数)
2) 外层页存放的页表项是内层页的索引,外层页大小 = 内层页大小,外层页内地址位数 = log2(页面大小 / 页表项的大小)
3)页内地址位数 = log2(页面大小),存放物理地址
3.多级页表
在二级页表的基础上,如果页表还是大,没有足够连续内存空间,就再将页号的空间划分,可理解为:
外层页号 | 外层页n | …… | 外层页3 | 外层页2 | 外层页1 | 内层页 |
---|
称为n+1级页表。例如外层页共分3页,称为四级页表。
多级页表的最高页表项,即外层页n的大小不能超出一页大小了
同样,每个外层页的大小 = 内层页面大小
每个外层页的位数 = log2( 页面大小 / 页表项大小 )
按理来说,外层页号占的空间需不超过一个页面大小,外层页以及内层页的大小都为一个页面大小
例题
已知系统为48位地址,页面大小4KB,页表项大小为8B,使用页式存储,则要采用多少级页表,页内偏移多少位 ?
页面大小 = 2 ^12 B,故页内偏移12位
页号位数 = 48-12 = 36
4KB / 8B = 2 ^9 ,一个页面能装下2 ^9个页表项
按理来说,外层页以及内层页的大小都应为一个页面大小,外层页号需不超过一个页面大小,不然需要对外层页号再次分页
因此,36/9 = 4 ,需要四级页表
以上是本人理解,欢迎各位指正
【操作系统/计组】页面大小 与 页表项 ( 二级页表 、多级页表 )相关推荐
- 页面大小和页表项之间有必然的联系么?【转】
转自:https://zhidao.baidu.com/question/335974047.html 如果一个页面的大小为4K,页表项大小为4B,那么为什么可以存2^10个页表项?我的意思就是问为什 ...
- 页框,页表,页表项,页面大小,页表项 长度的理解
1.页框(物理块):将内存空间分成一个个大小相等的分区(页框号或物理块号从0开始). 2.页(页面):将用户进程的地址空间分为与页框大小相等的一个个区域(页号一般也从0开始). 因为要将进程中的页分别 ...
- 操作系统(九) -- 多级页表与快表
文章目录 单级页表的缺点 多级页表的提出 第一种尝试:页表里面只存放用到的页 第二种尝试:多级页表,页目录表+页表 多级页表的缺点 相连快速存储TLB(快表) 小结 参考资料 单级页表的缺点 前面说了 ...
- 大二学科不挂科 速冲方法推荐(数据结构+计组+操作系统+算法+数据库+计网)
文章目录 前引 学科速成总结 1.数据结构 2.计算机组成原理 3.操作系统 4.数据库系统概论 5.算法设计与分析 结束语 前引 这段时间本来是紧锣密鼓的在准备面试 原本以为自己已经学过的科目 考试 ...
- 2.3.1操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则
2.3.1操作系统-存储管理:页式存储.逻辑地址.物理地址.物理地址逻辑地址之间的地址关系.页面大小与页内地址长度的关系.缺页中断.内存淘汰规则 页式存储 逻辑地址.物理地址 如何判断物理地址和逻辑地 ...
- 分页存储概念清晰梳理(页面、页表、页表项、页面大小、页内地址等概念)
当我在学习操作系统的存储器管理这一章中的分页存储时发现我总是将许多概念混为一谈,当我求助于CSDN等众多网站的资源时发现其中的概念作者写的十分清晰但篇幅较长难以理解,因此我想用自己的理解用更加简洁明了 ...
- 【王道计组笔记】Cache高速缓存基本工作原理
缓存器 的引入: [王道计组笔记]高速缓存器:局部性原理及性能分析_muse_age的博客-CSDN博客 1.主存的块放到Cache中哪个位置?CPU向缓存中读取一个数据过程? (1)空位随意放:全相 ...
- 计组期末复习---个人版
(一)计算机系统概论 1.1计算机分类与发展历史 分类:电子模拟计算机和电子数字计算机 电子模拟计算机:数值由连续量来表示,运算过程是连续的 电子数字计算机:按位运算,并且不是连续地跳动运算 专用计算 ...
- 计组期末复习之例题与解析
计组例题与解析 第一章:概论 无 第二章:运算方法和运算器 例2-1 求补码 对于正数,不变 对于负数,符号位不变,数值位取反加一 例2-2 数轴形式表示原码.反码.补码范围 第一位符号位,后面是数值 ...
最新文章
- 程序猿接私活经验总结,来自csdn论坛语录
- boost::core模块实现分配构造throws
- SAP HANA Database Explorer 里的 SQL 语句如何排错 trouble shoot
- 部署webservice到远程服务器
- 前端学习(1768):前端调试值之内存监控的原理和方法三
- java安全(二):JDBC|sql注入|预编译
- 关于 web.config impersonate 帐号模拟
- ufw禁止IP访问ubuntu服务器
- 10张图,让你瞬间给自己减压
- Cron 触发器及相关内容 (第四部分)
- 一些关于OTA的相当不错的网站和资料
- Eric的日期选择下拉列表小控件
- Atitit 延迟绑定架构法attilax总结
- html网页设计课程设计总结,网页制作课程设计报告总结.doc
- 【转】从机器学习谈起
- 黑马java学习笔记4 强化部分 常见API
- Hadoop运行原理详解
- 微信小程序 收藏功能实现
- “太上,不知有之;其次,亲而誉之;其次,畏之;其次,侮之。”
- java 定义泛型变量_Java不应该允许变量声明的泛型类型声明的任何原因?