XenStore:使用,结构和原理(3. XenStore启动过程分析)

14 篇文章 0 订阅
7 篇文章 0 订阅

摘要:XenStore的初始化完全在用户空间的libxl中实现。Dom0包办了所有的操作,使DomU一启动,就可以与Dom0进行xenstore通信,但是程序非常的复杂和难以维护。Xen核心仅仅为xenstore提供了两个辅助数据项,其余的完全在xen已有的架构下实现。


XenStore所进行的域间通信,在底层仍然是通过共享内存和事件通道机制进行的。但是前面已经提到,想要共享内存或者建立事件通道,必须事先进行通信。那么XenStore自身是怎样建立起这些通道的呢?有必要研究一下Xenstore的启动过程。

我们一般使用命令行新建domu。例如:sudo xl create –c ubuntu.cfg 所以我们从xl所在的程序库libxl开始,仔细分析虚拟机启动过程中xenstore的初始化过程。




其中核心的步骤就是:Dom0的libxl调用libxc,替新创建的domu分配了属于DomU的共享页面和事件通道,并且通知Xenstored建立domu的管理数据结构;在分配好以后再由XenStore映射回来。这样DomU一启动,就可以从start_info结构体中获取共享内存的地址,与Dom0进行通信了。然而,这样做就意味着Dom0包办了所有的操作,并且要考虑架构相关的因素,精确地控制DomU的内存分布,同时还要避免C语言的内存泄漏;所以程序变得非常的复杂和难以维护。

这种做法的另一个特点是:实现代码完全在用户空间的libxl和libxc中,完全在xen已有的架构下实现。Xen核心唯一需要做的,就是在start_info结构体中增加两个数据项store_mfn和store_port。这也说明xen与kvm相比,核心提供更多的功能。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值