csatblogspotdotcom

Sunday, April 20, 2008

读《Unmodified Device Driver Reuse and Improved System Dependability via Virtual Machines》[1]

当今操作系统支持各种各样的大量类型的设备,在操作系统中大部分代码都是与设备驱动相关的。新的操作系统尝试两种方法来减少设备驱动代码的量和复杂程度。一种是想办法尽量精简已有的设备驱动模块,另一种是对不同驱动模块尽量重用。本文作者提出了一种驱动程序复用技术,该技术无需修改驱动程序,更重要的是,这种实现方式增强了新操作系统实例相对于被重用驱动的独立性,而驱动程序的相对独立性又增强了系统的可靠性。

二进制驱动程序的重用已经由cohosting实现,就像VMware Workstation所做的一样,作者受启发发明了该方法。这种方法对原有设备驱动进行完全重用,并有着很强的隔离性。这种方法并没有整合驱动代码,而是让所有驱动程序留在它们原有的完全兼容的运行环境,原有的操作系统中。被包在原有操作系统中的设备驱动运行在一个专用的VM中,这样就几乎能保证语义受到保护,而且不兼容性也仅限于由VM复用而导致的时钟行为。现在,作者已经能够成功重用大量的网络、磁盘、和PCI设备驱动。

这种方法有较好的性能:对于网络,吞吐率仍然只占原系统的3-8%;每一个额外增加的虚拟机仅仅只增加0.12%CPU利用率;驱动间的隔离需要额外CPU开销,而这可以通过硬件加速来降低,例如用直接DMA处理进站的包。

新的OS和被重用驱动间的接口组成了极少量的代码,比起旧的驱动程序代码要少多了。

这篇文章主要对虚拟机驱动部分作了优化,使驱动程序重用性提高,同时提高了虚拟机算系统的可靠性,使整个系统的性能有所提高。

参考文献

  1. J. LeVasseur, V. Uhlig, J. Stoess, and S. Gotz. Unmodified device driver reuse and improved system dependability via virtual machines. In Proceedings of the 6th Symposium on Operating Systems Design and Implementation, San Francisco, CA, Dec. 2004.

Labels:

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home