2013-11-24 36 views
0

我想回答这个问题:为什么页面大小等于内存地址的偏移量?计算机如何确定在虚拟内存中写入的位置?

是因为计算机从页表中确定页码,然后乘以偏移量以确定从哪里开始写入?我认为这是唯一可能的合理解释,但我不确定,因为导师无法回答我。另外,如果你有一个64位可寻址存储器,偏移需要14位,是不是浪费了14位?你可以分配你的数据到更多的内存位置没有偏移量,我说得对吗?

+1

您的导师_couldn't_ answer you?获得更好的导师! – 2013-11-24 00:46:30

+0

是的,我甚至不知道为什么我付了钱。 – user28464

+1

这个问题并没有意义。请在http://en.wikipedia.org/wiki/Virtual_memory查看Jimbo的大袋小事 –

回答

0

由于偏移量是未翻译的虚拟地址的唯一部分(在此翻译意味着该值发生变化)为物理地址。粗略地说,虚拟地址由基地址和偏移量组成。基地址被翻译成物理页面开始的地址。必须调整这些页面的大小,以便与原始虚拟地址的偏移位于该页面内。这就是页面大小-1等于最大偏移量的原因。

例如:在使用具有4MB页的表的x86系统上(页描述符的位7上的属性PS为1),基地址由10个最高有效位形成,其指向可能的1024个页条目之一在Page目录中。每个条目都是32位长(一个页面描述符)。如果页面描述符指向如图所示的4MB页面,则有一个字段将该4MB页面的第一个物理地址存储到物理内存中(通常称为页面框架)。

在该页框中,需要22个偏移量来寻址页面中的所有和每个单个字节。该偏移量直接来自虚拟地址的22个较低有效位。