-
2022-03-06 01:58:55
单机页表存在的问题及解决方案
某计算机按照字节寻址,支持32位的逻辑地址,若采用分页存储管理,页面大小(一个进程被切分为一个个小片称之为页面)为4kb,而每个页表项则为4b。
而一个页面4kb即2 ^ 12,说明一个页面需要12位才能表示。那么这个操作系统就有(32-12)即20位的地址用于保存当前页面的页号信息。也因此一个进程中最多可能会有2^20个页,即1048576个页表项。
所以记录一个个页面信息的页表需要2 ^20 * 4b个页框才够存储。这显然是非常庞大的数据。
而且,根据局部性原理所说的,也不是每个页在某段时间内都会被访问到。所以我们没必要让整个页表信息都存到内存中。两级页表
在解决上述问题之前。我们必须知道改造页表前必须保证的事项:
- 页表必须连续存放,否则指令找不到
- 没必要让整个页表存到内存中
我们都知道一个页面为4kb,而一个页表项为4b。所以我们不妨就建立无数个差不多一个页面大小的页表。这样一个页表可以记录1k个页表项。着一张张页表就构成了一个二级页表。
于此同时为了保证内存访问的连续性,我们还得专门哪一个页表记录这一个个分散的页表,我们称为页目录表。具体就如下图所示:如何实现地址变换
过程其实也很简单,如下图所示,我们需要访问一段指令,首先我们从pcb中加载这个进程的信息,得到页目录表。然后查看指令看到它的高位是全0,通过页目录表查到1号的二级页表,查看指令的二级页号为1我们根据二级页表的映射关系看到这个内存块号为4.
于是我们访问4号内存块。再根据业内偏移量最终就可以得到指令实际的物理地址。更多相关内容 -
两级页表
2021-07-26 07:59:41本文从单级页表存在的问题引出两级页表,以及两级页表如何实现地址的变换。1单级页表存在的问题假设某计算机系统按字节寻址,支持32位逻辑地址,采用分页存储管理,页面大小为4KB,页表项长度为4B。4KB = 212B,因此...本文是在基本分页存储管理的基础上对分页管理的优化。在上篇文章中说到,操作系统会为每个进程建立一张页表,实现页号和内存块号之间的对应关系。本文从单级页表存在的问题引出两级页表,以及两级页表如何实现地址的变换。
1单级页表存在的问题
假设某计算机系统按字节寻址,支持32位逻辑地址,采用分页存储管理,页面大小为4KB,页表项长度为4B。
4KB = 212B,因此页内地址要用12位表示,剩余20位表示页号。——上篇文章 第三节的结论。
因此,该系统中用户进程最多有220页。相应的,一个进程的页表中,最多会有220个页表项,所以一个页表最大需要220 * 4B = 222B。一个页框(内存块)大小为4B,所以需要222/212 = 210个页框存储该页表。而页表的存储是需要连续存储的,因为根据页号查询页表的方法:K号页对应的页表项的位置 = 页表起始地址 + K * 4B(页表项长度),所以这就要求页表的存储必须是连续的。
回想一下,当初为什么使用页表,就是要将进程划分为一个个页面可以不用连续的存放在内存中,但是此时页表就需要1024个连续的页框,似乎和当时的目标有点背道而驰了....
此外,根据局部性原理可知,很多时候,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此也没有必要让整个页面都常驻内存。
所以,单级页表存在以上两个问题。
2 两级页表
如何解决页表过大需要连续存储的问题呢?这个问题可以参考进程太大需要连续存储的答案。因为页表必须连续存放,所以可以将页表再分页。
解决方案:可以将长长的页表进行分组,使每个页面中刚好可以放下一个分组(如上面的例子中,页面的大小4KB),每个页表项4B,所以每个页面中可以存放1K个(1024)个页表项,因此每1K个连续的页表项为一组,每组刚好占一个页面,再讲各组离散的放在各个内存块中)。这样就需要为离散的页表再建立一张页表,称为页目录表,或外层页表,或顶层页表。
还是面的例子,32位的逻辑地址空间,页表项大小为4B,页面大小4KB,则页内地址占12位,单级页表结构逻辑结构图如下图所示
使用单级页表的情况
将页表分为分为1024个表,每个表中包含1024个页表项,形成二级页表。二级页表结构的逻辑地址结构如下图
两级页表如何实现地址转换:
(1) 按照地址结构将逻辑地址拆成三个部分。
(2) 从PCB中读取页目录起始地址,再根据一级页号查页目录表,找到下一级页表在内存中存放位置。
(3) 根据二级页号查表,找到最终想要访问的内存块号。
(4) 结合页内偏移量得到物理地址。
下面以一个逻辑地址为例。将逻辑地址(0000000000,0000000001,11111111111)转换为物理地址的过程。
3 虚拟存储技术
再解决了页必须连续存放的问题后,再看如何第二个问题:没有必要让整个页表常驻内存,因为进程一段时间内可能只需要访问某几个特定的页面。
解决方案:可以在需要访问页面时才把页面调入内存——虚拟存储技术(后面再说)。可以在页表中增加一个标示位,用于表示该页表是否已经调入内存。
4 几个问题
(1) 若采用多级页表机制,则各级页表的大小不能超过一个页面。
举例说明,某系统按字节编址,采用40位逻辑地址,页面大小为4KB,页表项大小为4B,假设采用纯页式存储,则要采用()级页表,页内偏移量为()位?
页面大小 = 4KB,按字节编址,因此页内偏移量为12位。
页号 = 40 - 12 = 28位。
页面大小 = 4KB,页表项大小 = 4B,则每个页面可存放1024个页表项。因此各级页表最多包含1024个页表项,需要10个二进制位才能映射到1024个页表项,因此每级页表对应的页号应为10位二进制。共28位的页号至少要分为3级。
(2) 两级页表的访问次数分析(假设没有页表):
(1) 第一次访问:访问内存中的页目录表。
(2) 访问内存中的二级目录。
(3) 访问目标内存单元。
从上面可以看出,两级页表虽然解决了页表需要连续存储的问题,但是同时也增加了内存的访问次数。
4 小结
-
内存管理_两级页表
2021-08-30 01:01:33两级页表的原理、地址结构如何实现地址变换如何解决单级页表的问题?需要注意的几个细节 前言 此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。 提示:以下...前言
此篇文章是我在B站学习时所做的笔记,大部分图片都是课件老师的PPT,方便复习用。此篇文章仅供学习参考。
提示:以下是本篇文章正文内容
知识总览
单级页表存在的问题
根据局部性原理可知,很多时候,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此没有必要让整个页表都常驻内存。如何解决单级页表的问题?
问题一:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。
问题二:没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。
可将长长的页表进行分组,使每个内存块刚好可以放入一个分组(比如上个例子中,页面大小4KB,每个页表项4B,每个页面可存放1K个页表项,因此每1K个连续的页表项为一组,每组刚好占一个内存块,再讲各组离散地放到各个内存块中)
另外,要为离散分配的页表再建立一张页表,称为页目录表,或称外层页表,或称顶层页表两级页表的原理、地址结构
32位逻辑地址空间,页内地址占12位,其余 20位为页号 ,所以采用单级页表结构的逻辑地址结构是这样,既然页号有20位,意味着,一个进程最多有220个页面,相应的,有220个页表项,用十进制表示的话,这些页表项的编号应该是0~1048575(是220-1)
页表项个数 = 页面大小 / 页表项大小
如何实现地址变换
起始地址计算方式:M号内存块的起始地址=M*内存块大小
如何解决单级页表的问题?
若想访问的页面不在内存中,则产生缺页中断。
缺页中断是内中断需要注意的几个细节(考点例题!)
知识回顾与重要考点
-
操作系统 :两级页表
2021-12-07 19:43:04单级页表存在的问题 某计算机系统按字节寻址,支持32位的逻辑地址,采用分页存储管理,页面大小为4KB,页表项长度为4B. 4KB =B,因此页内地址要用12位标识,剩余12位表示页号。 因此,该系统中用户进程最多有页。...单级页表存在的问题
某计算机系统按字节寻址,支持32位的逻辑地址,采用分页存储管理,页面大小为4KB,页表项长度为4B.
4KB =
B,因此页内地址要用12位标识,剩余12位表示页号。
因此,该系统中用户进程最多有
页。相应的,一个进程的页表中,最多会有
,共需要
个页框存储该页表。
根据页号查询页表的方法:K号页对应的页表项存放位置 = 页表始址 + K * 4要在所有的页表项都连续存放的基础上才能用这种方法找到页表项。
根据局部性原理可知,很多时候,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此没有必要让整个页表都常驻内存。
问题一:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。
问题二:没有必要让整个页表常驻内存,因此进程在一段时间内可能只需要访问某几个特定的页面。
如何解决单极页表的问题
可将长长存块刚好的页表进行分组,使每个内可以放入一个分组(比如上个例子中,页面大小4KB,每个页表项4B,每个页面可存放1K个页表项,因此每1K个连续的页表项为一组,每组刚好占一个内存块,再将各组离散地放到各个内存块中)
另外,要为离散分配的页表再建立一张页表,称为页目录表,或称外层页表,或称顶层页表。
如何如何实现地址变换
1.按照地址结构将逻辑地址拆分成三部分
2.从PCB中读出页目录表初始地址,再根据一级页号查页目录表,找到下一级页表在内存中存放的位置
3.根据二级页号查表,找到最终想访问的内存块号
4.结合页内偏移量得到物理地址
注意事项
1.若采用多级页表机制,则各级页表的大小不能超过一个页面
2.两级页表的访问次数分析(假设没有块表机构)
第一次访存:访问内存中的页目录表
第二次访存:访问内存中的二级页表
第三次访存:访问目标内存单元
总之:N级页表访问一个逻辑地址需要N+1次访存(没有块表机构)
-
3.1.9 两级页表(地址变换、如何解决单级页表的问题)
2021-12-31 10:54:242. 两级页表的原理、地址结构 3. 如何实现地址变换? 4. 如何解决单级页表的问题? 5. 需要注意的几个细节 6. 知识回顾与重要考点 0. 知识总览 1. 单级页表存在的问题 2. 两级页表的原理、地址结构 3. 如何... -
【操作系统】王道考研 p40 两级页表
2021-12-15 19:11:21两级页表 知识总览 单级页表存在的问题 问题1:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。 问题2:由程序的局部性原理,进程在一段时间内只需要访问某几个页面就可以正常运行了。因此没必要... -
3.1_9_两级页表.pdf
2022-03-28 13:53:393.1_9_两级页表.pdf -
分页存储中的两级页表
2019-04-28 17:15:41一、页面与页表 1、页与帧 在分页存储的管理方式中,将进程的逻辑地址空间分为若干大小相等的片,称为页面或页;相应地,将物理内存空间分为与页面大小相等的块,称为物理块或帧。 2、页表 现在已经将逻辑地址空间... -
3.1_9_两级页表
2020-08-17 15:41:55重新建立起对一级页表的页表,页目录表 将逻辑地址进程拆分成一级页号和二级页号 地址转换的流程 根据一级页号在页目录表中的位置,找到二级页表所在的内存块号 根据所得的内存块号和二级页号,找到真正的物理块号 ... -
具有快表的地址变换机构以及两级页表的存储结构
2021-08-27 14:54:23),用来存放最近访问的页表项的副本,可以加速地址变换的速度。 与此对应,内存中的页表常称为慢表。 (二)引入快表后,地址的变换过程 ① CPU给出逻辑地址,由某个硬件算得页号、页内偏移量,将页号与快表中... -
三十二、两级页表
2021-02-13 21:10:00一、知识总览 二、单级页表存在的问题 ...2.两级页表的访存次数分析(假如没有快表机构) 第一次访存:访问内存中的页目录表 第二次访存:访问内存中的二级页表 第三次访存:访问目标内存单元 四、总结 ... -
【数据结构与算法】两级页表(Two-Level Page Table)
2018-02-07 15:50:40对于要求连续的内存空间来存放页表的问题,可利用将页表进行分页,并离散地将各个页面分别存放在不同的物理块中的办法来加以解决...当页面大小为 4 KB时(12位),若采用一级页表结构,应具有20位的页号,即页表项应有1兆 -
两级页表如何实现地址转换
2021-05-10 22:58:18(2) 从PCB中读取页目录起始地址,再根据一级页号查页目录表,找到下一级页表在内存中存放位置。 (3) 根据二级页号查表,找到最终想要访问的内存块号。 (4) 结合页内偏移量得到物理地址。 下面以一个逻辑地址为例。将... -
两级页表&基本分段存储管理
2021-07-12 11:44:43文章目录单级页表存在的问题解决问题两级页表实现原理、地址结构实现地址变换注意事项小结基本分段存储管理分段段表地址变换分段、分页管理对比小结 单级页表存在的问题 某计算机系统按字节寻址,支持32位的逻辑... -
【操作系统】一级页表与二级页表概念梳理
2022-03-05 16:50:32马上期末考试,我才发现我对于页表的概念有一些误解。通过网上的查询与自己的理解,手写下面的概念梳理,希望能对后来者有所帮助。 如果有哪些部分是错误的,还请大佬斧正!感谢 ... -
两级页表(Two-Level Page Table)
2012-04-14 10:26:11对于要求连续的内存空间来存放页表的问题,可利用将页表进行分页,并离散地将各个页面分别存放在不同的物理块中的办法来...当页面大小为 4 KB时(12位),若采用一级页表结构,应具有20位的页号,即页表项应有1兆个;在采 -
二级页表理解与计算
2020-11-12 10:25:57二级页表 为什么要二级页表? 1.页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框2.没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。 页表项的大小如何计算?... -
【学习笔记】第三章——内存 II(分页存储、快表与局部性原理、两级页表)
2021-08-28 18:24:19二级页表1)单级页表存在的问题2)两级页表3)如何解决单级页表的问题 一. 分页存储概念 内存分成等大区域(页框),页框号从0开始 进程也分成和页框等大的区域(页),页号也从0开始 页框不能太大,可能产生过大... -
(王道408考研操作系统)第三章内存管理-第一节6-4:非连续分配管理方式之基本分页存储管理之两级页表
2021-12-06 19:17:32文章目录一:单级页表存在的问题二:两级页表原理(1)基本原理(2)逻辑地址结构 一:单级页表存在的问题 问题一:页表必须连续存放,当页表很大时,就需要占用很多个连续的页框 假设某系统按字节寻址,支持32位的... -
内存管理8 两级页表
2021-03-07 19:02:00 -
3.1.9 二级页表
2020-09-24 10:36:23目录思维导图单级页表存在的问题二级页表的原理 地址结构如何实现地址转换需要注意的细节 思维导图 单级页表存在的问题 二级页表的原理 地址结构 如何实现地址转换 需要注意的细节 ... -
基本页表和二级页表的思路和比较
2020-08-01 10:44:20基本页表 默认块号大小为4KB。 (页表项由 页号 和 块号 组成) 页号是进程的,块号是内存的。 块号 -> 物理地址 内存的块号是唯一的,通过它能得到内存内的物理地址。 块号为0,它的物理地址为0。 比如块号为3,... -
内存管理之二级页表详解
2019-08-08 13:11:39二级页表 一级页表相当于把一本书缩小成几页的目录,通过目录来找书的内容。 但有个问题,如果书非常非常厚,有两本康熙字典那么大,目录也非常多,有一本高中教材那么厚。 那自然而然的,继续分呗,把高中教材... -
操作系统大作业-二级页表
2022-02-03 13:42:07假设某系统的进程虚拟地址为32位,使用12位=4KB长度的页面,页表也是分页存储管理,每个页表表目占4 Bytes。请你: 1)设计一个页表管理的数据结构; 2) 根据用户进程要访问的虚拟空间地址xxx,同时假设要访问的... -
《操作系统真象还原》第五章 二级页表原理
2022-02-06 09:45:11二级页表地址拆分规则:高10位为页目录(二级)索引,中间10位为(一级)页表索引。最后低12位为物理页(实际物理地址)内偏移量。 举例说明:输入虚拟地址 0x01234567 对其拆分二进制,我们知道十六进制到二进制是...