虚拟化实现—I/O设备虚拟化

VMM 通过I/O虚拟化来复用有限的外设资源,其通过截获 Guest OS对I/O设备的访问请求,然后通过软件模拟真实的硬件,目前I/O设备的虚拟化方式主要有三种:设备接口完全模拟、前端/后端模拟、直接划分。

1、设备接口完全模拟:

即软件精确模拟与物理设备完全一样的接口,Guest OS驱动无须修改就能驱动这个虚拟设备,Vmware即使用此方法。

优点:没有额外的硬件开销,可重用现有驱动程序;

缺点:为完成一次操作要涉及到多个寄存器的操作,使得 VMM 要截获每个寄存器访问并进行相应的模拟,这就导致多次上下文切换;由于是软件模拟,性能较低。

2、前端/后端模拟:

VMM 提供一个简化的驱动程序(后端, Back-End),Guest OS中的驱动程序为前端 (Front-End, FE),前端驱动将来自其他模块的请求通过与Guest OS间的特殊通信机制直接发送给Guest OS的后端驱动,后端驱动在处理完请求后再发回通知给前端,KVM即采用该方法。

优点:基于事务的通信机制,能在很大程度上减少上下文切换开销,没有额外的硬件开销;

缺点:需要VMM实现前端驱动,后端驱动可能成为瓶颈。

3、直接划分:

即直接将物理设备分配给某个 Guest OS,由Guest OS直接访问I/O设备(不经 VMM),目前与此相关的技术有IOMMU(Intel VT-d, PCI-SIG 之 SR-IOV 等),旨在建立高效的I/O虚拟化直通道。

优点:可重用已有驱动,直接访问减少了虚拟化开销;

缺点:需要购买较多额外的硬件。

0 条回复 A 作者 M 管理员 E
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论