CN102289386A - 通过部分虚拟化机器的统一存储设备 - Google Patents

通过部分虚拟化机器的统一存储设备 Download PDF

Info

Publication number
CN102289386A
CN102289386A CN201110179065A CN201110179065A CN102289386A CN 102289386 A CN102289386 A CN 102289386A CN 201110179065 A CN201110179065 A CN 201110179065A CN 201110179065 A CN201110179065 A CN 201110179065A CN 102289386 A CN102289386 A CN 102289386A
Authority
CN
China
Prior art keywords
virtual
equipment
request
controller
virtual machine
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
Application number
CN201110179065A
Other languages
English (en)
Other versions
CN102289386B (zh
Inventor
H·周
V·J·齐默
M·A·罗斯曼
Y·钱
J·S·陈
F·黄
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN102289386A publication Critical patent/CN102289386A/zh
Application granted granted Critical
Publication of CN102289386B publication Critical patent/CN102289386B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种通过部分虚拟化机器的统一存储设备。在具有处理器封装、操作系统和物理I/O设备的计算系统中,提供部分虚拟机以实例化与物理I/O设备对应的虚拟I/O设备,该虚拟I/O设备具有虚拟I/O控制器。部分虚拟机包括I/O端口捕集器,用于捕获由操作系统对虚拟I/O设备的I/O请求;耦合到I/O端口捕集器的I/O控制器仿真器,用于当I/O请求包括I/O控制请求时处理对虚拟I/O控制器的I/O控制请求;耦合到I/O端口捕集器组件的I/O设备仿真器,用于当I/O请求包括I/O访问请求时处理用于与虚拟I/O设备通信的I/O访问请求;以及耦合到I/O控制器仿真器和I/O设备仿真器的设备驱动程序,用于至少部分地基于I/O控制请求和I/O访问请求与物理I/O设备通信。部分虚拟机在处理器封装内的安全飞地会话内执行,通过防止操作系统对部分虚拟机的访问来提高I/O会话的安全性。

Description

通过部分虚拟化机器的统一存储设备
背景技术
1.领域
本发明的实施例一般涉及计算机系统,且尤其涉及系统固件和虚拟化。
2.描述
历史上,包括个人计算机(PC)的计算机系统已经使用很多不同设备用于数据存储。每种存储设备提供某些能力且表现出诸如连接接口、访问速度、容量等特性。例如,存储设备包括软盘驱动器、硬盘驱动器、固态盘驱动器、CDROM驱动器、通用串行总线(USB)“拇指(thumb)”驱动器等等。正不断开发新的存储设备。为实现对每种新存储设备的访问,操作系统(OS)也必须发展,通常是通过提供设备驱动程序软件。设备驱动程序软件允许通过OS通信的应用程序从存储设备读取数据和向存储设备写入数据。随着存储设备的数量和类型激增,OS开发方面的负担变得很大。此外,经由设备驱动程序对存储设备进行访问可能是不安全的,由此允许恶意用户读取和/或修改输入/输出(I/O)通信量。
附图说明
从本发明的以下详细描述,本发明的特征和优点将变得显而易见,其中:
图1是在根据本发明的实施例的计算系统中的安全飞地会话(SecureEnclave session)的图;
图2是根据本发明的实施例的计算系统的图;
图3是根据本发明的实施例的存储器映射的图;
图4是根据本发明的实施例的部分虚拟化机器的图;以及
图5是根据本发明的实施例的系统处理的流程图。
具体实施方式
本发明的实施例包括通过实现部分虚拟化机器(partial virtualizationmachine(PVM))来提供统一存储设备的系统和方法。PVM可用于在耦合到计算系统的各种物理存储设备上生成至少一个虚拟存储设备。取代为每个所支持的存储设备提供特定设备驱动程序,OS可访问至统一存储设备的接口。PVM可在安全飞地会话内执行,从而提供优于现有的存储设备接口的安全性。在本发明的实施例中,统一存储设备可以是在引导时间以及运行时间中可用的,且可以独立于OS。
在本说明书中对本发明的“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。在本说明书各处出现的短语“在一个实施例中”并不一定均指代同一实施例。
对于与特定存储设备连接的OS,通常由设备的制造者定义用于该存储设备的标准I/O接口。存在多年来已经使用的若干种I/O接口,诸如可在www.t13.org/获得的并行PC/AT附件/AT附件分组接口(ATAPI)(通常称为ATA)(ATAPI用作ATA的一部分,在INCITS 317-1998中,具有分组接口扩展的AT附件(AT Attachment with Packet Interface Extension,ATA/ATAPI-4))。在ansi.org可用的小型计算机系统接口(SCSI)、通用串行总线(USB)、串行ATA(SATA)及其它。在本发明的一个实施例中,可使用ATA接口。在一个实施例中,PVM针对耦合到计算系统的每种不同物理存储设备来列举虚拟ATA设备以供OS访问。这些存储设备可在引导时间或在之后的任意时间耦合到计算系统,或者可从系统去除。例如,USB拇指驱动器可由PVM在引导时间或在运行时间中列举为集成驱动电子(IDE)硬盘。因此,例如,将USB拇指驱动器热插入计算系统可导致USB拇指驱动器对OS呈现为作为硬盘可见。
为了保护统一存储设备免受至I/O的恶意访问,在本发明的实施例中,可在计算系统的处理器封装内的安全飞地(SE)会话内执行PVM。图1是在根据本发明的实施例的计算系统中的安全飞地会话(Secure Enclave session)的图。为了解释的目的,在图1中以简化形式示出计算系统100的部分。处理器封装102包括在安全周界内的一个或多个处理核。在一个实施例中,安全周界可以是处理器封装边界(在图1中示为粗线)。处理器封装与存储器104和平台控制中枢(PCH)106连接。PCH与一个或多个I/O设备108连接。安全飞地能力的实现包括提供若干处理器指令,其产生安全飞地并强制隔离并提供对指令执行和数据访问的保护。可对处理器封装外的数据和代码进行加密和完整性检查。处理器封装内的数据和代码可能是未加密的且受到模式和高速缓存保护机制保护。在实施例中,数据不从安全飞地“泄露”。处理器封装内的微代码保存飞地内的飞地状态信息,用于中断、异常、捕集和虚拟机管理器(VMM)退出。在题为“Method and Apparatus to Provide Secure Application Execution(提供安全应用执行的方法和装置)”的由Francis X.McKeen等人于2009年12月22日提交到美国专利商标局作为受理局的PCT专利申请PCT/US2009/069212中描述了安全飞地能力,该申请通过引用结合与此。
图2是根据本发明的实施例的计算系统的图。在计算系统200中,一个或多个应用程序202在计算系统上执行。计算系统包括诸如操作系统(OS)204和计算平台206之类的常规组件。计算平台包括处理器封装208、存储器210和固件212以及未示出的其它常规组件。计算系统200还包括一个或多个I/O设备214(例如,硬盘驱动器、CD-ROM驱动器、DVD驱动器、USB拇指驱动器、蓝光播放器、固态驱动器、网络接口控制器(NIC)等)。在本发明的实施例中,当应用程序需要从I/O设备之一读取数据或向其写入数据时,应用程序202与OS 204连接。OS然后调用I/O驱动程序组件216来处理I/O请求。I/O驱动程序216转换OS请求并将该请求转发到部分虚拟机(PVM)218.
在本发明的实施例中,I/O驱动程序调用PVM 218来进一步处理I/O请求并与所选的I/O设备214通信。与高端服务器计算系统中使用的完全虚拟化和准虚拟化的概念不同,本文中使用的部分虚拟化表示仅计算系统的硬件组件中的一些被虚拟化,而其它的未被虚拟化。虚拟化的组件可由OS(通过其I/O驱动程序组件)经由PVM直接访问。因此,在一个实施例中,PVM包括轻量级虚拟机(LVMM)且可作为代码组件包括在系统固件212中。在比典型的LVMM简单的变型中,本发明的实施例的PVM不包括服务OS(Service OS)。通过仅提供部分虚拟化,与先前的虚拟化方案相比,PVM提供更好的性能,使得PVM能够用于低性能计算系统。在虚拟机管理器(VMM)通常整体地捕集并表示系统的情况下,PVM旨在是非常轻量的解决方案(也可简单地称为微管理程序),其中实际上平台的非常小的子集被虚拟化,使得I/O周期的捕集限于特定范围(例如,与对特定控制器的访问相关联),但可能不提供对抗无效存储器访问的其它“保护”,或者否则可能更具入侵性、需要更多系统资源或慢的平台操作的其它事物。
在实施例中,PVM可生成类似于计算系统具有的其它设备的称为虚拟I/O设备217的统一存储设备的实例用于OS,且OS将无限制地检测并使用它们。在一个实施例中,被实例化的虚拟I/O设备217是虚拟ATA设备。因此,在物理I/O设备(例如,SATA控制器)和虚拟I/O设备之间具有1∶1映射。可被实例化的虚拟I/O设备的数量可依赖于实现。
由于这种部分虚拟化,一次仅可运行一个OS实例,这与同时运行多个操作系统实例的典型完全虚拟模式不同。这种情况是因为在部分虚拟化情况中,仅非常小的系统子集被实现在PVM中。当计算平台被完全虚拟化时,整个计算平台被包围在软件模型中且可被重复复制,使得系统可被分成n块,运行OS目标的n个实例。在PVM中,资源可能是有限的。
在本发明的实施例中,PVM操作为OS和底层硬件之间的转换器,且通信“语言”可以是ATA接口规范的(当虚拟I/O设备是虚拟ATA设备时)。在其它实施例中,虚拟I/O设备可针对其它接口规范而实例化。当OS需要从统一存储设备(在此示例中是虚拟ATA设备)读取数据或向其写入数据时,遵循ATA接口规范,OS 204中的I/O驱动程序216通过读或写特定的I/O端口(诸如0x1F7或0x3F7)来将ATA命令发送到统一存储设备。PVM 218然后将这些请求变换成对底层物理I/O设备(例如,USB拇指驱动、CD-ROM驱动器等)所理解的那些命令的读或写操作。
处理器封装支持的虚拟技术(VT)可用于实现PVM。VT是本领域公知的且在本文中将不再进一步予以描述。通过在处理器中编程虚拟机控制结构(VMCS)(本领域已知的),PVM能够捕获这些相关的I/O端口访问,因此在使用本发明的实施例时不需要修改OS内核。得益于VT,PVM是独立于OS的,这表示与计算系统兼容的所有OS可运行在启用PVM的计算系统上。
为了实例化统一存储设备,可在计算系统初始化处理期间(即,在引导时间中)并且在OS加载之前,由系统固件开始PVM。在实施例中,PVM至少执行若干初始化步骤。
在OS加载之前,系统固件212保留一定范围的存储器以供PVM使用。图3是根据本发明的实施例的存储器映射的图。在实施例中,可如图所示的划分计算系统的物理存储器空间。OS可访问OS范围302。在一个实施例中,该范围可在存储器的起始处开始。可保留共享的存储空间304用于在OS和PVM之间的数据交换。在一个实施例中,共享的存储器空间可在比OS范围更连续的存储器中。在一个实施例中,PVM存储器空间306可保留在存储器的顶部。在其它实施例中,还可使用其它存储器分配和布置。PVM存储器对OS隐藏。OS不能访问PVM存储器306。
PVM列举至少一个虚拟I/O控制器并当启动期间OS扫描关于虚拟I/O控制器的信息时报告I/O设备。在一个实施例中,虚拟I/O控制器是虚拟ATA控制器且I/O设备是ATA设备。一旦对I/O的请求被PVM捕获,处理I/O请求的任务可由称为I/O控制器仿真器和与实例化虚拟I/O设备对应的I/O设备仿真器(以下描述)的PVM组件执行。底层物理I/O设备的存在和对底层物理I/O设备的访问可通过PVM隐藏。物理I/O设备不应被OS检测到以避免PVM和OS的冲突访问。在OS发起之前,建立I/O控制器的软件模型,使得设备的“发现”/“配置”/“交互”由于其被虚拟化正常发生,但是实际上OS(在不知道的情况下)与真实I/O硬件的软件仿真交互。PVM控制OS中的定时器中断,使得当执行I/O请求转换任务时,PVM能够从OS“窃取”处理器执行周期。一旦已经执行这些初始化步骤,则PVM等待来自OS的I/O请求。
PVM包括若干功能组件来处理I/O请求从虚拟I/O设备至底层物理I/O设备的转换。图4是根据本发明的实施例的部分虚拟化机器400的图.I/O端口捕集器组件402捕获由OS发出的对I/O端口的读或写操作。然后可将I/O请求传送到仿真器。I/O控制器仿真器组件404处理作为对实例化虚拟I/O控制器的I/O控制请求的I/O请求。在虚拟I/O控制器包括虚拟ATA控制器的实施例中,I/O控制器仿真器组件包括ATA控制器仿真器。I/O设备仿真器组件406仿真被访问的特定物理I/O设备并处理作为I/O访问请求的I/O请求。在实施例中,I/O设备仿真器包括ATA设备仿真器,且被仿真的设备可以是诸如虚拟硬盘、虚拟CDROM等支持ATA接口的任何设备。两个仿真器包括事件驱动状态机,且I/O访问是仿真器的动作的触发源。取决于依赖于实现的使用情况,不同的设备驱动程序408可包括在PVM中。例如,如果用户想要在USB拇指驱动器上实例化虚拟硬盘,则USB拇指驱动器的设备驱动程序和相应的USB控制器可包括在PVM中。设备驱动程序至少部分地基于I/O控制请求和I/O访问请求与物理I/O设备通信。
图4中示出的其他PVM组件包括帮助将I/O请求和访问转换至物理I/O设备的互补模块。其它组件包括调度器410,以调度在对虚拟化域的若干访问期间可能发生的事件。例如,可以有一I/O请求,该I/O请求出现四次,只要一个正常保留在PVM的上下文中即可。如果已经完成仅一部分I/O事务,则调度器可跟踪并管理它连同其它待决的事务。还包括用于管理PVM存储空间的分配和取消分配的存储器管理412、用于处理由隐藏的I/O设备触发的中断的中断管理414以及用于对OS隐藏I/O设备的PCI设备管理416。这些PVM组件可类似于OS内的相应模块,但较小、较快且较简单。
在一个实施例中,所处理的I/O接口可以是ATA接口。在PVM内作为虚拟ATA控制器的统一存储设备的实现可由于若干原因而有用。第一,大多数可用操作系统包括ATA设备驱动程序并在ATA存储设备(例如,硬盘)上存储系统或用户数据。ATA设备驱动程序是基本的设备驱动程序且长远来看将是大多数操作系统的一部分。第二,ATA接口定义异步方法来读写数据,其包括直接存储器访问(DMA)。得益于这种DMA模式,PVM异步地处理读/写请求,这表示当访问大量数据时,PVM将不阻碍OS运行。当ATA读/写命令被PVM捕获时,PVM调用适当的设备驱动程序来开始读/写进程。PVM在数据准备好传送之前不会等待。相反,PVM立即将控制返回给OS。在下一定时器片(timer slice),PVM窃取处理器周期来执行数据的读/写。在数据准备好用于OS之后,PVM创建中断来通知OS。第三,ATA规范支持即插即用特征。当从计算平台去除底层物理I/O设备时,PVM具有通过改变虚拟ATA控制器的状态寄存器来通知OS该事件的能力。
图5是根据本发明的实施例的系统处理的流程图。在502,OS 204经由I/O驱动程序216向所选I/O端口写入,指示需要执行读或写请求。在504,PVM 218的I/O端口捕集器402检测到I/O端口的写入并“钩住”写操作。在504,PVM还开始安全飞地会话以保护随后的I/O处理。尽管PVM在安全飞地内操作,但PVM的处理受到保护,且OS和应用程序不能看到PVM正在做什么(即,PVM活动不能被跟踪)。在506,如果I/O请求参考I/O控制器寄存器(可用I/O端口之一),则处理继续到框508。典型的请求可包括ReadBlock(读块)、WriteBlock(写块)和ConfigureDevice(配置设备)。请求可根据控制器的类型而改变。其它不经常使用的请求可包括复位和转储清除,且可根据I/O硬件而改变。
在508,I/O控制器仿真器404处理I/O请求。接下来,在510,PVM更新其内部PVM状态机以反映I/O请求的处理。在一个实施例中,状态可以是如下:
1)排队的事务(队列中的事务,但还未起作用;
2)待决事务(已经活动但还未完成的事务);这通常在完成请求需要若干迭代时发生(这可能不是罕见的)。当在PVM上下文中时它还是待运行的下一事务;以及
3)完成的事务(已经无差错地处理的事务)。
事务可另外作为FIFO(先入/先出)队列被处理——其中#2被处理(如果存在的话)然后将处理#1最老的事务(排队状态)。
在512,处理继续,且PVM停止当前安全飞地会话并将控制返回给OS。在506,如果I/O请求不参考I/O控制器寄存器,则在框514处理继续。在514,如果I/O请求参考I/O命令块端口(可用I/O端口之一),则处理继续到框516。如果I/O请求不参考I/O命令块端口,则在512,PVM停止当前安全飞地会话并将控制返回给OS。在516,I/O设备仿真器406处理I/O请求。在518,I/O设备仿真器确定I/O请求是否要读或写大量数据(什么是“大”取决于实现)。如果读或写请求是针对大量数据的,则在520,PVM调度器410从OS窃取CPU周期。这表示由于以某种频率基础的周期性定时器,PVM的实现将调度要被再次访问的PVM,使得它能处理所请求的事务。因为通常PVM很大程度上是被动的,当事务处于待决状态时,PVM将确保它获得更多关注,使得它能够通过使系统频繁地切换到其上下文来处理事务。它不能在整个时间中保持在上下文中,因为大多数OS不能在从其“窃取”计算机平台达延长的时间段时维持稳定性。因此,PVM将获得足够的处理器周期来完成其工作,但不足以引起OS上下文内的资源分配问题。在522,PVM开始设备驱动程序408中的适当的一个以读或写数据。如果在518要读或写的数据量不大,则跳过框520和522。PVM具有在将控制返回给OS之前允许系统保持在PVM上下文中多长时间的先验知识。因为PVM将与真实I/O硬件直接交互,所以PVM将知道特定事务是否已经通过I/O硬件完成。在任一情况下,在510,PVM更新其内部PVM状态机以反映I/O请求的处理。最后,在512,处理继续,且PVM停止当前安全飞地会话并将控制返回给OS。
利用包括在计算系统中的本发明的实施例,可启用各种使用模型。例如,对于很多移动因特网设备(MID),没有足够的存储器来安装内部CDROM驱动器,因此计算系统供应商需要为用户开发另外的软件工具来安装操作系统(通常经由可引导USB拇指驱动器)。利用本发明的实施例,PVM可配置成使PVM至少部分地基于USB拇指驱动器中的图像文件来生成虚拟CDROM驱动器,从而允许以传统方式安装OS。OS的很多安装程序具有关于他们从哪里安装的推断。本发明的实施例实现获取驻留在USB拇指驱动器上的线性信息集的能力,并且使PVM为其呈现CD软件模型,使得底层信息似乎源自CD设备,但实际上当OS认为其正与CD设备对话时PVM充当至物理USB设备的中转。
通常OS从特定位置处的硬盘驱动器加载,且OS假设这是事实。然而,在某些情况下,可能期望从另一个存储设备(例如,从USB拇指驱动器)加载OS。这种使用情况在某些计算系统的支持工程师间是流行的。一旦计算系统的OS变得损坏且不能开始,支持工程师可开始OS的纯净版以便诊断计算系统的硬件和软件。传统上,由于关于OS加载位置(例如,在硬盘驱动器上)的假设,这种诊断环境需要由计算系统的制造商开发或定制。然而,在本发明的实施例中,支持工程师可配置PVM基于USB拇指驱动器生成虚拟硬盘驱动器,且纯净OS可从USB拇指驱动器直接开始,而无需制造商的进一步开发努力。
PVM还可用于保护存储设备供应商的知识产权。在一个示例中,Linux内核具有通用公共许可证(General Public License(GPL)),因此为Linux开发的任何内核模块也应对内核模块的代码开放资源。如果供应商想要在Linux上启用该供应商的存储设备,则供应商需要开发设备驱动程序,这通常是内核模块。该内核模块的源代码然后可变为公共的,这是供应商不期望的。在本发明的实施例中,供应商可开发用于供应商的存储设备的包括在PVM中的设备驱动程序,且PVM可配置成生成供应商的物理存储设备上的虚拟ATA设备。因为供应商的设备驱动程序在PVM中,且经由安全飞地保护PVM的操作,所以供应商的设备驱动程序受到保护。因此,供应商通过避免开发专用于GPL OS的设备驱动程序来保护其知识产权。扩展该使用模型,供应商可仅开发一个设备驱动程序用于PVM,且各种OS能够经由PVM访问供应商的存储设备,从而代替供应商为每个所支持的OS开发单独的设备驱动程序。
另外,如果底层物理设备是硬盘驱动器,则PVM可用于在硬盘驱动器上保留存储区,并且隐藏该区域用于特定用途,诸如系统恢复或数据保护。
本领域的技术人员将意识到在不背离本发明的范围的情况下实现用于经由PVM提供统一存储设备的不同方案的选择。本领域的技术人员还将意识到所公开的发明可应用到纯软件或硬件辅助的可采用计算机系统或编程环境的部分或完全虚拟化的不同类型的虚拟化环境和虚拟化系统。
此外,本领域的技术人员将意识到本发明的实施例可按其他方式以及利用其他编程语言来实现。
本文所述的技术不限于任何特定的硬件或软件配置;他们可在任何计算或处理环境中的找到应用。这些技术可实现在嵌入在硬件、软件或固件组件或上述组合中的逻辑中。这些技术可实现在可编程机器上执行的程序中,该可编程机器诸如移动或固定计算机、个人数字助理、机顶盒、蜂窝电话和寻呼机以及其它电子设备,每个均包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及一个或多个输出设备。程序代码被施加到利用输入设备输入的数据以执行所述功能并生成输出信息。输出信息可被应用到一个或多个输出设备。本领域的技术人员可意识到本发明可利用包括多核处理器、多处理器系统、小型计算机、大型计算机等的各种计算机系统配置来实施。本发明还可在分布式计算环境中实施,其中任务可由通过通信网络连接的远程处理设备来执行。
每个程序可按高级过程或面向对象的编程语言来实现以与处理系统通信。然而,如果需要的话,程序可按汇编或机器语言来实现。在任何情况下,语言可被编译或解释。
程序指令可被用于使利用这些指令编程的通用或专用处理系统执行本文所述的操作。替代地,操作可通过包含用于执行这些操作的硬接线逻辑的特定硬件部件来执行,或通过已编程计算机组件和定制硬件组件的任何组合来执行。本文所述的方法可作为计算机程序产品来提供,该计算机程序产品可包括具有指令存储于其上的机器可读介质,该指令用于编程处理系统或其它电子设备以执行该方法。本文所使用的术语“机器可读介质”应包括能够存储和编码指令序列供机器执行并导致机器执行本文所述的任一种方法的任何介质。术语“机器可读介质”因此应包括但不限于固态存储器、光盘和磁盘。此外,本领域中通常将一种形式或另一种形式的软件(例如,程序、过程、进程、应用、模块、逻辑等等)表述为采取动作或导致结果。这种表达仅仅是阐述通过处理系统执行软件以使处理器执行动作或产生结果的简化方式。
尽管已经参考所示实施例描述本发明,但不打算以限制的含义解释本说明书。对本发明所述技术领域中的技术人员显而易见的所示实施例的各种修改以及本发明的其它实施例被认为落在本发明的范围内。

