【问题标题】:virtual memory and size of each item每个项目的虚拟内存和大小
【发布时间】:2017-11-14 14:14:00
【问题描述】:
我有这个问题的答案,但我仍然不明白其中的一些。你能解释一下吗?
考虑一个具有 16 位虚拟地址的系统,其中 12 位用于页面偏移。对于以下每个问题,请回答问题并简要说明您的回答,如果无法从所提供的信息中确定答案,请注明“未知”。
(a) 虚拟页面有多大?
2^12 字节
(b) 物理页面有多大?
2^12 字节
(c) 单个进程的虚拟地址空间有多大(以字节为单位)?
2^16 字节
(d) 存在多少物理页?
未知
(e) 在系统上运行的所有进程中,全局存在多少虚拟页面?
未知
【问题讨论】:
标签:
linux
operating-system
【解决方案1】:
a+b) 12 位用于偏移。你可以用 12 位寻址多少个地址?
答案是:2^12。这就是为什么页面大小是2^12 = 4096 bytes = 4KB
c) 16 位可以寻址多少个地址? 2^16 B这是虚拟地址。
d)#frames = main-memory-size / page-size`由于不知道物理内存大小而未知。
e) 取决于系统中的进程数。
【解决方案2】:
在虚拟地址中,
页偏移量的大小说明一页内的字节数,因为一个偏移量指向物理内存中的一个字节。这里它是 12 位,所以一页中的字节数是 2^12。 (a)
页码的大小占虚拟内存中页框的总数。这里的页面大小是 4 位长,16-12,所以总页数是2^4。
(b) 因为页面大小等于页面框架大小,所以它等于2^12 字节。
(c)虚拟地址空间=总页数*页大小=2^4*2^12=2^16(可以直接从虚拟地址的位数计算)。
(d) 你无法从虚拟地址空间中分辨出帧数。拥有虚拟地址空间的关键是能够分配比可用物理大小大得多的内存。
(e) 每个进程最多可以有2^4 虚拟页面。所以虚拟页面的总数取决于进程的数量。