当前位置:   article > 正文

第三章 虚拟化概述(I/O虚拟化)_io虚拟化

io虚拟化

        外设资源是有限的,为了满足多个客户机操作系统的需求,VMM必须通过I/O虚拟化的方式来复用有限的外部资源。VMM截获客户机操作系统对设备的访问请求,然后通过软件的方式来模拟真实设备的效果。从处理器角度看,外设是通过一组I/O资源(端口I/O或者是MMIO)来进行访问的,对设备相关的虚拟化又被称为I/O虚拟化。

一、概述

        首先分析一下没有虚拟化的情况。给定一个外设,定义有自己的一套供软件访问的接口,这些接口的属性可能是单向的,也可能是双向的。操作系统含有外设的驱动程序,它们接收来自其他模块(如用户进程)的请求,然后按照外设规定好的方式驱动外设完成特定的任务。由于处理器在计算机中的核心地位,因此外设的访问接口最终也会被映射到处理器所能认识的地址空间或者其他资源中。当驱动程序通过指令的方式访问外设接口时,处理器才能正确识别目标对象,然后将相关请求发送到系统总线上,最终由芯片组转发给目标外设。

        1、I/O端口寄存器。映射到I/O地址空间,通过in/out指令访问。当指令处于非最高特权级,只有通过I/O位图中的允许端口才可以访问。

        2、MMIO寄存器。映射到物理地址空间,通过页表的方式控制访问权限。

        3、中断。中断模块发出中断消息,通过芯片组中的中断控制器通知给处理器,最后处理器会中断当前指令流,跳到中断描述符表IDT中对应该向量的中断服务程序执行。

        I/O端口,MMIO与中断模块组成一个典型外设呈现给软件的基本资源。还有一个特殊模块DMA,它被映射到I/O端口或MMIO中。在虚拟环境中,I/O面临的问题是:现实中外设资源是有限的,为了满足多个客户机操作系统对外设访问的需求,VMM必须通过I/O虚拟化的方式复用有限的外设资源。在这种情况下,VMM所要做的还是模拟,即截获客户机操作系统对设备的访问请求,然后通过软件的方式模拟真实物理设备的效果。

        I/O虚拟化并不需要完整的虚拟化出所有外设的所有接口,究竟怎样做完全取决于设备与VMM的策略以及客户机操作系统的需求。

        1、虚拟芯片组。

        2、虚拟PCI总线布局。

        3、虚拟系统设备:PIC、IO-APIC、PIT、RTC

        4、虚拟基本输入输出设备:显卡、网卡、硬盘

        虚拟完毕后,只要客户操作系统中有驱动程序遵守该虚拟设备的接口定义,它就可以被客户操作系统所使用。

二、设备发现

        I/O虚拟化第一步,就是VMM提供一种方式,让客户机操作系统能够发现设备,这样客户机操作系统才能加载相关的驱动程序。设备被发现,取决于被虚拟的设备类型。

        模拟一个物理总线上的设备

        1、所处物理总线类型是不可枚举,而且设备本身所属的资源是硬编码固定下来的。例如:ISA设备、PS/2设备、

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/998970
推荐阅读
相关标签
  

闽ICP备14008679号