Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86689
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-29 13:57
文章分类

全部博文(21)

文章存档

2015年(2)

2014年(15)

2013年(4)

我的朋友

分类: LINUX

2015-08-11 16:12:57

初学Xen,对于DomU与Dom0之间的通信机制概念不清晰,现总结如下供大家参考,仅作抛砖引玉之用。找到一篇论文,《基于Xen的IO准虚拟化驱动研究》(胡冷非)讲得不错,拿来参考。

(1)I/O共享环:在不同Domain之间存在的一块固定的共享内存,用于在DomU和Dom0之间传递I/O请求和响应。I/O共享环利用生产者和消费者的机理来产生发送以及响应IO请求。

(2)授权表:在不同Dom之间高效传输IO数据的机制。通过授权表把内存映射到目的Dom或者把内存传送到目的Dom。

(3)事件通道:用于Dom和Xen之间、Dom和Dom之间异步事件通知机制。

注意上面的粗体字。

以DomainU向IO设备写入数据为例:

1、DomU产生IO请求,在IO共享环中添加请求。

2、然后将IO数据放入授权表指向的内存中,等待Dom0来取。

3、一切准备就绪,通过事件通道通知Dom0开始处理。

4、Dom0收到事件通道的通知,知道有数据需要处理。

5、然后,Dom0从IO共享环中取出IO请求,分析下到底DomU想要Dom0为他做什么。

6、明白要做什么后,将授权表中的数据取出进行处理。

7、数据处理完成后,Dom0将处理后的数据放入授权表,信息放入IO共享环,然后通过事件通道发送通知给DomU,告诉他处理完成了。

8、DomU收到事件通道的通知,从IO共享环中取出相应,进而处理之。

总结:IO共享环的作用是具体的IO请求(如发送网络数据),是请求!事件通道是通知用的!授权表指向的内存是数据的存储地!

举个不十分恰当的例子:A(DomU)请B(Dom0)帮忙保存一些贵重物品S(数据),首先A写一张纸条(IO共享环),上面说明请求B帮忙做的事情,放到B的门口,然后敲门(事件通道)。B听到敲门(事件通道的中断)后开门看到纸条(IO共享环),分析上面的内容后,去到A固有的地点(授权表上写明的内存地址)取物品S。一切做完后写个纸条(IO共享环)贴到A门口,敲门(事件通道)。


Note:

    grant table is formed by pages, the maximum size for grant table is 64M.

    if xenstore can't be find in domU, we should mount the xenfs by:

mount -t xenfs none /proc/xen

    DomU is only allowed to write /local/domain/$DOMID/data

阅读(2460) | 评论(0) | 转发(0) |
0

上一篇:ksplice 理解执行过程

下一篇:没有了

给主人留下些什么吧!~~