当前位置:   article > 正文

虚拟化设备-Virtio介绍

virtio

虚拟化环境必须使用客户操作系统自身的驱动感觉不到自己运行在虚拟机上,不然让客户操作系统开发人员编写大量代码同样不是一个很好的设计方案,因此虚拟化系统需要提供抽象设备,抽象设备实现了针对特定设备类的高级接口,目前比较高效的设备虚拟化接口是Virtio,KVM、Xen、QNX等都在使用Virtio接口。

不同的虚拟化解决方案都会给操作系统带来负担,负担的大小取决于各个解决方案的需求。其中的一项开销为设备的虚拟化。virtio 并没有提供多种设备模拟机制(针对网络、块和其他驱动程序),而是为这些设备模拟提供一个通用的前端,从而标准化接口和增加代码的跨平台重用。

在传统的完全虚拟化环境中,虚拟化系统必须捕捉这些请求,然后模拟物理硬件的行为。尽管这样做提供很大的灵活性(即运行未更改的操作系统),但它的效率比较低。通过使用Virtio,客户操作系统包含了充当前端的驱动程序,虚拟化系统为特定的设备模拟实现后端驱动程序。通过在这些前端和后端驱动程序中的 virtio,为开发模拟设备提供标准化接口,从而增加代码的跨平台重用率并提高效率。在传统虚拟化系统中,会使用QEMU通过纯软件的方式来模拟I/O 设备,包括键盘、鼠标、显示器,硬盘和网卡等。QEMU对客户操作系统响应的过程如下:

  1. 客户机的设备驱动程序发起I/O 请求操作请求
  2. KVM 模块中的I/O 操作捕获代码拦截这次I/O 请求
  3. 经过处理后将本次I/O 请求的信息放到 I/O共享页(sharing page),并通知用户空间的 QEMU 程序。
  4. QEMU 程序获得I/O 操作的具体信息之后,交由硬件模拟代码来模拟出本次I/O 操作。
  5. 完成之后,QEMU 将结果放回I/O 共享页,并
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/885009
推荐阅读
相关标签
  

闽ICP备14008679号