VirtIO 是一种 IO 半虚拟化解决方案,它提供 Guest OS 与 Hypervisor 虚拟化设备之间的通信框架和编程接口。其主要的优势是能提高性能且减少跨平台带来的兼容性问题。本文重点结合 VirtIO 规范 1.1 版以及 Linux 中的源码来分析 VirtIO 框架。

本文是我自己学习虚拟化相关的记录,欢迎指正其中的错误及技术交流

虚拟化

  现代计算机系统通常被分成了自下而上的多个层次,每一个层次都向上一层次呈现一个抽象,每一层只需知道下层抽象的接口,而不需要了解其内部运作机制。虚拟化就是由位于下层的模块向上一层模块提供一个与它原先所期待的运行环境完全一致的接口的方法。

 虚拟化技术在云计算领域至关重要,随着云计算的迅速崛起,虚拟化技术也快速发展。Linux 中的虚拟化经历了从 I/O 全虚拟化、I/O 半虚拟化、硬件直通再到 vDPA 加速以及 Vhost-user 技术的演进。详细介绍参见独立博文 Linux Kernel 之八 Linux 设备虚拟化技术的演进之路。

分类

  虚拟化技术起始于上世纪 70 年代的 IBM System/370 大型计算机,它的操作系统能为运行在同一计算机上的不同程序提供几个完整的虚拟环境。经过五十余年的发展&#