Xen 中客户机启动时, 未开启分页如何寻址?
求教!!!
开启分页后可以理解, 通过shadow table 来寻址机器地址, 未开启分页前, 如何寻址? 不开启分页,也就是实模式虚拟机?这个应该是需要特殊处理的。。 本帖最后由 undeadboy 于 2014-08-23 15:34 编辑
可能我没表达清楚, 抱歉抱歉~
Linux启动应该是设置完页表页目录后,将页目录项物理地址写入CR3后开启分页模式;写CR3和开启分页都会被vmm捕获, vmm最终将GUEST_CR3 设置为shadow table的物理地址,
之后linux 客户机访问的线性地址通过shadow table来定位到对应的机器地址.
那么在这之前, xen虚拟机中的linux直接通过段基址加上偏移得到客户机物理地址(这些物理地址其实在setup_guest时已经建立在p2m表中建立了guest 物理地址到机器地址的一一映射)
但全虚拟化情况下, 客户机系统是感知不到vmm的存在, 那客户机去访问自己的物理地址, vmm怎么保证客户机就访问的是对应的机器地址呢?
另:最近在研究Xen源代码, 有兴趣的同学可以一起交流
回复 3# undeadboy
这个有什么不好理解的,guest里头看到的所谓“物理地址”,在host里头就是分配给特定虚拟机用的虚拟地址,各HOST上的应用程序是一样的。如是果guest os访问了不属于自己的”物理地址“,在HOST里是会引起缺页异常的,Host OS正好捉到,然后进行检查。
如果guest OS启用了虚拟地址,相当于进行了两个的虚拟地址转换。
Zen没有研究过,如果理解错了,请临纠正。
页:
[1]