虚拟内存和每个项目的大小

时间:2017-06-13 00:38:04

标签: linux operating-system

我有这个问题的答案,但我仍然不理解他们中的一些。你能解释一下吗?

考虑具有16位虚拟地址的系统,其中12位用于页面偏移。对于下面的每个问题,如果无法从提供的信息中确定答案,请回答问题并简要说明您的答案,或者指出“未知”。

(a)虚拟页面有多大? 2 ^ 12字节

(b)物理页面有多大? 2 ^ 12字节

(c)单个进程的虚拟地址空间有多大(以字节为单位)? 2 ^ 16字节

(d)存在多少个物理页面? 未知

(e)在系统上运行的所有进程中,全局存在多少个虚拟页面? 未知

2 个答案:

答案 0 :(得分:0)

a+b) 12位用于偏移。你能用12位寻址多少个地址?
答案是:2^12。这就是页面大小为2^12 = 4096 bytes = 4KB

的原因

c)你能用16位寻址多少个地址? 2^16 B这是虚拟地址。

d)#frames = main-memory-size / page-size`由于不知道物理内存大小而未知。

e)取决于系统中的进程数。

答案 1 :(得分:0)

在虚拟地址中,

页面偏移的大小表示一页内的字节数,因为一个偏移指向物理内存中的一个字节。这里是12位,因此一页中的数字字节为2^12(a)

页码的大小占虚拟内存中的总页数。此处页面大小为4位长,16-12,因此总页数为2^4

(b)因为页面大小等于页面大小,所以它等于2^12个字节。

(c)虚拟地址空间=总页数*页面大小= 2^4 * 2^12 = 2^16(可以直接根据虚拟地址中的位数计算)。

(d)你无法分辨虚拟地址空间的帧数。拥有虚拟地址空间的重点是能够分配比可用物理大小更大的内存。

(e)每个进程最多可包含2^4个虚拟页面。因此,虚拟页面的总数取决于进程数。