Claims (15)

1.一种包括处理器封装的计算系统,包括:
操作系统;
物理I/O设备;以及
部分虚拟机,用于实例化与物理I/O设备对应的虚拟I/O设备,所述虚拟I/O设备具有虚拟I/O控制器,包括
I/O端口捕集器组件,用于捕获由操作系统对虚拟I/O设备的I/O请求;
耦合到所述I/O端口捕集器组件的I/O控制器仿真器组件,用于当I/O请求包括I/O控制请求时处理对虚拟I/O控制器的I/O控制请求;
耦合到所述I/O端口捕集器组件的I/O设备仿真器组件,用于当I/O请求包括I/O访问请求时处理用于与虚拟I/O设备通信的I/O访问请求;以及
耦合到I/O控制器仿真器组件和I/O设备仿真器组件的设备驱动程序组件,用于至少部分地基于I/O控制请求和I/O访问请求与物理I/O设备通信;
其中部分虚拟机在所述处理器封装内的安全飞地会话内执行,防止操作系统对部分虚拟机的访问。
2.如权利要求1所述的计算系统,其特征在于,所述虚拟I/O设备包括虚拟ATA设备,所述虚拟I/O控制器包括虚拟ATA控制器,且所述物理I/O设备包括ATA设备。
3.如权利要求1所述的计算系统,其特征在于,所述虚拟I/O设备包括虚拟SCSI设备,所述虚拟I/O控制器包括虚拟SCSI控制器,且所述物理I/O设备包括SCSI设备。
4.如权利要求1所述的计算系统,其特征在于,所述虚拟I/O设备包括虚拟USB设备,所述虚拟I/O控制器包括虚拟USB控制器,且所述物理I/O设备包括USB设备。
5.如权利要求1所述的计算系统,其特征在于,还包括存储器,所述存储器被划分成用于由操作系统使用的第一部分、用于在操作系统和部分虚拟机之间的共享数据的第二部分、以及用于由部分虚拟机使用的第三部分,其中第三部分对操作系统隐藏。
6.如权利要求1所述的计算系统,其特征在于,所述物理I/O设备对操作系统隐藏。
7.如权利要求1所述的计算系统,其特征在于,所述部分虚拟机是独立于OS的。
8.在具有操作系统和处理器封装的计算系统中,一种提供与物理I/O设备对应的虚拟I/O设备的方法,包括:
由部分虚拟机实例化虚拟I/O设备,所述虚拟I/O设备具有虚拟I/O控制器,部分虚拟机在处理器封装内的安全飞地会话内执行,从而防止操作系统对部分虚拟机的访问;
由部分虚拟机的I/O端口捕集器组件捕捉从操作系统至虚拟I/O设备的I/O请求;
当I/O请求包括对虚拟I/O控制器的I/O控制请求时,由部分虚拟机的I/O控制器仿真器组件处理I/O控制请求;以及
当I/O请求包括I/O访问请求时,由部分虚拟机的I/O设备仿真器组件处理I/O访问请求,I/O访问设备仿真器与关联于物理I/O设备的部分虚拟机的设备驱动程序通信以执行I/O访问请求。
9.如权利要求8所述的方法,其特征在于,所述虚拟I/O设备包括虚拟ATA设备,所述虚拟I/O控制器包括虚拟ATA控制器,且所述物理I/O设备包括ATA设备。
10.如权利要求8所述的方法,其特征在于,所述虚拟I/O设备包括虚拟SCSI设备,所述虚拟I/O控制器包括虚拟SCSI控制器,且所述物理I/O设备包括SCSI设备。
11.如权利要求8所述的方法,其特征在于,所述虚拟I/O设备包括虚拟USB设备,所述虚拟I/O控制器包括虚拟USB控制器,且所述物理I/O设备包括USB设备。
12.如权利要求8所述的方法,其特征在于,所述计算系统包括存储器,所述存储器被划分成用于由操作系统使用的第一部分、用于在操作系统和部分虚拟机之间的共享数据的第二部分、以及用于由部分虚拟机使用的第三部分,其中第三部分对操作系统隐藏。
13.如权利要求8所述的方法,其特征在于,还包括通过部分虚拟机对操作系统隐藏物理I/O设备。
14.如权利要求8所述的方法,其特征在于,所述部分虚拟机是独立于OS的。
15.如权利要求8所述的方法,其特征在于,还包括在捕捉到I/O请求后由部分虚拟机开始安全飞地会话,且在处理I/O请求后在将控制返回给操作系统之前由部分虚拟机停止安全飞地会话。
CN201110179065.3A 2010-06-21 2011-06-20 通过部分虚拟化机器的统一存储设备 Active CN102289386B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/819,943 2010-06-21
US12/819,943 US8181176B2 (en) 2010-06-21 2010-06-21 Uniform storage device access using partial virtual machine executing within a secure enclave session

