发明名称 一种I/O监控方法
摘要 本发明适用于计算机技术领域,提供了一种I/O监控方法,所述方法包括:1.1检测对虚拟硬件设备的端口访问的类型;1.2当通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从数据寄存器读数据时,将数据返回给所述操作系统;1.3当通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输,实现在设备底层对端口的监控。
申请公布号 CN102194064B 申请公布日期 2013.07.10
申请号 CN201010123369.3 申请日期 2010.03.12
申请人 中国长城计算机深圳股份有限公司 发明人 宋靖;贾兵;林诗达;王淼;刘欣房;顾文锦
分类号 G06F13/28(2006.01)I 主分类号 G06F13/28(2006.01)I
代理机构 深圳中一专利商标事务所 44237 代理人 张全文
主权项 一种I/O监控方法,其特征在于,所述方法包括下述步骤: 1.1检测对虚拟硬件设备的端口访问的类型,所述对虚拟硬件设备的端口访问的类型包括通过客户软件模块对虚拟硬件设备PIO端口的访问和通过指令模拟模块对虚拟硬件设备的MMIO端口的访问; 1.2当所述对虚拟硬件设备的端口访问的类型为通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从所述数据寄存器读数据时,将所述数据返回给所述操作系统; 1.3当所述对虚拟硬件设备的端口访问的类型为通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在所述虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输; 所述步骤1.2具体包括下述步骤: 控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令; 虚拟机控制器读出真实数据,对读出的数据进行解密并设置状态寄存器; 通过硬件中断方式等待中断,并监控从数据寄存器读数据操作状态; 当监控从数据寄存器读数据时,将所述数据返回给所述操作系统; 所述步骤1.3具体包括下述步骤: 读取命令块寄存器组中状态寄存器位; 当所述状态寄存器中的BSY位为0且DRDY位为1时,设置命令块寄存器组中的扇区数、扇区位置寄存器、指定要访问外部设备的数据位置与大小; 虚拟机监控器将指定要访问外部设备的数据位置的物理地址空间转换为真实物理地址空间; 写命令块寄存器组中的命令寄存器,控制开始外部设备的数据访问; 对所述数据进行加密,并控制在所述虚拟硬件设备与PRD表中指定的内存 之间进行DMA数据传输; 等待设备硬件中断的产生,读取命令块寄存器组中状态寄存器的BSY位,直到所述BSY位为0; 解密所述数据,检查命令块寄存器组中状态寄存器的ERR/CHK位,确定设置访问操作是否有错误。
地址 518057 广东省深圳市南山区科技园长城计算机大厦