1、start_kernel(start_info_t *si)
xen的起始信息页和共享信息页:
1)起始信息页:
2)共享信息页:由guest 自己将起始信息页中的shared info 映射到内存空间
2、Dom 0 为hypervisor提供两个用户接口:
1)The first is responsible for providing an administrative interface to the hypervisor, allowing a user to define policy.
2)The second provides the
back-end storage for the XenStore.
3、HVM 的DomU 不支持xen的分离设备驱动模型,
This means that Xen must emulate something that the guest is likely to support. A small number of devices are available in this way, using code from QEMU.
4、HVM和PV的区别:
1)客户机启动时,A paravirtualized guest begins in protected mode, with some memory pages containing boot information mapped by the hypervisor, whereas an HVM guest begins in real mode and gets configuration information
from an emulated BIOS (SeaBIOS-).
2)If an HVM guest wants to take advantage of Xen-specific features, it needs to use the CPUID instruction to access a (virtual) machine specific register and access the hypercall page.
3) For virtualization-aware HVM guests, much of the information otherwise available is accessed via the platform PCI device,
5、系统启动时CPU的模式
1)booting with para-virtualization guest
现代的机器架构为了兼容8088之前的机器,CPU会先进入到实模式,然后切换为保护模式并安装一些终端句柄。xen也不例外,xen it enters protected mode and installs its own interrupt handlers。也就是说,在xen hypervisor上启动的虚拟机在启动时已经是处于保护模式。
在xen的 guest中是不允许访问BIOS的,因为BIOS会访问到物理硬件,破坏xen的隔离性,因此,出现一些方法来实现guest中的BIOS。The BIOS is replaced by a variety of different facilities in Xen.
第一种是, 起始信息页。 which contains basic information required by a guest to initialize the kernel.
第二种,共享信息页。which gives some more data and is updated while the guest is run.
第三种,xenstore。Among other things, this is used to determine which (virtual) devices are available.
6、hypercall
hypercalls are issued indirectly via the hypercall page. This is a memory page mapped in to the guest’s address space when the system is started.
7、event 机制
xen 的异步事件机制 作用是外部程序(外部kernel或其它应用程序)发送一些信息,告诉xen “event n has occurred.”
One of the first things that a guest kernel should do is register a callback to be used for event delivery. When events
are delivered to the guest, various flags are set to indicate which event is present.
xen 的一个guest 发送异步事件给另一个guest时,通常需要做以下几步:
1. Receiving guest creates a new, unbound port.
2. Receiving guest advertises the existence of the port (typically via the XenStore).
3. The sending guest creates a new port if it doesn’t have any free.
4. The sending guest binds its port to the remote one.
5. The sending guest sends the event.
8、 共享内存
Xen supports two basic interdomain operations on memory pages: sharing and transferring.
xen的共享内存区域以一个整数interger的授权索引表示(grant reference), The value of this integer is communicated between domains using the XenStore,
9、分离设备驱动模型
This is typically done using ring buffers in shared memory segments. The front-end driver initializes a memory page with a ring data structure and exports it via the grant table mechanism. It then advertises the grant reference via the XenStore where the back end can retrieve it. The back end then maps it into its own address space, giving a shared communication channel into which the front end inserts requests and the back end places responses.