确定给定地址的页面号和偏移量

14

考虑一个具有32位逻辑地址和4KB页面大小的计算机系统。该系统支持最多512MB的物理内存。

传统单级页表中有多少个条目?

在传统单级页表中,有2^20个条目。

Conventional single-level page table: 2^32 / 2^12 (4000)  = 2^20 = 1,048,576
我为什么要除以2^12去得到答案呢?
反向页表中有多少个条目?
一个反向页表需要与内存中的页面帧数量相同的条目。
Inverted page table: 2^29 (512mb)/ 2^12 (4000) = 2^17 = 131,072
为什么我要执行 512mb / 页面大小 以获取反向页表项?

以下地址引用的页码和偏移量是多少?a) 30000, b) 256, c) 0xbcf034

a) 30000 的16进制:x7530 页码:x7 = 7 偏移量:x530 = 1328

b) 256 的16进制:x100 页码:x0 = 0 偏移量:x100 = 256

c) 0xbcf034 页码:xbc f= 3023 偏移量:x034 = 22

如何基于十六进制地址确定这些页码和偏移量?

我知道答案,但我想了解为什么和如何。可以有人详细解释一下吗?:)


在反向页面表中,所有的帧都被映射而不是页面。因此,反向页面表中的条目包括总帧数,这就是您要计算的内容。 - Sanketssj5
PS: 4K is not 4000 :-) - Nishant
4个回答

14

为什么我必须将2^32 / 2^12除以得到答案?

2^32 ==> 总虚拟内存大小

4KB=2^12 ==> 单个页面的大小

2^32 / 2^12 =2^20 ==> 虚拟内存的总页数

因此,页表将具有2 ^ 20 = 1M个条目

倒置页表中有多少个条目?

2^29=512MB ==> 物理内存总量

2^12 = 页面大小 = 帧大小

2^29 / 2^12 =2^17 ==> 物理内存中的帧总数

因此,倒置页表将具有2 ^ 17 = 128K个条目

这张图可能会解决您仍然存在的疑问:

enter image description here


有多少条目在两级分层页表中? - Hashmatullah Noorzai

5

给定页面大小和地址引用:
计算页码和偏移量的最佳方法,
假设页面大小为1KB,地址引用为256。


Page number = (address reference / page size) = 256/1024 = 0

Offset = (address reference % page size) = (256 % 2014) = 256 

应用相同的步骤处理其余的地址引用。

0

因为页面大小=帧大小=2^12 反向页表中的条目数=帧数 因此我们正在计算帧数


0

2^12 => 4096 2^32/2^12 => 2^32/4096 => 有多少个4K页面 => 我们需要多少页表项。

物理页表的计算类似,即我们需要多少反向页表的页表项。

有了以上提示,尝试回答问题并告诉我们你得出了什么。一旦你在操作系统课程中学到更多知识,你会发现每种页表设计都有优缺点。


为什么需要了解反向页表的物理页表条目?PS-谢谢 - user2562409
为此,您需要学习一些关于反向页表的理论...一个快速的答案是,反向页表的大小与系统中物理页面的数量成比例。正常(或逻辑)页表的大小适用于进程的整个虚拟地址空间,即根据进程中虚拟页面的数量确定大小。即反向页表:一个物理页面对应一个条目;逻辑或虚拟页表:一个虚拟页面对应一个条目。希望这有所帮助。 - lsk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接