确定给定地址的页码和偏移量

时间:2013-07-15 04:25:41

标签: memory-management operating-system offset

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

  

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

Conventional single-level page table: 2^32 / 2^12 (4000)  = 2^20 = 1,048,576

为什么我必须divide 2^32 / 2^12才能得到答案?

  

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

     

反转页表需要与页框一样多的条目   在记忆中。

Inverted page table: 2^29 (512mb)/ 2^12 (4000) = 2^17 = 131,072

为什么我必须divide 512mb / page size才能获得反转的页表条目?

  

以下地址的页码和偏移量是多少?   参考文献:a)30000,b)256,c)0xbcf034

     

a)30000十六进制:x7530页数:x7 = 7偏移量:x530 = 1328

     

b)256 in hex x100 Page#:x0 = 0 offset:x100 = 256

     

c)0xbcf034页数:xbcf = 3023偏移量:x034 = 22

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

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

4 个答案:

答案 0 :(得分:4)

为什么我必须划分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

答案 1 :(得分:1)

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

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

<小时/> 对其余的地址引用应用相同的过程。

答案 2 :(得分:0)

2 ^ 12 =&gt; 4096 2 ^ 32/2 ^ 12 =&gt; 2 ^ 32/4096 =&gt;有多少4K页面=&gt;我们需要多少页表条目。

物理页面表的类似计算,即反转页表需要多少页表条目。

通过上述提示,提出问题,让我们知道你提出了什么。一旦你在操作系统课程中学到了更多东西,你会发现每个页面表设计都有优缺点。

答案 3 :(得分:0)

因为页面大小=帧大小= 2 ^ 12 倒排页表中的条目数=帧数 所以我们不计算帧数