qemu Virtio 设备创建流程

qemu 设备虚拟机化的 roadmap 可以概括为全虚拟化 -> 半虚拟化 (又可以分为用户空间和内核空间) -> 设备穿透 (又可以分为完整设备穿透和单根虚拟化)。所有的这些演进都是为了提升虚拟设备的性能。Virtio 则是属于一种半虚拟化解决方案,它是一种前后端架构,虚拟机内部需要安装特定的 virtio 设备驱动作为前端,模拟的设备作为后端,后端可以放在用户空间模拟,也可以放在内核空间模拟。放在内核空间模拟就是 vhost 的实现,如 DPDK,SPDK 等。
摘要由CSDN通过智能技术生成

一、什么是 Virtio?

qemu 设备虚拟机化的 roadmap 可以概括为全虚拟化 -> 半虚拟化 (又可以分为用户空间和内核空间) -> 设备穿透 (又可以分为完整设备穿透和单根虚拟化)。所有的这些演进都是为了提升虚拟设备的性能。

Virtio 则是属于一种半虚拟化解决方案,它是一种前后端架构,虚拟机内部需要安装特定的 virtio 设备驱动作为前端,模拟的设备作为后端,后端可以放在用户空间模拟,也可以放在内核空间模拟。放在内核空间模拟就是 vhost 的实现,如 DPDK,SPDK 等。

Virtio 代理的好处就是特定的设备驱动前后端通过 virtqueue 进行通信,virtqueue 就是一块前后端共享的 memory。从而前后端之间的通信通过对共享 memory 的读写就可以了,相比较全虚拟机化,每次的读写虚拟设备都需要做 vm exit 和 vm entry,通信的代价变小了。

Virtio 带来的不便就是需要开发特定的 virtio 设备驱动,虚拟机需要安装设备驱动。

二、Virtio balloon 设备创建流程

这里分析了 virtio balloon 设备的创建流程,从 qemu 指定参数 - device xxx 设备开始到设备最终的实例化过程。

qemu 中设备对象的实现采用了 QOM 模型,模拟了面向对象语言中的封装、继承和多态。遵循该框架可以很方便的开发新的设备。下图展示了类之间的继承关系。这里比较特别的一点是每一个 virtio 设备都会有一个伴生的 PCI 设备,叫做 virtio PCI 代理设备。该设备主要的作用是实现设备总线相关的功能,而设备类只需要关注设备具体功能的实现。

 (免费订阅,永久学习)学习地址: 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值