考虑虚拟存储系统有38位的虚拟字节的地址,1KB页和512MB的物理存储器。是什么大小的总页表的每个过程,在这个机,假设的有效的、保护、肮脏和使用位采取共有4位,而且所有的虚拟网页都在使用?(假设盘地址是不存在该页的表中。)

有帮助吗?

解决方案

好吧,如果问题是简单的"是什么尺寸的网页表?"无论它是否将适合成的物理存储器,答案可以计算这样的:

第一个物理存储器。有512K页的物理存储器(512M/1K)。这需要19位代表各页。添加至4位数的会计信息和你得到的23位。

现在虚拟存储器。有38位地址的空间和一个10位(1K)页面尺寸,你需要228 项在你的网页的表中。

因此,228 页表项目的23位每6,174,015,488位或736M.

这是最大的大小需要一个单一的级别VM子系统 对于每个过程.

现在很明显这不会工作如果你只有512M物理RAM所以你有几个选项。

  1. 你可以减少数量的物理网页。例如,仅允许一半的记忆受到寻呼、保持的另一半居民在所有时间。这将节省的一位每项,而不是真的足以让一个差别。

  2. 增加该页面尺寸, 如果可能的话.一1K页上的38位地址空间的原因很矮矮胖胖的页表。例如,我认为'386,其32位地址空间,使用4K页。这将导致一百万页表的条目,远远达不到260万需要在这里.

  3. 走多的水平。一位更先进的,但它基本上意味着页表自己是受到寻呼。你必须保持第一级页表居民在身体内存,但在第二级别的可以进出的需要。这将大大减少的物理要求,但在成本的速度,因为两个级别的网页故障的发生可能得到实际处理的网页(一个用于辅助传呼的表格然后一个用过程页)。


让我们看一点点接近在选项3。

如果我们允许32米为主页表,并给予每个条目4个字节(32位:只有23个都是必要的,但我们能为提高效率这里的),这将允许8,388,608网页的次级页表。

由于每个辅助网页表格的网页是1K长(允许我们的存储256次级页表项目在4个字节),我们可以解决一个总的2,147,483,648虚拟的网页。

这将使完全可以达到8,192载的(即,利用他们的整个28位地址空间)的进程并行运行,假定你有一个公平块磁盘存储空间的非居民页。

现在很明显的主页表(和VM子系统,并可能是一个公平块的休息系统)已经驻留在所有的时间。你不能允许的页面出的一个主要网页因为你可能需要页面,以便把它带回来在:-)

但是,这是一个驻地的费用的仅32米的512M主页表,大大好于(至少对于一个完全装过程)的736M.

其他提示

页表的大小=页表条目的总无*页表项的大小

步骤1:条目的页表查找NO:

no of page table entries=virtual address space/page size

=2^38/2^10=2^28

所以有在页表2 ^ 28项

STEP2:否帧中的物理存储器:

no of frames in the physical memory=(512*1024*1024)/(1*1024)=524288=2^19

所以我们需要有效的保护,脏,使用位19 bits和附加4 bits 完全的23位= 2.875字节

size of the page table=(2^28)*2.875=771751936B=736MB

1KB页= 2 ^ 10,512MB = 2 ^ 29 =>偏移= 29 - 10 = 19位

虚拟包括两个部分:页帧+偏移量=>页面帧+脏位= 38 - 19 = 29位。 29位包括4位脏(上文)=> 25位为真实页帧,每个页面帧具有10位长。

因此,页表尺寸:2 ^ 25 * 10 = 320M

希望这是正确的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top