精华内容
下载资源
问答
  • 2020-05-13 13:51:44

    页表项用来将逻辑地址转化为物理地址,具体实现步骤为:

    • 用逻辑地址高位的页号去页表项内索引,得到对应的物理帧(跟页一个概念)号
    • 将物理帧号与逻辑地址地位的偏移量相加得到实际的物理地址

    那页表项存在哪里呢?
    操作系统为了管理内存,将内存分成了若干页(经评论区指正,应为页框,而进程则被分成若干页!后面的页也都是页框!),每一个页都是固定大小的。而页表项也是要存在内存中的。考虑一种情况:页面大小是4KB,每个页表项是4B。我们知道页表项用来将逻辑地址转化为物理地址,所以页表项应该跟物理地址一一对应。而物理地址就是内存呐,内存是按照页来划分,所以一个页表项就是代表着一个页。现在,页表项大小是4B = 4*8 bit = 32bit,32位二进制可以表示 2 32 2^{32} 232个数,所以一共可以表示 2 32 2^{32} 232个页,这样就可以计算出内存大小为 2 32 2^{32} 232x4KB = 16TB。

    实际内存没有这么大,因为页表项中还有有效位,而且页表项也占用了一部分的内存空间。

    更多相关内容
  • 展开全部一、理解这样一个概念,操作系统为了方便管理内存e69da5e887aa3231313335323631343130323136353331333431353936,将内存划分成很若干个页,每个页表项就代表一个页的地址(页的地址,不是内存地址)。...

    展开全部

    一、理解这样一个概念,操作系统为了方便管理内存e69da5e887aa3231313335323631343130323136353331333431353936,将内存划分成很若干个页,每个页表项就代表一个页的地址(页的地址,不是内存地址)。

    二、4B大小的页表项,意味着支持最大的页表数是2的32次方=4294967296 (4B=32bit),一个页的大小4K,那么4B大小的页表项,表示操作系统支持4294967296*4K = 16GB大的内存。

    三、现在问题是页表占用一定的内存。

    (一)现在假设有2GB(一定要小于16GB)内存。

    1、那么它一共有2GB/4KB=512K个页,也就是说页表项有512K项,而每个页表项的大小4B,那么页表在内存中占用的大小是:512K*4B=2MB,意味着,只要2MB就可以表示512K个页(每个页是4KB,总内存大小是2G),它页表本身占用了2MB/4K=512个页。

    2、这一题 就是问你1个页可以表示多少个页表项,4KB/4B=1024个页表项。页面大小与页表项没有绝对的关系,但它们有这样关系:

    (二)页面大小 * 2 ^(页表项大小)=操作系统最大支持内存大小(虚拟内存)

    1、本题是 4K * 2^(4B) = 16GB

    2、页表占用内存 = 操作系统内存/页面大小 * 页表项大小,本题是,假设操作系统内存为2GB。 2GB/4KB*4B = 2MB

    3、页表占用的页数是=页表占用内存/页面大小,这题同上假设2MB/4

    展开全文
  • 页 页表 页表项

    千次阅读 2020-11-03 10:17:08
    //操作系统计算机组成原理里都讲到内存管理的页式管理,但是本人以及很多初次学习分页的时候,都会迷茫页表大小和页表项大小之间的关系,本人仔细分析了后写了这篇blog,仅当学习交流,个人理解之用,如果有错或者...

    页 页表 页表项

    edgar_01112 2016-04-26 21:11:56 28031 收藏 35
    分类专栏: 计算机操作系统 文章标签: 操作系统

    //
    //操作系统和计算机组成原理里都讲到内存管理的页式管理,但是本人以及很多初次学习分页的时候,都会迷茫页表大小和页表项大小之间的关系,本人仔细分析了后写了这篇blog,仅当学习交流,个人理解之用,如果有错或者分析不够严谨,欢迎指正。
    //按字、图结合起来分析,相信还是比较容易看懂。

    //一、首先明确几个概念

    逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号单元开始编址,称之为目标模块的相对地址,即为逻辑地址。

    页:将进程划分的块,对应的大小就叫页面大小。

    页框:将内存划分的块。

    页和页框二者一一对应,一个页放入一个页框,(理论上)页的大小和页框的大小相等。

    页表:就是一个页和页框一一对应的关系表。【存放在内存中】 关系表只是起到一个索引的作用,说白了就是能根据关系表能查到某一个页面和哪一个页框所对应。

    //分页管理时,将若干字节视为一页,比如4K byte。此时,内存变成了连续的页,即内存为页数组,每一页物理内存叫页帧,以页为单位对内存进行编号,该编号可作为页数组的索引,又称为页帧号。。。。页帧号也叫页帧数

    //
    //二、用例子说话【例子出现在:《王道考研操作系统》的内存管理部分】

    已知条件:逻辑地址32位、页面大小4KB、页表项大小4B,按字节编址。

    分析:

     首先 32 位的虚拟地址可表示的进程大小应该是2^32B = 4GB(暂时别去想页号P占多少位,W占多少位)             
    

    2.(根据页的定义和页面大小的定义)将进程进行分页:

    3.我们已经知道了页面的数目为:2^20页。现在的迷茫点就在于页表项的问题上。
    上图在页表上已经给出了几个数据:20位,12位,32位,2^20项。一一解释如下【请结合上图一个一个数据分析】:

    2^20项:因为页表的作用是要将页面的页框一一对应起来,所以,每一个页面在页表中都应该有一个页表项:用来表示一个页号对应一页页框号(内存中的块号),故应     
    
                    该有2^20项。【不应该有问题吧,就好像一个班有50个同学,每个人都应该有一个地址一样】
    

    20位:已经很显然了,需要表示出2^20个页表项,就至少需要20位的地址。为什么只取20位而不是21位,22位呢,本人现在还没想这个问题,就暂时定为恰好取20位即可。

    32位:已知条件里告诉了页表项大小为4B,那么自然就应该是32位了。

    12位:32位-20位 = 12位。为什么页框号地址为12位,只能表示212个页框,要小于220个页面呢,因为并不是进程的每一个页面都要调入内存。其实32位、12位、20位这三个数据还是有一定依据的,在二级分页的时候就会发现“哦,原来刚刚好”。此处暂不讨论二级分页。

    4.通过上面的分析我们得出了哪些数据:

    逻辑地址32位,进程大小:4GB。

    页面:大小4KB,数量:2^20页。

    页表项:4B,数量:220项。所以页表就需要4B*220 = 4MB的空间存储(这就是书中说:页表项大小为4MB的由来)进一步,主存的页框大小和页面大小是相等的,也为4KB,所以将页表存在主存就需要占用4MB/4KB = 1024页(因为页表也是存在主存中的,而主存也是按页框划分的。这的确是一种资源浪费,所以就需要建立二级页面,将其大小控制在1页之内,将二级页面存入主存即可)

    页 页表 页表项
    edgar_01112 2016-04-26 21:11:56 28031 收藏 35
    分类专栏: 计算机操作系统 文章标签: 操作系统

    //
    //操作系统和计算机组成原理里都讲到内存管理的页式管理,但是本人以及很多初次学习分页的时候,都会迷茫页表大小和页表项大小之间的关系,本人仔细分析了后写了这篇blog,仅当学习交流,个人理解之用,如果有错或者分析不够严谨,欢迎指正。
    //按字、图结合起来分析,相信还是比较容易看懂。

    //一、首先明确几个概念

    逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号单元开始编址,称之为目标模块的相对地址,即为逻辑地址。

    页:将进程划分的块,对应的大小就叫页面大小。

    页框:将内存划分的块。

    页和页框二者一一对应,一个页放入一个页框,(理论上)页的大小和页框的大小相等。

    页表:就是一个页和页框一一对应的关系表。【存放在内存中】 关系表只是起到一个索引的作用,说白了就是能根据关系表能查到某一个页面和哪一个页框所对应。

    //

    //
    //二、用例子说话【例子出现在:《王道考研操作系统》的内存管理部分】

    已知条件:逻辑地址32位、页面大小4KB、页表项大小4B,按字节编址。

    分析:

     首先 32 位的虚拟地址可表示的进程大小应该是2^32B = 4GB(暂时别去想页号P占多少位,W占多少位)             
    

    2.(根据页的定义和页面大小的定义)将进程进行分页:

    3.我们已经知道了页面的数目为:2^20页。现在的迷茫点就在于页表项的问题上。
    上图在页表上已经给出了几个数据:20位,12位,32位,2^20项。一一解释如下【请结合上图一个一个数据分析】:

    2^20项:因为页表的作用是要将页面的页框一一对应起来,所以,每一个页面在页表中都应该有一个页表项:用来表示一个页号对应一页页框号(内存中的块号),故应     
    
                    该有2^20项。【不应该有问题吧,就好像一个班有50个同学,每个人都应该有一个地址一样】
    

    20位:已经很显然了,需要表示出2^20个页表项,就至少需要20位的地址。为什么只取20位而不是21位,22位呢,本人现在还没想这个问题,就暂时定为恰好取20位即可。

    32位:已知条件里告诉了页表项大小为4B,那么自然就应该是32位了。

    12位:32位-20位 = 12位。为什么页框号地址为12位,只能表示212个页框,要小于220个页面呢,因为并不是进程的每一个页面都要调入内存。其实32位、12位、20位这三个数据还是有一定依据的,在二级分页的时候就会发现“哦,原来刚刚好”。此处暂不讨论二级分页。

    4.通过上面的分析我们得出了哪些数据:

    逻辑地址32位,进程大小:4GB。

    页面:大小4KB,数量:2^20页。

    页表项:4B,数量:220项。所以页表就需要4B*220 = 4MB的空间存储(这就是书中说:页表项大小为4MB的由来)进一步,主存的页框大小和页面大小是相等的,也为4KB,所以将页表存在主存就需要占用4MB/4KB = 1024页(因为页表也是存在主存中的,而主存也是按页框划分的。这的确是一种资源浪费,所以就需要建立二级页面,将其大小控制在1页之内,将二级页面存入主存即可)

    页 页表 页表项
    edgar_01112 2016-04-26 21:11:56 28031 收藏 35
    分类专栏: 计算机操作系统 文章标签: 操作系统

    //
    //操作系统和计算机组成原理里都讲到内存管理的页式管理,但是本人以及很多初次学习分页的时候,都会迷茫页表大小和页表项大小之间的关系,本人仔细分析了后写了这篇blog,仅当学习交流,个人理解之用,如果有错或者分析不够严谨,欢迎指正。
    //按字、图结合起来分析,相信还是比较容易看懂。

    //一、首先明确几个概念

    逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号单元开始编址,称之为目标模块的相对地址,即为逻辑地址。

    页:将进程划分的块,对应的大小就叫页面大小。

    页框:将内存划分的块。

    页和页框二者一一对应,一个页放入一个页框,(理论上)页的大小和页框的大小相等。

    页表:就是一个页和页框一一对应的关系表。【存放在内存中】 关系表只是起到一个索引的作用,说白了就是能根据关系表能查到某一个页面和哪一个页框所对应。

    //

    //
    //二、用例子说话【例子出现在:《王道考研操作系统》的内存管理部分】

    已知条件:逻辑地址32位、页面大小4KB、页表项大小4B,按字节编址。

    分析:

     首先 32 位的虚拟地址可表示的进程大小应该是2^32B = 4GB(暂时别去想页号P占多少位,W占多少位)             
    

    2.(根据页的定义和页面大小的定义)将进程进行分页:

    3.我们已经知道了页面的数目为:2^20页。现在的迷茫点就在于页表项的问题上。
    上图在页表上已经给出了几个数据:20位,12位,32位,2^20项。一一解释如下【请结合上图一个一个数据分析】:

    2^20项:因为页表的作用是要将页面的页框一一对应起来,所以,每一个页面在页表中都应该有一个页表项:用来表示一个页号对应一页页框号(内存中的块号),故应     
    
                    该有2^20项。【不应该有问题吧,就好像一个班有50个同学,每个人都应该有一个地址一样】
    

    20位:已经很显然了,需要表示出2^20个页表项,就至少需要20位的地址。为什么只取20位而不是21位,22位呢,本人现在还没想这个问题,就暂时定为恰好取20位即可。

    32位:已知条件里告诉了页表项大小为4B,那么自然就应该是32位了。

    12位:32位-20位 = 12位。为什么页框号地址为12位,只能表示212个页框,要小于220个页面呢,因为并不是进程的每一个页面都要调入内存。其实32位、12位、20位这三个数据还是有一定依据的,在二级分页的时候就会发现“哦,原来刚刚好”。此处暂不讨论二级分页。

    4.通过上面的分析我们得出了哪些数据:

    逻辑地址32位,进程大小:4GB。

    页面:大小4KB,数量:2^20页。

    页表项:4B,数量:220项。所以页表就需要4B*220 = 4MB的空间存储(这就是书中说:页表项大小为4MB的由来)进一步,主存的页框大小和页面大小是相等的,也为4KB,所以将页表存在主存就需要占用4MB/4KB = 1024页(因为页表也是存在主存中的,而主存也是按页框划分的。这的确是一种资源浪费,所以就需要建立二级页面,将其大小控制在1页之内,将二级页面存入主存即可)

    展开全文
  • 【操作系统/计组】页面大小、页表项、一级页表、多级页表的关系与计算

    【操作系统/计组】页面大小 与 页表项


    首先,不论一级页表还是多级页表:
    页面大小 = 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 ,需要四级页表


    以上是本人理解,欢迎各位指正

    展开全文
  • 页、页表、页表项

    千次阅读 2019-10-17 17:39:05
    虚拟地址:计算机处理器的地址有32位64位的两种,对应的虚拟地址的空间大小分别是2^32字节2^64字节,字节用B表示。 页:分页存储管理将进程的逻辑地址空间划分为若干页(面),并且对其编号,号数从0开始,每个...
  • 对36位虚拟地址的页式虚拟存储系统,每页8KB,每个页表项为32位,页表的总容量为? 解:知道页偏移后,就能知道虚拟页号占了多少位,虚拟页号刚好就是页表的行号(隐含的,因为页表地址是连续的,知道起始地址就行...
  • 逻辑地址空间、页表与如何确定页表项大小

    万次阅读 多人点赞 2018-10-17 23:38:14
    32位逻辑地址空间,一页4KB,按字节编制,页式内存管理中如何确定页表项大小 因为是32位逻辑地址,故寻址空间为2^32B,而一页大小为4KB,故需要2^32/4B=2^20页=1M页。假设在内存中地址: 而页表则是对这些页表的...
  • MMU的页表查询过程介绍,涉及到页表项、页表、页面、VPN、PFN等等关系的理解,为Linux内核管理奠定基础
  • 关于页表,页表项,页框号(物理块号)的理解

    万次阅读 多人点赞 2020-07-03 23:28:19
    首先要了解页表项是由【页号】【页框号】组成,因为是分页系统每一个页面大小都是一样的所以可以根据逻辑地址的大小推算出【页号】,也就是说页表项中的【页号】可以省略。 下边给出一个例子: 一个32位系统分页系统...
  • 【操作系统】页式储存方式,页,页表,页表项

    万次阅读 多人点赞 2017-12-10 21:41:17
    //操作系统计算机组成原理里都讲到内存管理的页式管理,但是本人以及很多初次学习分页的时候,都会迷茫页表大小和页表项大小之间的关系,本人仔细分析了后写了这篇blog,仅当学习交流,个人理解之用,如果有错或者...
  • 如果一个页面的大小为4K,页表项大小为4B,那么为什么可以存2^10个页表项?我的意思就是问为什么要拿4K...页面大小有什么关系?   Mr_无所不知 | 浏览 13070 次 |举报 我有更好的答案 推荐于2017-11-...
  • 首先我来说页表项和页面大小没有特别的关系,但是还是有关系(就当做是废话哈哈) 这是我先给大家整理的分页存储里面的一些公式。 求地址: 逻辑地址=页号P+偏移量W 物理地址=某程序指定页的块号+偏...
  • 快表、页表和cache之间的关系

    千次阅读 多人点赞 2021-09-25 21:26:27
    快表、页表和cache之间的关系全相联映射快表命中全相联映射快表未命中四路组相连映射 在32位操作系统中,一个地址对应32位2进制数,则能寻址到4GB(232)的地址。 而在linux内存管理中,内存以页为单位进行管理,一般...
  • 初学内核时,经常被“内核页表“进程页表”搞晕,不知道这到底是个啥东东,跟我们平时理解的页表有什么关系。内核页表:即书上说的主内核页表,在内核中其实就是一段内存,存放在主内核页全局目录init_mm.pgd...
  • 页表目录和页表结构 图解

    万次阅读 2018-12-23 15:06:30
    1、 三个地址对应不同的页表和页表项 2、 但是页表项的高20bit肯定是1,表示物理页面的索引号是1 3、 同时,根据高20bit,可以从 mem_map[]中找到对应的struct page结构, struct page 用于管理实际的物理页面...
  • 我们以ARM64四级页表为例,谈谈页表项里藏得是什么。 1 ~ 3 级表项 从__create_pgd_mapping函数开始看: static void __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys, unsigned long virt, phys_...
  • 一、页表、页表项 页表由多个页表项组成,即页表中每一行的就是一个页表项页表项中记录的信息: 页框号:记录虚页面对应的具体哪个物理页面 有效位:标识该页表项对应的虚页面有没有读进内存,否则在磁盘...
  • Linux | 虚拟地址&页表

    2022-03-15 15:40:52
    Linux普遍为4级页表,分别是: PGD PUD PMD PTE l_________l_______l_______l_______l_______l____________l 0 11 12 20 21 29 30 38 39 47 48 63 PGD: page Global directory(47-39), 页全局目...
  • 计算机处理器的地址有32位64位的两种,对应的虚拟地址的空间大小分别是2^32字节2^64字节,字节用B表示。 页: 分页存储管理将进程的逻辑地址空间划分为若干页(面),并且对其编号,号数从0开始,每个页(面)...
  • 这一篇,介绍了页表和多级页表还有快表,再加上前面的分段,现在操作系统的内存管理已经出来了,下一篇就开始介绍段页结合的实际内存管理了。
  • 两级页表

    千次阅读 2021-07-26 07:59:41
    本文是在基本分页存储管理...1单级页表存在的问题假设某计算机系统按字节寻址,支持32位逻辑地址,采用分页存储管理,页面大小为4KB,页表项长度为4B。4KB = 212B,因此页内地址要用12位表示,剩余20位表示页号。—...
  • Arm32 MMU 页表项属性 本篇文章接上一篇 (番外一)Arm32 中虚拟地址机制分析(Arm cortex-A系列 MMU工作机制分析) ,在上一篇文章中根据手册(《Arm Cortex-A Series Programmer’s Guide》)简单分析了Arm32中...
  • 页表

    千次阅读 2019-04-24 13:46:22
    页表结构 分页转换功能由驻留在内存中的表来描述,该表称为页表(page table),存放在物理地址空间中。页表可看做简单的220个物理地址数组。线性到物理地址的映射功能可以简单地看做进行数组查找。线性地址的高20...
  • 上一篇文章学习了:保护模式九:段页式内存管理机制概述 本篇文章接着学习以下内容:...我们知道,在上一篇文章学习的页映射表,是一个具有1048576个页表项的一维表格。又因为每个表项占4字节,所以,映射表的大小是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,080
精华内容 6,032
关键字:

页表项和页表的关系