Xen虚拟地址转换

来源:互联网 发布:poser人体造型软件 编辑:程序博客网 时间:2024/06/06 10:39

Xen引入伪物理地址后,仅仅依靠硬件MMU的分页单元是很难实现虚拟地址到机器物理地址的转换的,因此Xen提供了两种地址转换方法。
1) 直接模式,即Guest OS使用自己的页表直接访问机器内存。在该模式下,Xen需要改写Guest OS内核中对页表的访问及TLB的操作函数,利用Hypercall交由Xen来完成MMU的特权操作。
2)影子模式,即由Guest OS维护它们自己的页表,而Xen则为每个Guest OS页表设置一个影子页表。通过Guest OS页表和影子页表之间的同步使得两者之间的地址转换关系保持一致,在Guest OS进行地址转换时,影子页表通过相应的操作完成真正意义上的转换。
直接模式

    在直接模式中,为了让Guest OS能在硬件MMU的帮助下,使用自己的页表直接访问机器内存,在页表中的页表项保存的地址都是机器地址,即通过MMU的分页单元的地址转换可以直接获得内存页的机器物理地址。而在Guest OS的使用过程中,Guest OS不能直接使用机器物理地址,它操作的地址是伪物理地址,因此在MMU的分页单元之外,Guest OS需要在M2P表和P2M表的帮助下完成机器物理地址和伪物理地址之间的转换。    在Xen系统中,Guest OS对其页表不能直接进行写操作,而必须在Xen对其写操作进行确认后才被允许执行,因为在直接模式中,Guest OS页表中的页表项都是机器物理地址,若没有相应的机制限制Guest OS对页表的写操作,很可能会因其在页表中填入不属于自己的机器物理地址而使系统产生内存使用错误。因此,对于写操作,Xen必须先对其进行确认,在确保不会产生内存越界后才会被执行。