Xen基本机制和策略

一.启动页和共享页
 
  启动页:由Xen映射到GuestOS内存空间的一个页面,包括内核启动所需的所有信息。
                    页框地址,首个加载模块的地址,内存页面数等信息。
    共享页:收集与全局状态相关的信息。用于Xen与GuestOS间共享数据。
                    VCPU状态(是否有未处理的事件),Guest OS状态,Xen的事件通道。
    XenStore:文件系统相似的树形结构,存储设备信息和Domain相关信息。

二.Hypercall
    1.利用INT0x82陷阱。Hypercall调用号,Hypercall Table。
        Xen3.0之前,直接利用以上信息完成Hypercall。
        Xen3.0以后,利用 封装例程 + 超级调用页。
    2.封装例程(根据调用号(名字),在超级调用页中找到正确的位置,CALL它 == INT 0x82陷阱)
        超级调用页是Xen为Guest OS准备的一个页 ==> 可以做到不同GuestOS有不同的超级调用页内容。
    3.Hypercall只能有Kernel调用。User使用的流程是:
        User --> ioctl() -->根据不同的参数,找到不同的privcmd --> privcmd -->Hypercall --> Xen
        privcmd是一个内核驱动,以特殊文件的形式挂在/proc文件下。
    4.Xen提供了一些lib给User使用,lib提供具体的应用(例如Create Domain),
        但内部还是要去调用do_privcmd,去发行37个Hypercall中的一个。

三.事件通道
    发送发和接收方先绑定。
    一个事件通道 = local port ---link---remote port
    发送消息 = 通过本地port找到reomteport,置remote port的pending位为1.
 
四.Grant Table + XenStore + Ring Data Structure(local in sharedmemory pages)
    FE--mitializes--> Memory page with a ring datastructrue
          --export it via Grant Table--> store intoXenStore
    BE --retrive it fromXenStore--> Map it into its own address space
    FE -->read/write from/into it <-- BE
    FE -->event_channel <-- BE
 
五.疑问
  1.NEX中有Xend吗?
      没有了,已经被Agent替代了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值