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

use*_*409 9 operating-system memory-management offset

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

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

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

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

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

反向页表需要与内存中的页框一样多的条目.

Inverted page table: 2^29 (512mb)/ 2^12 (4000) = 2^17 = 131,072
Run Code Online (Sandbox Code Playgroud)

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

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

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

Rup*_*ngh 7

为什么我必须除以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个条目

这个无花果。可能会清除您剩余的疑问:

在此处输入图片说明


moo*_*von 5

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


Page number = (address reference / page size) = 256/1024 = 0
Run Code Online (Sandbox Code Playgroud)
Offset = (address reference % page size) = (256 % 2014) = 256 
Run Code Online (Sandbox Code Playgroud)


对其余地址引用应用相同的过程。


lsk*_*lsk 0

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

物理页表的类似计算,即倒排页表需要多少个页表条目。

根据上述提示,尝试一下这个问题,并让我们知道您的想法。一旦您在操作系统课程中了解了更多,您就会发现每种页表设计都有优点和缺点。