undeadboy 发表于 2014-08-23 00:23

Xen 中客户机启动时, 未开启分页如何寻址?


求教!!!

开启分页后可以理解, 通过shadow table 来寻址机器地址, 未开启分页前, 如何寻址?

humjb_1983 发表于 2014-08-23 15:15

不开启分页,也就是实模式虚拟机?这个应该是需要特殊处理的。。

undeadboy 发表于 2014-08-23 15:31

本帖最后由 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源代码, 有兴趣的同学可以一起交流

Tinnal 发表于 2014-08-23 21:10

回复 3# undeadboy

这个有什么不好理解的,guest里头看到的所谓“物理地址”,在host里头就是分配给特定虚拟机用的虚拟地址,各HOST上的应用程序是一样的。如是果guest os访问了不属于自己的”物理地址“,在HOST里是会引起缺页异常的,Host OS正好捉到,然后进行检查。

如果guest OS启用了虚拟地址,相当于进行了两个的虚拟地址转换。

Zen没有研究过,如果理解错了,请临纠正。


   
页: [1]
查看完整版本: Xen 中客户机启动时, 未开启分页如何寻址?