书签 分享 收藏 举报 版权申诉 / 9

一种I/O监控方法.pdf

  • 上传人:n****g
  • 文档编号:5866105
  • 上传时间:2019-03-26
  • 格式:PDF
  • 页数:9
  • 大小:480.01KB
  • 摘要
    申请专利号:

    CN201010123369.3

    申请日:

    2010.03.12

    公开号:

    CN102194064A

    公开日:

    2011.09.21

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    专利权人的姓名或者名称、地址的变更IPC(主分类):G06F 13/28变更事项:专利权人变更前:中国长城计算机深圳股份有限公司变更后:中国长城科技集团股份有限公司变更事项:地址变更前:518057 广东省深圳市南山区科技园长城计算机大厦变更后:518057 广东省深圳市南山区科技园长城计算机大厦|||授权|||实质审查的生效IPC(主分类):G06F 21/00申请日:20100312|||公开

    IPC分类号:

    G06F21/00

    主分类号:

    G06F21/00

    申请人:

    中国长城计算机深圳股份有限公司

    发明人:

    宋靖; 贾兵; 林诗达; 王淼; 刘欣房; 顾文锦

    地址:

    518057 广东省深圳市南山区科技园长城计算机大厦

    优先权:

    专利代理机构:

    深圳中一专利商标事务所 44237

    代理人:

    张全文

    PDF完整版下载: PDF下载
    内容摘要

    本发明适用于计算机技术领域,提供了一种I/O监控方法,所述方法包括:1.1检测对虚拟硬件设备的端口访问的类型;1.2当通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从数据寄存器读数据时,将数据返回给所述操作系统;1.3当通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输,实现在设备底层对端口的监控。

    权利要求书

    1.一种I/O监控方法,其特征在于,所述方法包括下述步骤:1.1 检测对虚拟硬件设备的端口访问的类型,所述对虚拟硬件设备的端口访问的类型包括通过客户软件模块对虚拟硬件设备PIO端口的访问和通过指令模拟模块对虚拟硬件设备的MMIO端口的访问;1.2 当所述对虚拟硬件设备的端口访问的类型为通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从所述数据寄存器读数据时,将所述数据返回给所述操作系统;1.3 当所述对虚拟硬件设备的端口访问的类型为通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在所述虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输。2.如权利要求1所述的方法,其特征在于,所述步骤1.2具体包括下述步骤:控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令;虚拟机控制器读出真实数据,对读出的数据进行解密并设置状态寄存器;通过硬件中断方式等待中断,并监控从数据寄存器读数据操作状态;当监控从数据寄存器读数据时,将所述数据返回给所述操作系统。3.如权利要求1所述的方法,其特征在于,所述步骤1.3具体包括下述步骤:读取命令块寄存器组中状态寄存器位;当所述状态寄存器中的BSY位为0且DRDY位为1时,设置命令块寄存器组中的扇区数、扇区位置寄存器、指定要访问设备的数据位置与大小;虚拟机监控器将将指定要访问设备的数据位置的物理地址空间转换为真实物理地址空间;写命令块寄存器组中的命令寄存器,控制开始外部设备的数据访问;对所述数据进行加密,并控制在所述虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输;等待设备硬件中断的产生,读取命令块寄存器组中状态寄存器的BSY位,直到所述BSY位为0;解密所述数据,检查命令块寄存器组中状态寄存器的ERR/CHK位,确定设置访问操作是否有错误。

    说明书

    一种I/O监控方法

    技术领域

    本发明属于计算机技术领域,尤其涉及一种I/O监控方法。

    背景技术

    计算机硬件I/O设备包括端口I/O和内存I/O,其中,端口I/O主要监控IN和OUT,对端口I/O操作的监控。

    硬盘是计算机主要的存储媒介,硬盘设备通过并行ATA(PATA/IDE)接口或串行ATA接口(SATA)与主机中PCI总线上硬盘控制器连接,如图1所示,硬盘控制器连接作为桥设备实现ATA总线到PCI总线的转换。每个硬盘控制器一般提供两个ATA通道,每个通道可以连接两个ATA设备。处理器通过访问三组寄存器对硬盘设备进行控制,这三组寄存器分别为:命令块寄存器组、控制块寄存器组和ATA总线控制寄存器组。三组寄存器的I/O基地址由硬盘的PCI配置空间来确定,命令块寄存器组用于传输命令和参数,占用8个PIO端口,共10个可访问寄存器;控制块寄存器组占用一个PIO端口,读端口时访问的是命令块寄存器组中的状态寄存器,写端口时访问的是设备控制寄存器。

    但是,现有的硬盘数据的访问存在一定的弊端,现有的监控系统设置在操作系统,由于操作系统本身的安全性不高,因此,导致对硬盘的数据读取访问也存在不安全性。

    发明内容

    本发明实施例的目的在于提供一种I/O监控方法,旨在解决现有的监控系统设置在操作系统之上,由于操作系统本身的安全性不高导致对硬盘数据的读取访问也存在不安全性的问题。

    本发明实施例的另一目的在于提供一种I/O监控方法,所述方法包括下述步骤:

    1.1检测对虚拟硬件设备的端口访问的类型,所述对虚拟硬件设备的端口访问的类型包括通过客户软件模块对虚拟硬件设备PIO端口的访问和通过指令模拟模块对虚拟硬件设备的MMIO端口的访问;

    1.2当所述对虚拟硬件设备的端口访问的类型为通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从所述数据寄存器读数据时,将所述数据返回给所述操作系统;

    1.3当所述对虚拟硬件设备的端口访问的类型为通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在所述虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输。

    在本发明实施例中,检测对虚拟硬件设备的端口访问的类型;当通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从数据寄存器读数据时,将数据返回给所述操作系统;当通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输,在底层实现对硬盘端口的监控,保证硬盘数据的读取的安全性。

    附图说明

    图1是本发明实施例提供的I/O监控系统的结构框图;

    图2是本发明实施例提供的I/O监控方法的实现流程图;

    图3是本发明实施例提供的通过PIO方式读取硬盘数据的实现流程图;

    图4是本发明实施例提供的通过DMA方式访问硬盘数据的实现流程图。

    具体实施方式

    为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

    在本发明实施例中,检测对虚拟硬件设备的端口访问的类型;当通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从数据寄存器读数据时,将数据返回给所述操作系统;当通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输。

    图1示出了本发明实施例提供的I/O监控系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分。

    系统包括虚拟硬件设备、客户软件模块、内存虚拟管理模块、指令模拟模块和虚拟中断控制器,其中:

    客户软件模块接收客户软件对虚拟硬件设备PIO端口的访问,控制实现虚拟处理器与运行的客户软件进行数据交互;内存虚拟管理模块控制管理与内存访问相关的操作,将客户内存物理地址空间转换为真实物理地址空间;指令模拟模块接收客户软件对虚拟硬件设备的MMIO端口的访问,解析客户软件当前运行的指令,把客户软件操作请求转发给所述虚拟硬件设备进行处理;虚拟中断控制器处理客户软件对中断控制器的访问,向客户软件注入中断请求。

    在本发明实施例中,虚拟硬件设备通过客户软件模块接收客户软件对虚拟设备PIO端口的访问,通过所述指令模拟模块接收客户软件对虚拟设备MMIO端口的访问,通过内存虚拟管理模块访问客户端内存,通过虚拟中断控制器向客户注入中断请求,实现硬件设备的虚拟化。

    在本发明实施例中,硬盘数据的访问方式包括两种方式,一种是PIO方式,另一种是DMA方式。对于允许客户软件直接访问的硬件设备,客户软件可以直接访问硬件设备的资源数据。

    图2示出了本发明实施例提供的I/O监控方法的实现流程,其具体的步骤如下所述:

    在步骤S201中,检测对虚拟硬件设备的端口访问的类型,所述对虚拟硬件设备的端口访问的类型包括通过客户软件模块对虚拟硬件设备PIO端口的访问和通过指令模拟模块对虚拟硬件设备的MMIO端口的访问。

    在步骤S202中,当所述对虚拟硬件设备的端口访问的类型为通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从所述数据寄存器读数据时,将所述数据返回给所述操作系统。

    在步骤S203中,当所述对虚拟硬件设备的端口访问的类型为通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在所述虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输。

    图3示出了本发明实施例提供的通过PIO方式读取硬盘数据的实现流程,其具体的步骤如下所述:

    在步骤S301中,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令。

    在本发明实施例中,设备上电初始化,设置命令块寄存器组中状态寄存器的设备准备好位为1,表示设备可以工作,并向LBA-low/LBA-mid/LBA-high/Def-sel register设定要读写的硬盘、LBA和扇区数。

    当用户操作系统有向硬盘读取数据要求时,用户操作系统向硬盘控制器的CMD寄存器发送读写操作指令,虚拟机监控器通过硬盘读写监控模块监控到硬盘控制器接收到命令块寄存器组中命令寄存器的写入指令,则读取数据。

    在步骤S302中,虚拟机控制器读出真实数据,对读出的数据进行解密并设置状态寄存器。

    在步骤S303中,通过硬件中断方式等待中断,并监控从数据寄存器读数据操作状态。

    在本发明实施例中,通过硬件中断方式等待硬件中断,当然也可以不通过中断通知方式,设置命令块寄存器组中状态寄存器的BSY位为1,表示设备忙,进行读写数据;当数据有效时,设置状态寄存器的DRQ位,表示命令块寄存器组中的数据寄存器中存在有效数据。

    在步骤S304中,当监控从数据寄存器读数据时,将所述数据返回给所述操作系统。

    在本发明实施例中,当数据传输错误时,设置命令块寄存器组中状态寄存器的ERQ/CHK位,表示数据访问错误。

    在本发明实施例中,虚拟机监控器监控到从数据寄存器读数据,则把数据返回给用户操作系统。当数据访问完成,设置命令块寄存器组中的状态寄存器BSY位为0,表示设备空闲,发送中断请求。当读取命令块寄存器组中状态寄存器,设备清除中断请求。当数据从命令块寄存器组中读写完成,设备清除命令块寄存器组中状态寄存器的DRQ位。

    图4示出了本发明实施例提供的通过DMA方式访问硬盘数据的实现流程,其具体的步骤如下所述:

    在步骤S401中,读取命令块寄存器组中状态寄存器位。

    在本发明实施例中,读取状态寄存器中的BSY位,直到为0,以DMA访问方式为实施例进行说明:

    写ATA总线控制寄存器组中的命令寄存器:

    1.设置命令寄存器的Start/Stop位为0,停止DMA传输;

    2.设置命令寄存器的Read/Write位,控制DMA数据传输的方向;

    3.写清除状态寄存器的Error位和Interrup位;

    4.设置PRD表地址为虚拟机监控器定义的地址,即指定的DMA数据传输的内存区域。

    在步骤S402中,当所述状态寄存器中的BSY位为0且DRDY位为1时,设置命令块寄存器组中的扇区数、扇区位置寄存器、指定要访问设备的数据位置与大小。

    在本发明实施例中,设置命令块寄存器组中的设备寄存器,指定访问的设备。

    在步骤S403中,虚拟机监控器将将指定要访问设备的数据位置的物理地址空间转换为真实物理地址空间。

    在步骤S404中,写命令块寄存器组中的命令寄存器,控制开始外部设备的数据访问。

    在步骤S405中,对所述数据进行加密,并控制在所述虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输。

    在步骤S406中,等待设备硬件中断的产生,读取命令块寄存器组中状态寄存器的BSY位,直到所述BSY位为0。

    在步骤S407中,解密所述数据,检查命令块寄存器组中状态寄存器的ERR/CHK位,确定设置访问操作是否有错误。

    在步骤S408中,写ATA总线控制寄存器组中的命令寄存器,停止ATA总线控制器DMA。

    在步骤S409中,写ATA总线控制寄存器组中的状态寄存器,清除Interrup位。

    上述仅为本发明的一个实施例,在此不用以限制本发明。

    在本发明实施例中,检测对虚拟硬件设备的端口访问的类型;当通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从数据寄存器读数据时,将数据返回给所述操作系统;当通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输,在底层实现对硬盘端口的监控,保证硬盘数据的读取的安全性。

    以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

    关 键  词:
    一种 监控 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种I/O监控方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-5866105.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1