设置内存分页

时间:2016-09-04 23:55:57

标签: memory-management x86 operating-system

  

接下来,加载程序创建一个基本页表。此页表映射虚拟内存基础上的64 MB(从虚拟地址开始)   0)直接到相同的物理地址。它也映射相同   物理内存从虚拟地址LOADER_PHYS_BASE开始,其中   默认为0xc0000000(3 GB)。 Pintos内核只需要后者   映射,但如果我们不包括,那就有鸡和蛋的问题   前者:我们当前的虚拟地址大约是0x20000的位置   装载机放在哪里,直到我们转弯才能跳到0xc0020000   在页面表上,但如果我们打开页面表而不跳转   在那里,我们刚从地下拉出地毯。

引用来自:https://web.stanford.edu/~ouster/cgi-bin/cs140-winter16/pintos/pintos_6.html

我认为我不明白上面写的是什么。 我的问题:

  1. 我们假设内核是由引导程序加载到0x20000物理地址。据我所知,两个不同的虚拟地址映射到内核的同一个地方。第一个直接映射:~0x20000 -> ~0x20000。第二个~0xc0000000 -> ~0x20000。但是,为什么需要使用两个映射?

  2. 我看不出为什么页面表(和页面目录)必须按身份映射。

  3. 请解释。

0 个答案:

没有答案