Publications (2)

Publication Number Publication Date
CN102289386A true CN102289386A (zh) 2011-12-21
CN102289386B CN102289386B (zh) 2015-04-08

Family

ID=44503643

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110179065.3A Active CN102289386B (zh) 2010-06-21 2011-06-20 通过部分虚拟化机器的统一存储设备

Country Status (6)

Country Link
US (1) US8181176B2 (zh)
EP (1) EP2397943B1 (zh)
JP (1) JP5345652B2 (zh)
KR (1) KR101331311B1 (zh)
CN (1) CN102289386B (zh)
WO (1) WO2011162914A2 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN104769605A (zh) * 2012-11-30 2015-07-08 英特尔公司 用于图形处理单元的安全环境
CN105074663A (zh) * 2013-03-12 2015-11-18 高通股份有限公司 按需选择性地启用虚拟机监测器的操作的方法和装置
CN105094942A (zh) * 2014-04-23 2015-11-25 华为技术有限公司 Hsm会话管理方法、管理虚拟机和服务器
CN106062714A (zh) * 2014-03-27 2016-10-26 英特尔公司 虚拟通用i/o控制器
CN106897235A (zh) * 2015-11-30 2017-06-27 联发科技股份有限公司 分组缓冲器、相应的存储系统及多端口存储器控制器
CN107430490A (zh) * 2015-03-05 2017-12-01 西部数据技术公司 处理用于封闭服务的数据存储命令
CN107533615A (zh) * 2015-03-25 2018-01-02 英特尔公司 用于利用安全飞地来强化数据加密的技术
CN107667347A (zh) * 2015-06-26 2018-02-06 英特尔公司 用于虚拟化访问由融合式可管理性和安全引擎提供的安全服务的技术
CN110661869A (zh) * 2019-09-26 2020-01-07 苏州浪潮智能科技有限公司 一种节点上线方法、系统、装置、设备及计算机存储介质

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9087200B2 (en) * 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
WO2013040241A1 (en) 2011-09-13 2013-03-21 Privatecore, Inc. Software cryptoprocessor
US8959623B2 (en) * 2012-05-25 2015-02-17 Ca, Inc. Protecting virtual machine console from misuse, hijacking or eavesdropping in cloud environments
US8756689B2 (en) 2012-06-29 2014-06-17 Intel Corporation Method, system, and device for securely handling virtual function driver communications with a physical function driver
US9684805B2 (en) * 2013-08-20 2017-06-20 Janus Technologies, Inc. Method and apparatus for securing computer interfaces
US9477603B2 (en) 2013-09-05 2016-10-25 Facebook, Inc. System and method for partitioning of memory units into non-conflicting sets
US9983894B2 (en) 2013-09-25 2018-05-29 Facebook, Inc. Method and system for providing secure system execution on hardware supporting secure application execution
US10049048B1 (en) 2013-10-01 2018-08-14 Facebook, Inc. Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor
US9537932B2 (en) * 2013-10-23 2017-01-03 Microsoft Technology Licensing, Llc Emulating test distributed application on server
CN105723377B (zh) * 2013-12-17 2019-06-04 英特尔公司 供内核模式应用使用的安全区域
US9747450B2 (en) 2014-02-10 2017-08-29 Facebook, Inc. Attestation using a combined measurement and its constituent measurements
US9686077B2 (en) * 2014-03-06 2017-06-20 Microsoft Technology Licensing, Llc Secure hardware for cross-device trusted applications
US9734092B2 (en) 2014-03-19 2017-08-15 Facebook, Inc. Secure support for I/O in software cryptoprocessor
US9684546B2 (en) * 2014-12-16 2017-06-20 Microsoft Technology Licensing, Llc Job scheduling and monitoring in a distributed computing environment
US9838367B2 (en) * 2015-06-26 2017-12-05 Intel Corporation Binding a trusted input session to a trusted output session
US10140457B2 (en) * 2015-07-31 2018-11-27 Intel Corporation Secure input/output device management
US10261748B2 (en) 2015-12-18 2019-04-16 Intel Corporation Technologies for protecting audio data with trusted I/O
FR3061323B1 (fr) * 2016-12-28 2019-12-20 Bull Sas Procede de stockage de donnees dans un systeme de stockage virtualise
US10587412B2 (en) 2017-11-07 2020-03-10 International Business Machines Corporation Virtual machine structure
US10970390B2 (en) * 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels
IL258368B2 (en) * 2018-03-26 2024-04-01 Kazuar Advanced Tech Ltd Secure computer system
KR102325428B1 (ko) * 2019-12-09 2021-11-12 한국전자기술연구원 가상 하드웨어를 이용한 i/o 포트 에뮬레이팅 시스템 및 방법
US11829493B2 (en) * 2020-10-27 2023-11-28 Dell Products L.P. Device access control system
US11537705B2 (en) * 2020-10-27 2022-12-27 Dell Products L.P. Device access control system
CN112506818B (zh) * 2020-12-08 2022-05-31 中国电子科技集团公司第三十研究所 一种基于软件模拟的usb硬件虚拟化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248526A1 (en) * 2005-04-28 2006-11-02 Arad Rostampour Providing virtual device access via firmware
US20070288228A1 (en) * 2006-06-08 2007-12-13 Microsoft Corporation Partial virtualization on computing device
CN101154130A (zh) * 2006-09-30 2008-04-02 联想(北京)有限公司 一种虚拟机系统及其电源管理方法
WO2010057065A2 (en) * 2008-11-14 2010-05-20 Intel Corporation Method and apparatus to provide secure application execution

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5062042A (en) 1986-04-28 1991-10-29 Xerox Corporation System for managing data which is accessible by file address or disk address via a disk track map
US7260820B1 (en) 2001-04-26 2007-08-21 Vm Ware, Inc. Undefeatable transformation for virtual machine I/O operations
US6757778B1 (en) 2002-05-07 2004-06-29 Veritas Operating Corporation Storage management system
US7793287B2 (en) * 2003-10-01 2010-09-07 Hewlett-Packard Development Company, L.P. Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor
US7203808B2 (en) * 2004-03-19 2007-04-10 Intel Corporation Isolation and protection of disk areas controlled and for use by virtual machine manager in firmware
GB0425181D0 (en) 2004-11-15 2004-12-15 Unilever Plc Fabric treatment composition
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US7845005B2 (en) * 2006-02-07 2010-11-30 International Business Machines Corporation Method for preventing malicious software installation on an internet-connected computer
JP4410294B1 (ja) * 2008-12-25 2010-02-03 株式会社東芝 情報処理装置およびエミュレーション方法
US8949565B2 (en) * 2009-12-27 2015-02-03 Intel Corporation Virtual and hidden service partition and dynamic enhanced third party data store

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248526A1 (en) * 2005-04-28 2006-11-02 Arad Rostampour Providing virtual device access via firmware
US20070288228A1 (en) * 2006-06-08 2007-12-13 Microsoft Corporation Partial virtualization on computing device
CN101154130A (zh) * 2006-09-30 2008-04-02 联想(北京)有限公司 一种虚拟机系统及其电源管理方法
WO2010057065A2 (en) * 2008-11-14 2010-05-20 Intel Corporation Method and apparatus to provide secure application execution

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104769605B (zh) * 2012-11-30 2018-06-01 英特尔公司 用于图形处理单元的安全环境
CN104769605A (zh) * 2012-11-30 2015-07-08 英特尔公司 用于图形处理单元的安全环境
CN105074663A (zh) * 2013-03-12 2015-11-18 高通股份有限公司 按需选择性地启用虚拟机监测器的操作的方法和装置
US10310882B2 (en) 2013-03-12 2019-06-04 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
CN105074663B (zh) * 2013-03-12 2018-08-28 高通股份有限公司 按需选择性地启用虚拟机监测器的操作的方法和装置
CN104484284B (zh) * 2013-03-31 2017-11-21 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN104484284A (zh) * 2013-03-31 2015-04-01 英特尔公司 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN106062714B (zh) * 2014-03-27 2020-04-07 英特尔公司 虚拟通用i/o控制器
CN106062714A (zh) * 2014-03-27 2016-10-26 英特尔公司 虚拟通用i/o控制器
CN105094942B (zh) * 2014-04-23 2018-09-21 华为技术有限公司 Hsm会话管理方法、管理虚拟机和服务器
CN105094942A (zh) * 2014-04-23 2015-11-25 华为技术有限公司 Hsm会话管理方法、管理虚拟机和服务器
CN107430490A (zh) * 2015-03-05 2017-12-01 西部数据技术公司 处理用于封闭服务的数据存储命令
CN107430490B (zh) * 2015-03-05 2020-07-03 西部数据技术公司 处理用于封闭服务的数据存储命令
CN107533615A (zh) * 2015-03-25 2018-01-02 英特尔公司 用于利用安全飞地来强化数据加密的技术
CN107533615B (zh) * 2015-03-25 2021-05-18 英特尔公司 用于利用安全飞地来强化数据加密的技术
CN107667347A (zh) * 2015-06-26 2018-02-06 英特尔公司 用于虚拟化访问由融合式可管理性和安全引擎提供的安全服务的技术
CN107667347B (zh) * 2015-06-26 2021-07-09 英特尔公司 用于虚拟化访问由融合式可管理性和安全引擎提供的安全服务的技术
CN106897235A (zh) * 2015-11-30 2017-06-27 联发科技股份有限公司 分组缓冲器、相应的存储系统及多端口存储器控制器
CN110661869A (zh) * 2019-09-26 2020-01-07 苏州浪潮智能科技有限公司 一种节点上线方法、系统、装置、设备及计算机存储介质

