CN102194064A - 一种i/o监控方法 - Google Patents
一种i/o监控方法 Download PDFInfo
- Publication number
- CN102194064A CN102194064A CN2010101233693A CN201010123369A CN102194064A CN 102194064 A CN102194064 A CN 102194064A CN 2010101233693 A CN2010101233693 A CN 2010101233693A CN 201010123369 A CN201010123369 A CN 201010123369A CN 102194064 A CN102194064 A CN 102194064A
- Authority
- CN
- China
- Prior art keywords
- data
- register
- port
- virtual hardware
- hardware equipment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
本发明适用于计算机技术领域,提供了一种I/O监控方法,所述方法包括:1.1检测对虚拟硬件设备的端口访问的类型;1.2当通过客户软件模块对虚拟硬件设备PIO端口的访问时,控制虚拟机监控器截获用户操作系统向CMD寄存器读写指令,并监控从数据寄存器读数据操作状态,当监控到从数据寄存器读数据时,将数据返回给所述操作系统;1.3当通过指令模拟模块对虚拟硬件设备的MMIO端口的访问时,控制虚拟机监控器将物理地址空间转换为真实物理地址空间,在虚拟硬件设备与PRD表中指定的内存之间进行DMA数据传输,实现在设备底层对端口的监控。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种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数据传输,在底层实现对硬盘端口的监控,保证硬盘数据的读取的安全性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (3)
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位,确定设置访问操作是否有错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101233693A CN102194064B (zh) | 2010-03-12 | 2010-03-12 | 一种i/o监控方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101233693A CN102194064B (zh) | 2010-03-12 | 2010-03-12 | 一种i/o监控方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102194064A true CN102194064A (zh) | 2011-09-21 |
CN102194064B CN102194064B (zh) | 2013-07-10 |
Family
ID=44602124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101233693A Active CN102194064B (zh) | 2010-03-12 | 2010-03-12 | 一种i/o监控方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102194064B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182691B (zh) * | 2014-08-22 | 2017-07-21 | 国家电网公司 | 数据保密方法及装置 |
CN107958164A (zh) * | 2016-10-17 | 2018-04-24 | 大隈株式会社 | 控制装置 |
CN110795364A (zh) * | 2019-10-31 | 2020-02-14 | 四川效率源信息安全技术股份有限公司 | 一种ide模式下访问硬盘的方法 |
CN114610557A (zh) * | 2022-05-11 | 2022-06-10 | 宏晶微电子科技股份有限公司 | 设备驱动单元的测试方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050076155A1 (en) * | 2003-10-01 | 2005-04-07 | Lowell David E. | Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor |
CN101042681A (zh) * | 2006-03-23 | 2007-09-26 | 联想(北京)有限公司 | 一种数据透明保护的安全读写系统和方法 |
CN101425046A (zh) * | 2008-10-28 | 2009-05-06 | 北京航空航天大学 | 分布式i/o资源虚拟化技术的实现方法 |
-
2010
- 2010-03-12 CN CN2010101233693A patent/CN102194064B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050076155A1 (en) * | 2003-10-01 | 2005-04-07 | Lowell David E. | Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor |
CN101042681A (zh) * | 2006-03-23 | 2007-09-26 | 联想(北京)有限公司 | 一种数据透明保护的安全读写系统和方法 |
CN101425046A (zh) * | 2008-10-28 | 2009-05-06 | 北京航空航天大学 | 分布式i/o资源虚拟化技术的实现方法 |
Non-Patent Citations (1)
Title |
---|
徐小玲: "IDE接口硬盘读写技术", 《电子科技大学学报》, vol. 31, no. 6, 31 December 2002 (2002-12-31), pages 636 - 641 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182691B (zh) * | 2014-08-22 | 2017-07-21 | 国家电网公司 | 数据保密方法及装置 |
CN107958164A (zh) * | 2016-10-17 | 2018-04-24 | 大隈株式会社 | 控制装置 |
CN110795364A (zh) * | 2019-10-31 | 2020-02-14 | 四川效率源信息安全技术股份有限公司 | 一种ide模式下访问硬盘的方法 |
CN114610557A (zh) * | 2022-05-11 | 2022-06-10 | 宏晶微电子科技股份有限公司 | 设备驱动单元的测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102194064B (zh) | 2013-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101934519B1 (ko) | 저장 장치 및 그것의 데이터 전송 방법 | |
CN100590614C (zh) | 一种虚拟技术下硬盘数据的保护方法和保护系统 | |
CN108139928B (zh) | 用于在cpu核之间迁移操作的方法、计算设备和可读介质 | |
KR20190074194A (ko) | 저장 디바이스 메모리 공간에의 직접적인 호스트 액세스 | |
US8578178B2 (en) | Storage system and its management method | |
CN106030552A (zh) | 计算机系统 | |
US20150066470A1 (en) | Method and systems for simulating a workload of a storage system | |
JP5803502B2 (ja) | 監視装置、制御方法及び制御プログラム | |
CN102194064B (zh) | 一种i/o监控方法 | |
US20110282963A1 (en) | Storage device and method of controlling storage device | |
US11182202B2 (en) | Migration between CPU cores | |
US20120221809A1 (en) | Storage apparatus and data processing method of the same | |
US11231987B1 (en) | Debugging of memory operations | |
US20140129751A1 (en) | Hybrid interface to improve semiconductor memory based ssd performance | |
US8756381B2 (en) | Storage subsystem and load distribution method for executing data processing using normal resources even if an abnormality occurs in part of the data processing resources that intermediate data processing between a host computer and a storage device | |
JP2014010476A (ja) | ストレージ仮想化装置、ストレージ仮想化方法及びストレージ仮想化プログラム | |
WO2022212182A1 (en) | System and method for providing page migration | |
US8874965B2 (en) | Controlling program code execution shared among a plurality of processors | |
KR20220125247A (ko) | 일관성 및 비일관성 메모리 요청들에 대한 중재 방식 | |
WO2012140669A2 (en) | Low pin count controller | |
CN106971110A (zh) | 一种基于国产安全处理器的计算机主板架构及运行方法 | |
US20130167206A1 (en) | Storage system, method of controlling access to storage system and computer system | |
US11016698B2 (en) | Storage system that copies write data to another storage system | |
Bougioukou et al. | Prototyping and performance evaluation of a dynamically adaptable block device driver for PCIe-based SSDs | |
WO2014147836A1 (ja) | ストレージシステムにおける暗号化機能の保守交換方法及びストレージ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 518057 computer building of the Great Wall, Nanshan District science and Technology Park, Shenzhen, Guangdong Patentee after: China the Great Wall science and technology group Limited by Share Ltd Address before: 518057 computer building of the Great Wall, Nanshan District science and Technology Park, Shenzhen, Guangdong Patentee before: China Changcheng Computer Shenzhen Co., Ltd. |