Xen前后端设备
来源:互联网 发布:软件产品质量承诺书 编辑:程序博客网 时间:2024/05/24 05:15
前端设备驱动从Guest OS内核中接收IO请求,由于它不能访问硬件平台的物理设备,所以前端将所有的IO请求转发到后端。后端设备驱动在接收到前端转发的IO请求后,检查该请求是否合法,并通过本地设备驱动访问真实的硬件设备。后端设备驱动是虚拟机DomU中Guest OS内核的功能。在IO请求完成后,后端设备驱动通知前端数据已经准备就绪,前端向DomU中Guest OS内核报告IO操作完成。在整个IO设备访问的过程中,后端设备驱动是所有前端访问真实物理设备的代理。
设备IO环
设备IO环中并不包含真实的数据,而是Xen和Guest OS的请求和响应。当多个请求响应到来时,就形成了请求队列和相应队列。在虚拟机的前端设备接收中断事件并进行处理时,在请求队列中加入一个请求作为请求的生产者。这个请求将更新虚拟机和Xen全局共享的请求指针。Xen作为请求消费者进行处理并移除这些请求,更新Xen私有的请求消费者指针。Xen作为响应生产者把请求的响应放在响应队列中,同时更新共享的响应指针。发出IO请求的虚拟机作为响应消费者更新私有响应指针。
实现步骤
前端
① 分配共享环. SHARED_RING_INIT() ② 分配前端环. FRONT_RING_INIT() ③ 分配事件通道evtchn,并绑定中断处理函数. bind_listening_port_to_irqhandler() ④ 授权共享环给后端,并产生授权引用ref. Xenbus_grant_ring() ⑤ 将evtchn和ref写入XenStore. xenbus_printf() ⑥ 改变前端状态,触发后端回调函数进行处理. Xenbus_switch_state()
后端
① 后端回调函数被触发,从XenStore中获取ref和evtchn. Xenbus_gather() ② 将ref指向的页面映射到自己的虚拟地址空间. Xenbus_map_ring_valloc() ③ 分配后端环. BACK_RING_INIT() ④ 根据evtchn绑定域间通道. bind_interdomain_evtchn_to_irqhandler() ⑤ 改变后端状态,触发前端回调函数进行处理. Xenbus_switch_state()
阅读全文
0 0
- Xen前后端设备
- xen网络前后端交互
- 实现Xen半虚拟化环境下前后端设备的注册(一)
- 实现Xen半虚拟化环境下前后端设备的注册(二)
- XEN 4.2.4 前后端驱动开发
- Xen前后端分离设备驱动模型通信过程分析(包括事件通道、授权表、环缓冲区)
- xen网络后端驱动分析(设备篇)
- xen 前段后端
- Xen的设备驱动
- Xen 的设备
- 前后端解耦 前后端分离
- cocos2dx 前后端交互
- 前后端纪事
- web前后端分离
- 前后端协议
- 前后端交互方式
- 前后端分离
- 前后端的分工协作
- 仿android原生按钮点击水波纹效果
- Chown命令
- Kafka基础运维
- 微信移动端数据库组件WCDB系列(一)-iOS基础篇
- 在 Keil uVision4 MDK下配置开发STM32F103Z完整教程
- Xen前后端设备
- app开发之版本兼容
- 通过WMI获取系统信息
- 好文分享--java企业架构 spring mvc +mybatis + KafKa+Flume+Zookeeper分布式架构
- vuejs 无node单页应用方案一(vuejs without node signel page application)
- js页面加载完之后执行此代码块
- Kafka服务端设计思想
- Dcloud中mui 微信支付和支付宝支付接口完美实现付款代码(PHP支付宝demo)
- [Lesson1]Nuttx -Ubuntu环境配置