Also Published As

Publication number Publication date
EP2397943A3 (en) 2013-01-02
WO2011162914A3 (en) 2012-04-05
WO2011162914A2 (en) 2011-12-29
JP5345652B2 (ja) 2013-11-20
KR20110139130A (ko) 2011-12-28
EP2397943B1 (en) 2016-03-23
CN102289386B (zh) 2015-04-08
JP2012009013A (ja) 2012-01-12
US20110314468A1 (en) 2011-12-22
EP2397943A2 (en) 2011-12-21
US8181176B2 (en) 2012-05-15
KR101331311B1 (ko) 2013-11-20

Similar Documents

Publication Publication Date Title
CN102289386A (zh) 通过部分虚拟化机器的统一存储设备
JP5042848B2 (ja) 仮想マシン・モニタの構成部分を特権化解除するためのシステム及び方法
CN102207886B (zh) 虚拟机快速仿真辅助
EP1939754B1 (en) Providing protected access to critical memory regions
CN101351773B (zh) 基于存储器访问数据结构执行直接高速缓存访问事务
CN1991808B (zh) 用于访客访问存储器映射的设备的方法和装置
KR101673435B1 (ko) 공동 설계 프로세서에서 격리된 실행 환경의 생성
CN101339518B (zh) 在分层虚拟化体系结构中插入虚拟化事件的装置和方法
JP4898155B2 (ja) ユーザ・モード・プロセスが特権実行モードで動作することを可能にする方法
CN104412232A (zh) 事务处理
CN104335177A (zh) 有选择地控制事务处理中的指令执行
CN101553784A (zh) 将可执行代码编译到较不可信的地址空间中
US8875114B2 (en) Employing identifiers provided by an operating system of a processing environment to optimize the processing environment
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
CN101351776A (zh) 用于管理存储器访问、与存储位置相关联的标识符
CN104350468A (zh) 非事务存储指令
CN104350474A (zh) 事务执行内的随机测试
US10824349B1 (en) Secured input/output resource protection
JP7003470B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP6920286B2 (ja) 例外処理
US11144329B2 (en) Processor microcode with embedded jump table
EP4372551A1 (en) Virtual machine management method and related system, and storage medium
JP7369720B2 (ja) アクションをトリガするための装置及び方法
Dibble et al. Programming embedded systems: interacting with the embedded platform
JP5468490B2 (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