CN102077188A - 用于虚拟化操作系统的直接存储器访问过滤器 - Google Patents

用于虚拟化操作系统的直接存储器访问过滤器 Download PDF

Info

Publication number
CN102077188A
CN102077188A CN2009801248694A CN200980124869A CN102077188A CN 102077188 A CN102077188 A CN 102077188A CN 2009801248694 A CN2009801248694 A CN 2009801248694A CN 200980124869 A CN200980124869 A CN 200980124869A CN 102077188 A CN102077188 A CN 102077188A
Authority
CN
China
Prior art keywords
guest
knowing
virtual
physical
supervisory routine
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
CN2009801248694A
Other languages
English (en)
Other versions
CN102077188B (zh
Inventor
J·奥辛斯
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft 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
Priority claimed from US12/147,199 external-priority patent/US8230155B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102077188A publication Critical patent/CN102077188A/zh
Application granted granted Critical
Publication of CN102077188B publication Critical patent/CN102077188B/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
    • 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
    • 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
    • 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/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

所描述的技术通过在其他非虚拟化知晓的来宾操作系统中执行虚拟化知晓的代码来提高在管理程序上执行的工作负荷的运行时性能。在一种实现中,虚拟化知晓的代码允许工作负荷直接访问物理硬件设备,同时允许过量使用被分配给工作负荷的系统存储器。在一种实现中,DMA过滤器驱动器被插入到I/O驱动器堆栈,以保证在传输开始之前DMA传输的目标来宾物理存储器是常驻的。DMA过滤器驱动器可以利用高速缓存来跟踪存储器的哪些页是常驻的。高速缓存还可以指示存储器的哪些页由一个或多个传输使用,这使得管理程序能够避免在传输过程中挪用存储器页。

Description

用于虚拟化操作系统的直接存储器访问过滤器
背景
计算机产业倾向于越来越多的硬件级虚拟化。在这些环境中,操作系统运行在虚拟机监视器或管理程序之上,其中与计算机硬件的交互由虚拟化层来仲裁。这允许另外称为来宾操作系统或来宾OS的多个虚拟化操作系统运行在单个计算机上,使得可能在相同及其上运行多个工作负荷,且在它们之间具有强的隔离。这对与IT部门或者要求运行多个工作负荷或多个服务器应用程序的任何操作来说尤其有益。然而,每当所隔离的操作系统与计算机硬件交互以使得虚拟化层必须介入来维护隔离时,虚拟化层引入大的性能惩罚。为解决此性能惩罚,传统的方法通过允许来宾操作系统直接控制硬件设备来减少了虚拟化层必须介入的交互的数量。然而,准许来宾操作系统直接控制这些硬件设备总是要求准许来宾操作系统对被分配给该来宾操作系统的所有系统存储器的自由且独占的控制。通过向来宾操作系统准许独占存储器访问,丧失了虚拟化的许多益处,这些益处包括状态封装、迁移和检查点。
概述
此文献描述通过允许来宾OS访问物理硬件设备以执行直接存储器存取(DMA)传输,同时允许过量使用(overcommit)被分配给来宾OS的系统存储器来提高在管理程序上执行的来宾操作系统(来宾OS)的运行时性能的技术。在一种实现中,虚拟化知晓的DMA过滤器驱动器被插入到非虚拟化知晓的操作系统的I/O驱动器堆栈,从而得到受启发或半虚拟化OS。响应于应用程序对利用硬件设备进行DMA传输的请求,DMA过滤器驱动器可以延迟所请求的传输的开始,直到知晓该传输的目标来宾物理存储器被提交(commit)。在一种实现中,过滤器驱动器利用高速缓存来跟踪来宾物理存储器的哪些页被提交而不调用管理程序。在一种实现中,如果过滤器驱动器从高速缓存得知目标来宾物理存储器页被提交,那么,过滤器驱动器允许所请求的传输立即开始。然而,如果过滤器驱动器从高速缓存得知目标来宾物理存储器页中的至少之一未被提交,那么,过滤器驱动器可以请求管理程序支持所有未提交的目标来宾物理存储器页。在接收到所有目标来宾物理存储器页都被提交的指示之后,DMA过滤器驱动器可以允许所请求的传输开始。
在一种实现中,高速缓存另外包括与来宾物理存储器的每一页相关联的引用计数器。在一种实现中,在DMA传输开始之前,过滤器驱动器增大与在传输期间将潜在地被访问的来宾物理存储器的每一页相关联的引用计数器。如果来宾物理存储器页的引用计数器包括正整数,则管理程序知道挪用该页以供由另一工作负荷使用可能对供体工作负荷以及系统整体来说是灾难性的。然而,如果来宾物理存储器页的引用计数器为零,则管理程序可以安全地挪用页以供由另一工作负荷使用。在一种实现中,一旦传输已经完成,过滤器驱动器就可减小与传输相关联的每一页的引用计数。
在一种实现中,来宾OS可能是不可信的,且不能对来自管理程序的请求作出响应会导致制裁来宾OS。在一种实现中,管理程序可以请求过滤器驱动器重置高速缓存的所有引用计数器。如果工作负荷不能及时地响应管理程序的请求,则管理程序可以终止该工作负荷。
内容的简要描述
参考附图描述详细描述。附图中,附图标记最左边的数字标识其中该附图标记首次出现的图。在不同的图中使用相同的附图标记指示相似的或相同的项。
图1描绘被插入到来宾操作系统的I/O驱动器堆栈的说明性的虚拟化知晓的过滤器驱动器。
图2描绘接收来自应用程序的DMA传输请求并将该请求高速缓存在等待列表的说明性的虚拟化知晓的过滤器驱动器。
图3描绘用于在工作负荷之间共享系统存储器的说明性系统。
图4描绘说明性高速缓存,该高速缓存的每一元件都被映射到存储器的页。
图5描绘包括多个驱动器堆栈的来宾操作系统,每一驱动器堆栈都利用单个相同高速缓存。
图6描绘用于迁移工作负荷的说明性过程。
图7描绘用于将虚拟化知晓的软件插入到非虚拟化知晓的操作系统以使得非虚拟化知晓的操作系统当在虚拟机上被执行时展现与当在物理机上被执行时不同的行为的说明性过程。
图8描绘用于接收存储器地址范围、判断该范围所指向的存储器是否常驻、以及如果来宾物理存储器不常驻,则请求管理程序在传送存储器地址范围之前使其变得常驻的说明性过程。
图9描绘用于接收对转换存储器地址范围的请求、判断所请求的存储器是否常驻、以及如果所请求的存储器不常驻,则请求管理程序在将该请求传送给硬件访问层之前使其变得常驻的说明性过程。
图10描绘用于创建虚拟化知晓的过滤器驱动器的说明性处理功能性。
详细描述
下列的讨论瞄准通过准许来宾OS直接访问物理硬件设备同时允许来宾OS的存储器被过量使用来提高在管理程序上执行的工作负荷的运行时性能的技术。也被称为主机、父分区、特许分区、根分区或虚拟机管理器的管理程序是不在来宾OS内的可信监督代码主体。来宾OS还被称为虚拟化OS或非特许OS,它在由管理程序创建的虚拟机上执行。工作负荷可以包括在来宾OS上执行的应用程序;或者替代地,工作负荷可以是指整个软件堆栈,包括在虚拟机上执行的来宾OS。管理程序可以控制被包含在管理程序在其上执行的物理机内的物理系统存储器。这一真实的物理存储器可以被定义为“系统物理存储器”。当在虚拟机上执行的来宾OS实际上可访问虚拟机的虚拟化存储器时,该来宾OS可能认为它可访问真实的物理存储器。此“虚拟化”存储器被定义为“来宾物理存储器”。管理程序提供将来宾物理存储器映射到系统物理存储器的间接水平。另外,来宾OS可以包括向在来宾OS上执行的应用程序呈现虚拟地址空间的存储器虚拟化系统。此传统的虚拟化可以独立于管理程序将系统物理存储器虚拟化成来宾物理存储器。
在服务器环境中,在服务器上执行的典型工作负荷利用主机计算机的资源的15-20%。服务器计算机配置有此附加处理顶部空间,以便以最小停机时间或没有停机时间来有效地应对服务器的负载中的尖峰。而且,对于在单台机器上执行仅一个服务器应用程序来说,这是常见的,因为服务器应用程序常常消耗机器上所有可用资源,其另外不能与在相同的机器上的其他服务器应用程序平稳地运行。在单个服务器上执行多个来宾OS的一种潜在益处是能够执行多个服务器应用程序的能力,每个服务器应用程序都具有其自己的来宾OS,尽管在工作负荷之间共享系统资源。
虚拟化允许共享虚拟机系统中的系统资源,例如从一个工作负荷挪用存储器页以供由另一工作负荷使用。在一种实现中,管理程序可以挪用来自一个来宾OS的存储器页并将它们给予另一来宾OS,且同时地允许来宾OS用DMA传输瞄准系统物理存储器。允许来宾OS用DMA传输瞄准系统物理存储器可以改善总体系统性能。当一个来宾OS急需存储器而另一来宾OS具有额外的存储器时,将存储器从一个来宾OS移动到另一来宾OS是有益的,这允许管理程序将存储器有效地分配给每一来宾OS。先前,准许来宾OS直接访问系统物理存储器以得到DMA传输阻碍了管理程序在来宾OS之间安全地共享存储器的能力,这是因为从来宾OS下面移出供DMA传输在随后访问的存储器可能导致灾难性的系统崩溃。
在一种实现中,使得管理程序在来宾OS用DMA传输瞄准系统物理存储器时能够在来宾OS之间共享存储器允许在来宾OS用DMA传输瞄准系统物理存储器时进行状态封装。来宾OS的状态封装包括将来宾OS与到来宾OS在其上执行的物理硬件的任何永久连接隔离开来。因而,状态封装允许虚拟机被从一个主机传递到另一主机,因为来宾OS并不必定被绑定到该来宾OS在其上执行的硬件。从一个主机到另一主机的这种传递被称为迁移。迁移允许执行在第一机器上执行的第一管理程序将整个虚拟机传递到在第二机器上执行的第二管理程序,同时虚拟机继续运行且很少或不会损失数据。在一种实现中,允许迁移而同时允许来宾OS在DMA传输期间瞄准系统物理存储器。另外,状态封装允许创建快照(或检查点)。快照保存虚拟机的完整状态,从而允许用户无缝地且不会损失数据地回复到先前的状态。
传统上,管理程序允许在它们上运行的虚拟机内完成的大多数计算继续进而不会中断。然而,当在这些虚拟机上执行的来宾OS尝试与计算机的I/O系统(盘、网络、视频、等等)交互时,传统的管理程序必须截取此访问,因为这些操作系统并不实际上拥有这些设备。如果来宾OS被许可为直接地操作这些设备,则各个来宾OS将对这些设备发出冲突的命令,从而引起计算机崩溃。
为了防止崩溃,每当来宾OS尝试与I/O子系统交互时,传统的管理程序可以截取该调用并执行与来宾OS正试图完成的动作相当的一些动作。例如,如果来宾OS正试图规划盘控制器以从盘读取数据块,则传统的管理程序可能停止来宾OS,从含有虚拟盘的内容的文件读取数据块,将来自文件的数据存储到由来宾OS占用的存储器,并重新启动来宾OS。此过程有用,但是很慢。
允许虚拟化操作系统或者其他工作负荷直接控制机器内的具体设备的所有或部分,以使得可以发生对那些设备的访问而不会从管理程序中断,从而获得虚拟化OS的大的性能提升——这将是有益的。理想地,虚拟化OS可以直接控制硬件设备,而不会牺牲过量使用存储器的能力。在一个实例中,当多于系统物理存储器的来宾物理存储器已经被分配给工作负荷时,存储器被过量使用。
当管理程序创建环境以供来宾OS在其中运行时,其创建存储器的视图,该存储器的视图对工作负荷来说看起来就像其拥有连续范围的物理存储器——类似于来宾OS正运行在物理机上可用的那些。事实上,被指派给来宾OS的存储器几乎从不是毗邻的,且来宾OS用于寻址其存储器的地址几乎从不是该存储器的真实物理地址。管理程序创建和维护允许处理器或管理程序在进行中安排这些地址的间接表(通常被称为页表)。甚至可能的是,来宾OS察觉到其拥有的存储器中的一些并不存在,且暂时被借给另一来宾OS。当来宾OS直接控制真实物理I/O设备时,这产生了问题。来宾OS可以指导该设备从实际上并不存在的存储器读取或向其写入。它还可以指导该设备使用存储器的虚拟化地址而不是真实系统物理地址来从存储器读取或向其写入。通过I/O设备直接地从存储器读取或向其写入的这一过程被称为直接存储器访问或DMA。
针对此问题——常常被称为“I/O页出错”——的一种所建议的解决方案涉及允许来宾OS指导设备以执行DMA传输。一旦设备开始DMA传输,计算机的存储器控制器就截取该过程并指导管理程序重新分配其资源以使得系统物理存储器在设备正试图访问的地址处可用。然后,当存储器可用时,且当适当的内容已经被加载到存储器时,允许传输继续进行。此解决方案可以不涉及改变来宾OS内的软件。然而,此解决方案要求设备容忍自设备发起事务起到允许该事务继续进行的几乎不受限制时间量。此延时是不受限制的,因为管理程序在传输已经开始之后知晓该传输,且因此当硬件设备继续接收或传送数据时发生确保实际的物理存储器可用于该传输的任何处理(包括从交换文件读取)。在此时间期间,目标硬件设备必须将所有所传送的数据存储在其内部缓冲器中。此等待时间可以通过在设备中构建非常大的缓冲器来处理,由此显著地增加设备的成本。
替代地,如果硬件设备在传输开始之前中断在管理程序内运行的设备驱动器,则可以减少此等待时间。一旦被中断,管理程序内的设备驱动器就确保目标存储器被提交。然而,由于调用管理程序是昂贵的操作,因此此中断本身就是性能问题。
在一种实现中,软件组件被插入到来宾OS中,以便在I/O事务开始前在软件层挂起该事务,以保证该事务瞄准的来宾物理存储器得到实际的物理存储器支持。挂起事务以便保证目标来宾物理存储器被提交使得事务能发生而没有中断,这消除了I/O页出错方法所引起的任意等待时间。在事务开始前在软件层挂起事务可以允许受启发的来宾OS确保目标来宾物理存储器得到支持而无需与管理程序通信。然而,在一种实现中,来宾OS可以与管理程序通信,从而向管理程序告知目标来宾物理存储器页现在正被用于DMA传输。此通信可以利用来宾OS引用计数表,或与来宾OS进行更显式的通信。
图1描绘说明性虚拟机环境100,虚拟机环境100可以在计算机上执行。该环境包括直接地在计算机执行的管理程序102。在一种实现中,计算机可以是具有运行多个工作负荷所必需的资源的服务器计算机,每一工作负荷均在其自己的来宾OS实例上执行。在另一环境中,计算机可以是允许用户同时运行多个操作系统的个人计算机,例如台式计算机或膝上型计算机。在一种实现中,管理程序含有管理程序I/O子系统104。管理程序I/O子系统104可以控制计算机上的所有硬件资源,从而确保多个来宾操作系统不向实际的硬件设备发出冲突的命令。管理程序I/O子系统104可以包括用于分配和控制被分配给虚拟机的虚拟资源的来宾OS存储器管理组件106。
管理程序102、管理程序I/O子系统104和来宾OS存储器管理组件106可以共同创建来宾操作系统108或来宾OS 108在其上执行的虚拟机。在一种实现中,来宾OS 108可以是受启发的,这意味着它知晓的其是正运行在虚拟机之上或运行在物理机之上。当在与物理机不同的虚拟机上执行时,基于关于虚拟化资源和物理资源做出的不同假设,受启发的来宾OS可以不同地利用资源。另外,受启发的来宾OS可以与管理程序102交互以共享资源。在一种实现中,受启发的来宾OS可以从管理程序102协作地请求来宾物理存储器或将来宾物理存储器释放给管理程序102以供由另一来宾OS使用。
在另一实现中,来宾OS 108不知晓它正在虚拟机上执行。此“不受启发的”来宾OS 108还被称为非虚拟化知晓的或非协作来宾OS 108,它可以在虚拟机上表现出比受启发的但其他方面相同的来宾OS更差的性能。不受启发的来宾OS 108可以在虚拟机上与在物理机上所进行地完全相同地操作。
许多操作系统提供用于设备驱动器通常使用的直接存储器访问的软件抽象。此抽象涉及允许设备驱动器呈现物理地址列表(通常以存储器描述符列表或MDL的形式)并在返回中接收设备逻辑地址列表(通常以散布/聚集列表的形式)的若干编程接口和对象。
物理地址可以是由管理程序用于读或写真实物理存储器的系统物理地址。替代地,物理地址可以对来宾OS 108表现为真实地址,但是实际上是被称为来宾物理地址的虚拟化地址。另一方面,设备逻辑地址是由硬件设备用于读或写物理存储器的地址。一旦从接口返回设备逻辑地址的散布/聚集列表,设备驱动器就可以规划其硬件以实际地实施所关联的读和写。
许多操作系统通过此DMA抽象来允许插件组件以扩展DMA功能性。在一种实现中,DMA过滤器114可以将其自己插入一过程中,当设备驱动器112需要将物理地址转换为设备逻辑地址时,藉由该过程设备驱动器112检索指向其调用的函数的指针。在另一种环境中,虚拟化知晓的硬件抽象层(HAL)120可以被插入到非虚拟化知晓的来宾OS 108中,从而引起来宾OS 108展示受启发的行为。另外或替代地,虚拟化知晓的模块可以被插入到非虚拟化知晓的来宾OS的执行中或替代非虚拟化知晓的来宾OS的任何组件。通过这些方式,虚拟化知晓的组件可以被插入到非虚拟化知晓的来宾OS 108中,从而引起非虚拟化知晓的来宾OS 108展示类似于受启发的或虚拟化的来宾OS的行为。
在一种实现中,设备驱动器112可以发起DMA传输以将数据写到硬件设备或从硬件设备读取数据。设备驱动器112可以将请求122发送到即插即用管理器118,请求122包括在来宾OS的来宾物理地址中定义的存储器范围。在一种实现中,即插即用管理器118可以向硬件访问层120发送对指向用于将存储器范围从来宾物理地址转换到总线相对地址的函数的指针的请求124。一旦接收到请求124,虚拟化知晓的硬件访问层120就可以与管理程序102通信,从而确保与DMA传输关联的存储器在允许传输开始之前被提交。
在另一种实现中,DMA过滤器114被插入到I/O驱动器堆栈110中。在一种实现中,DMA过滤器114可以从即插即用管理器118接收用于在I/O驱动器堆栈110内通信的I/O请求分组(IRP)。IRP中的一个可以是来自设备驱动器112的对指向用于将来宾物理存储器地址范围转换为总线相对地址范围的函数的指针的请求126。在一种实现中,I/O请求包被发送以查找I/O驱动器堆栈110中的最好组件以提供用于DMA服务的接口。如果I/O驱动器堆栈110中没有驱动器作出响应,那么HAL 120可以提供所请求的接口。一旦接收到请求126,虚拟化知晓的DMA过滤器114就可以与管理程序102通信,从而确保与DMA传输相关联的存储器在允许传输开始之前被提交。消息128被返回到即插即用管理器118以允许传输开始。
图2描绘在计算机上执行的说明性虚拟机环境200。在一种实现中,DMA过滤器114挂起所请求的DMA传输以便确保提交事务所需的存储器。所请求的DMA传输包括存储器地址范围。虽然这些存储器地址对来宾OS108看来似乎为物理存储器地址,且因此立即可用于DMA传输,但是这些地址可以实际上是来宾物理存储器地址,一种虚拟存储器地址的形式,其不映射到实际的物理存储器地址。另外,这些来宾物理存储器地址中的一些当前不可以被映射到真实物理存储器地址,因为管理程序102已经挪用实际的存储器物理页中的一些来供另一个来宾OS使用。在DMA事务可以在来宾OS 108安全地发生而管理程序102不会介入之前,必须提交事务引用的存储器以供用在事务的生命期中,且由事务引用的存储器地址在来宾物理地址空间和系统物理地址空间之间必须具有有效转换。在一种实现中,DMA过滤器114可与来宾OS存储器管理组件106通信以确保由事务引用的所有存储器页被提交。在一种实现中,DMA过滤器114可以与来宾OS存储器管理组件106通信以请求来宾OS存储器管理组件106提交由事务引用的所有的未被提交的存储器页。
在一种实现中,事务在应用程序202开始(举例来说,从盘读取)并被往下传递到将处理该事务的硬件设备的设备驱动器112。然后,设备驱动器112使用其DMA界面来请求由事务引用的目的存储器的设备逻辑地址。DMA过滤器114可以截取对设备逻辑地址的此请求并将事务放到等待列表204上,直到所引用的存储器已经被提交且存在有效转换。然后,DMA过滤器114可以将事务连同所得到的逻辑地址集呈现回设备驱动器112,设备驱动器112然后可以安排硬件通过DMA进行数据传输。
图3描绘共享在计算机上执行的环境300的说明性来宾物理存储器。在一种实现中,工作负荷302、工作负荷304和工作负荷306全部在管理程序上执行,且每一个工作负荷可以被分配到系统物理存储器308的一部分。工作负荷302-306可以执行数据库、电子邮件服务器、web服务器或OLAP服务器连同其他服务器任务。工作负荷302可以使用来宾物理存储器310,来宾物理存储器310可以被映射到系统物理存储器308。工作负荷304和306类似地可以使用来宾物理存储器312和314,来宾物理存储器312和314的每一个都被映射到系统物理存储器308。工作负荷302的来宾物理存储器310的每一个页可以被映射到系统物理存储器308中的存储器页。然而,对于管理程序而言从工作负荷302窃走来宾物理存储器页并将其供应为工作负荷304的页是可能的。由此,两个工作负荷可能指向系统物理存储器的相同部分,如由重叠316所指示的,或一个工作负荷可能执行,如同其拥有实际上已经被挪用以供另一个工作负荷使用的系统物理存储器页那样。在这种情况中,工作负荷302和304正在其上执行的来宾操作系统被过量使用,因为管理程序的来宾OS存储器管理组件已经将比在系统物理存储器308中实际上可用的来宾物理存储器更多的来宾物理存储器分配到工作负荷。如果工作负荷302尝试访问重叠316中包含的来宾物理存储器,那么管理程序可能介入并向工作负荷302供应新的系统物理存储器页,且任选地从交换文件将值复制到新的存储器页。
图4描绘说明性驱动器堆栈400。在一种实现中,确保存储器的目的页被提交的过程涉及将消息发送到来宾OS存储器管理器106和接收响应消息。在另一种实现,通过引入用于减少或消除DMA过滤器114必须与管理程序102通信的次数的存储器状态高速缓存402,可以增大响应性。存储器状态高速缓存402可以存储指示系统物理存储器308的哪个存储器页被提交的数组。存储器状态高速缓存402可以被存储在DMA过滤器114中,使得其可以在来宾OS 108的上下文中被完全访问,而不用调用管理程序102。对于存储器的每一页,存储器状态高速缓存402可以包括4位。类似地设想其他数目个位。在一种实施例中,一位可以用于指示页是否被提交,而剩余的3位可以计数与该存储器页相关联的活动DMA传输的数量。替代地或另外,当计数已经溢出存储器状态高速缓存的计数容量时,存储器状态高速缓存402可以包括存储与存储器页相关联的活动DMA传输的数量的页散列表。此系统允许存储器状态高速缓存402跟踪高达7个并发DMA事务。举例来说,存储器状态高速缓存条目404指示相关联的存储器页涉及7个DMA事务,且页当前是常驻的。存储器状态高速缓存条目406指示相关联的存储器页不涉及任何DMA事务,且当前不被提交到真实的物理存储器页。通过不被提交,尝试写到与状态高速缓存条目406相关联的存储器页或从其读取的任何DMA事务将导致数据的讹误或崩溃,因为该值可以被写到被指派到另一工作负荷的存储器,或被写到根本不存在的存储器。
跟踪与存储器页相关联的DMA传输的数量的目的之一是确保管理程序102将不从当前被DMA事务使用的来宾OS 108窃取页。因此,存储器范围中所包含的当前被DMA事务使用的所有页至少将保持被提交,直到所有相关联的DMA事务被完成。因此,存储器状态高速缓存条目408指示错误——三个DMA处理正在相关联的存储器页上操作,但是页当前没有被提交。因此,在管理程序102从一个工作负荷窃取存储器页并将其给予另一个工作负荷之前,其可以首先确定嵌入来宾OS 108的虚拟化知晓的组件是否知晓存储器页当前在使用。
如果DMA事务被发起,且与事务相关联的所有存储器页被提交,那么DMA过滤器114可以增加与关联于DMA事务的存储器页相关联的存储器状态高速缓存条目的引用计数或引脚计数。然后,DMA过滤器114可以立即允许事务开始。
存储器状态高速缓存条目410指示不存在使用相关联的存储器页的活动DMA事务,但是页当前被提交。如果DMA传输请求使用类似于与存储器状态高速缓存条目410相关联的那些页的页,那么DMA传输将被允许立即继续直接地访问底层硬件。
在一种实现中,管理程序可以请求DMA过滤器114重置存储器状态高速缓存402的所有引用计数器。另外或替代地,如果工作负荷未能以及时的方式响应管理程序的请求,那么管理程序可以制裁工作负荷。在一种实现中,制裁可以终止工作负荷。另外或替代地,制裁可以从工作负荷移除对硬件设备的控制。
在一种实现中,存储器状态高速缓存402不存在。在这种情况中,在管理程序回收任何页之前,设备驱动器必须被暂停且所有事务必须被撤退。此策略在一些情况下是优选的,因为其大大地降低了实现高速缓存所需的存储器。
当大多数或所有的来宾存储器保持被提交时,最优的性能出现,且大多数DMA事务在不需要与来宾OS存储器管理器通信的情况下开始。
图5描绘说明性的多个驱动器堆栈500。在一种实现中,第一驱动器堆栈110、第二驱动器堆栈504和第三驱动器堆栈506全部共享相同的存储器状态高速缓存502。多个驱动器堆栈可以实例化DMA过滤器114的不同实例;然而,所有虚拟化知晓的DMA过滤器正管理相同的来宾物理存储器。因此,所有DMA过滤器在相同的存储器状态高速缓存上操作,以便减少维持高速缓存所需的开销,并使DMA过滤器114和管理程序之间的通信最小化。例如,如果驱动器堆栈506发起涉及来宾物理地址0x0012384C的DMA传输,但是不与DMA过滤器的其他实例共享存储器状态高速缓存502,那么每当管理程序希望从来宾OS挪用来宾物理存储器页时,将不得不检查每一个存储器状态高速缓存以确保DMA传输中活跃地涉及的存储器页不被挪用。
图6描绘说明性迁移环境600。根据此实现,状态封装可以允许在计算机602上运行的管理程序604被迁移到在计算机606上运行的管理程序608。在一种实施例中,状态封装可以由管理程序608和来宾OS存储器管理组件106来启用,而同时允许在DMA传输期间的硬件设备直接存储器存取。在一种环境中,工作负荷610至工作负荷616在管理程序604上执行。工作负荷612可能需要通过网络622来迁移到管理程序608。通过将存储器页从管理程序604复制到管理程序608来执行迁移,同时迁移的工作负荷612继续起作用。迁移以使工作负荷612中的每一页无效为开始,以使得由工作负荷612作出的任何后继存储器访问将陷入管理程序604中。然后,管理程序604开始将存储器的所有有效页传输到管理程序608。在此传输期间,工作负荷612继续在管理程序604上执行。在传输期间被访问的存储器页被标记为脏(dirty)并留在管理程序604上,而不被标记为脏的(指示它们尚未被触及的)存储器页继续被传递到管理程序608。最终,所有的干净页已经被传输,且仅仅保留已经被工作负荷612触及的脏页。在这一点上,工作负荷612可以被暂停以允许将剩余的脏页传递到管理程序608。一旦所有的页已经被传输到管理程序608,通常在工作负荷612被管理程序604暂停之后不超过300毫秒,工作负荷612就在管理程序608上被启动。通常,迁移发生而不会丢弃连接。
图7描绘用于通过虚拟化知晓的软件组件增强非虚拟化知晓的操作系统的说明性过程。操作702表示通过安装在I/O驱动器堆栈110中的虚拟化知晓的软件组件来确定系统是否正在虚拟机上执行。在一种实施例中,虚拟化知晓的软件组件包括DMA过滤器114。另外地或替代地,虚拟化知晓的软件组件可以包括HAL 120。其间,操作704表示当在虚拟机上执行时虚拟化知晓的软件组件与管理程序102通信。
图8描绘用于以软件方式延迟DMA传输的开始直到知晓与传输相关联的来宾物理存储器得到系统物理存储器的支持的说明性过程。操作802表示接收来宾物理存储器地址范围。在一种实现中,来宾物理存储器地址范围包括DMA传输的源或目的地。所接收的来宾物理存储器地址可以稍后被转换成设备逻辑地址或系统物理地址,这允许在传输中使用的硬件设备本地地寻址物理存储器。其间,操作804表示确定由所接收的来宾物理存储器地址指向的系统物理存储器中的任一个是否不被支持——另外称为非常驻的。如果没有地址是非常驻的,那么意味着所有的请求地址是常驻的,那么传送所接收的来宾物理存储器地址范围。在一种实施例中,来宾物理地址范围被传送给将来宾物理存储器地址转换成设备逻辑地址或系统物理地址的组件。其间,操作806表示肯定地确定存在在所接收的来宾物理存储器地址范围中引用的存储器的至少一个不被支持或非常驻的部分。其间,操作808表示请求管理程序102支持所接收的来宾物理存储器地址的非常驻部分或使其变为常驻。其间,操作810表示从管理程序102接收由所接收的来宾物理存储器地址指向的所有非常驻部分已经得到支持的指示。其间,操作812表示传送来宾物理存储器地址范围。
图9描绘用于以软件方式延迟DMA传输的开始直到知晓与传输相关联的来宾物理存储器得到真实的系统物理存储器的支持的说明性过程。操作902表示接收对将来宾物理存储器地址范围转换为总线相对存储器地址的请求。其间,操作904表示确定所接收的来宾物理存储器地址中的任一个是否不被真实的物理存储器支持。如果所有的来宾物理存储器地址都得到支持,那么所接收的请求被传送到HAL 120。其间,操作906表示肯定地确定何时存在所接收的请求中引用的来宾物理存储器的至少一个不被支持或非常驻的部分。其间,操作908表示向设备驱动器112传送指示传输不可以同步地发生的消息。在一种实施例中,所接收的请求被存储在等待列表204中。其间,操作910表示向管理程序102向管理程序102传送一消息,该消息请求管理程序102支持在所接收的请求中包含的来宾物理存储器的非常驻部分或使其变为常驻的。其间,操作912表示从管理程序102接收由在所接收的请求中包含的来宾物理地址指向的所有非常驻部分已经得到真实的物理存储器的支持的消息。其间,操作914表示将向设备驱动器传送该请求。
图10阐释示例性用于创建虚拟化知晓的DMA过滤器驱动器或DMA过滤器114的示例性处理功能1000。在一个实例中,过滤器驱动器包括被插入到现有驱动器堆栈以执行一些具体功能而不影响现有驱动器堆栈的正常工作的驱动器。处理功能性1000可以被配置为能够实现软悬挂分析和检测系统的任何合适的计算设备或服务器。在一种示例性配置中,处理功能性1000包括至少一个处理单元1002和存储器1004。处理单元1002可以在硬件、软件、固件或其组合中被适当地实现。处理单元1002的软件或固件实现可以包括以任何合适的编程语言编写的用以执行所描述的各种功能的计算机可执行指令或机器可执行指令。
存储器1004可以存储在处理器1002上可加载和可执行的指令的程序以及在执行这些程序期间生成的数据。取决于计算设备的配置和类型,存储器1004可以是易失性的(例如RAM)和/或非易失性的(例如ROM、闪速存储器等等)。计算设备或服务器还可以包括附加的可移动存储1006和/或不可移动存储1008,包括但不限于,磁存储、光盘、和/或带存储。磁盘驱动器和它们的关联计算机可读介质可为计算设备提供对计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。
存储器1004、可移动存储1006和不可移动存储1008全部都是计算机存储介质的示例。计算机存储介质包括以用于存储信息例如计算机可读指令、数据结构、程序模块或者其他数据的任何方法或技术实现的易失性介质和非易失性介质、可移动介质和不可移动介质。存储器1004、可移动存储1006和不可移动存储1008全部都是计算机存储介质的示例。可以存在的附加类型的计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪速存储器或者其他存储器技术、CD-ROM、数字多用盘(DVD)或者其他光学存储、磁带盒、磁带、磁盘存储或者其他磁存储设备、或可以用来存储所期望的信息且可以由服务器或者其他计算设备访问的任何其他介质。
更详细地转到存储器1004的内容,存储器1004可以包括操作系统1010以及用于实现软悬挂分析和检测程序100的一个或多个应用程序或服务。在一种实现中,存储器1004包括数据管理模块1012和自动模块1014。数据管理模块1012包括但不限于标识和跟踪会话。自动模块1014存储和管理信息,例如会话标识符、会话状态、用户的计算设备等等,且可以与一个或多个本地和/或远程数据库或服务通信。
存储器1004进一步包括用户接口模块1016和会话模块1018。用户接口模块1016向用户呈现用于登录或注销、登录或注销回话等等的用户接口。会话模块1018包括但不限于,跟踪计算设备的状态、登录或注销、连接或断开等等。会话模块1018执行连接、断开、搜索功能,例如执行搜索以标识被登录、注销的客户端设备、客户端设备的状态、用户的状态等等。
处理功能性1000还可以含有诸通信连接1016,这些通信连接1016允许处理功能性1000与所存储的数据库、另一计算设备或服务器、用户终端和/或网络上的其他设备通信。诸通信连接1016为通信介质的示例。通信介质通常包含计算机可读指令、数据结构和程序模块。作为例子而非限制,通信介质包括例如有线网络或直接有线连接等有线介质,以及例如声学、RF、红外等无线介质和其他无线介质。在此所使用的术语计算机可读介质包括存储介质和通信介质两者。
处理功能性1000还可以包括诸输入设备1018和诸输出设备1020,输入设备1018例如键盘、鼠标、笔、音频输入设备、触摸输入设备等等,输出设备1020例如显示器、扬声器、打印机等等。处理功能性1000可以包括主存在处理功能性1000上的数据库,其包括但不限于,会话数据、网络地址、计算设备的列表等等。所有这些设备在本领域是众所周知的且在此处不需要详细地讨论。
以上所描述的本主题可以在硬件或软件中或在硬件和软件两者中实现。尽管已经以对于结构特征和/或方法论动作来说专用的语言描述了本主题,但是应理解,在所附权利要求中界定的本主题并不必定限于上述具体特征或动作。相反,具体的特征和动作是作为实现所要求保护的本主题的示例性形式而公开的。例如,方法动作并不需要以在此所描述的次序或组合来执行,且可以以一个或多个动作的任何组合来执行。
结论
尽管已经用对于结构特征和/或方法动作来说专用的语言描述了示例性系统和方法,但是应理解,在所附权利要求中界定的本主题并不必定限于所描述的具体特征或动作。相反,具体特征和动作是作为实现所要求保护的方法、设备、系统等等的示例性形式而公开的。

Claims (20)

1.一种方法,所述方法包括:
用安装在非虚拟化知晓的操作系统的驱动器堆栈中的虚拟化知晓的软件组件确定所述非虚拟化知晓的操作系统是否在由管理程序主存的虚拟机上执行;以及
当所述非虚拟化知晓的操作系统在由所述管理程序主存的所述虚拟机上执行时,所述虚拟化知晓的软件组件与所述管理程序进行通信。
2.如权利要求1所述的方法,其特征在于,所述虚拟化知晓的软件组件包括从所述驱动器堆栈接收请求的过滤器驱动器。
3.如权利要求1所述的方法,其特征在于,所述驱动器堆栈包括直接存储器访问驱动器。
4.如权利要求1所述的方法,其特征在于,所述虚拟化知晓的软件组件包括将操作系统对物理硬件组件的访问抽象化的硬件抽象层。
5.一种计算机系统,包括:
一个或多个处理器;
存储器,所述存储器可由所述一个或多个处理器访问;以及
虚拟化知晓的模块,所述虚拟化知晓的模块被存储在所述存储器中,且能在所述一个或多个处理器上执行,以便:
接收来宾物理存储器地址范围;
确定所述来宾物理存储器地址范围的所述来宾物理存储器地址中的至少之一是否指向来宾物理存储器的非常驻部分;
响应于确定所述来宾物理存储器地址的至少之一指向来宾物理存储器的非常驻部分:
向管理程序传送对提交来宾物理存储器的所述非常驻部分的请求,以及
从所述管理程序接收指示来宾物理存储器的所述非常驻部分已经被提交的消息;
传送所述来宾物理存储器地址范围。
6.如权利要求5所述的计算机系统,其特征在于,所述虚拟化知晓的模块能进一步执行,以便:
接收与所述来宾物理存储器地址范围相关联的存储器传输完成的指示。
7.如权利要求5所述的计算机系统,其特征在于,所述虚拟化知晓的模块包括数据结构,所述数据结构包括用于来宾物理存储器的每一部分的指示符,每一指示符包括对来宾物理存储器的部分是常驻还是非常驻的表示。
8.如权利要求7所述的计算机系统,其特征在于,每一指示符进一步包括进行中的存储器传输的引用计数,所述进行中的存储器传输瞄准包括与所述指示符相关联的来宾物理存储器的所述部分在内的来宾物理存储器地址范围。
9.如权利要求5所述的计算机系统,其特征在于,所述来宾物理存储器地址范围包括异步直接存储器访问传输的目标。
10.如权利要求5所述的计算机系统,其特征在于,所述虚拟化知晓的模块是硬件抽象层。
11.如权利要求8所述的计算机系统,其特征在于,在所述管理程序的所述请求时,所述虚拟化知晓的模块更新与来宾物理存储器的每一部分相关联的所述引用计数。
12.如权利要求7所述的计算机系统,其特征在于,所述虚拟化知晓的模块的多个实例化访问包括用于来宾物理存储器的每一部分的指示符在内的所述相同的数据结构。
13.如权利要求11所述的计算机系统,其特征在于,所述管理程序被配置成当所述虚拟化知晓的模块不能更新与来宾物理存储器的每一部分相关联的所述引用计数时制裁与所述虚拟化知晓的模块相关联的虚拟机。
14.如权利要求所述的计算机系统13,其特征在于,所述制裁包括终止所述虚拟机。
15.如权利要求5所述的计算机系统,其特征在于,所述来宾物理存储器地址范围与用于传达设备驱动器的请求的输入/输出请求分组相关联。
16.如权利要求5所述的计算机系统,其特征在于,所述虚拟化知晓的模块被配置成被插入到在由所述管理程序主存的工作负荷中执行的非虚拟化知晓的来宾操作系统,且其中所述管理程序使得所述非虚拟化知晓的来宾操作系统能够直接控制所述计算机系统的硬件设备。
17.如权利要求所述的计算机系统16,其特征在于,当所述工作负荷用对所述系统物理存储器的直接访问来执行DMA传输时,所述工作负荷被迁移到第二计算机系统。
18.一个或多个计算机可读存储介质,所述计算机可读存储介质包括被配置成被安装在非虚拟化知晓的来宾操作系统上的虚拟化知晓的过滤器驱动器,所述非虚拟化知晓的来宾操作由虚拟化主计算机机的资源以供由所述非虚拟化知晓的来宾操作系统使用的系统管理程序来主存,所述虚拟化知晓的过滤器驱动器被配置成当一个或多个处理器上执行时执行包括下列动作:
从设备驱动器接收对将来宾物理存储器地址范围转换成总线相对存储器地址范围的请求;
确定由所述来宾物理存储器地址范围指向的存储器的部分是否不是常驻在所述非虚拟化知晓的来宾操作系统中;
当存在由所述来宾物理存储器地址范围指向的所述存储器的非常驻部分时:
向所述设备驱动器传送指示所请求的传输将不同步地发生的消息,
向所述管理程序传送请求将由所述来宾物理存储器地址范围指向的所述存储器的所有非常驻部分变成常驻的消息,以及
从所述管理程序接收指示所述存储器的所述非常驻部分已经变为常驻的消息;以及
向所述硬件访问层传送对将所述来宾物理存储器地址范围转换成总线相对存储器地址范围的所述请求。
19.如权利要求18所述的一个或多个计算机可读存储介质,其特征在于,所述管理程序准许所述来宾操作系统直接访问主计算机的硬件设备,同时所述管理程序允许过量使用主计算机系统的系统物理存储器。
20.如权利要求19所述的一个或多个计算机可读存储介质,其特征在于,所述管理程序创建所述虚拟机的整体状态的快照,所述快照是在所述虚拟机执行时被部分地创建的。
CN200980124869.4A 2008-06-26 2009-06-05 用于虚拟化操作系统的直接存储器访问过滤器 Active CN102077188B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/147,199 US8230155B2 (en) 2008-06-26 2008-06-26 Direct memory access filter for virtualized operating systems
US12/147,199 2008-06-26
US12/242,761 US8151032B2 (en) 2008-06-26 2008-09-30 Direct memory access filter for virtualized operating systems
US12/242,761 2008-09-30
PCT/US2009/046462 WO2009158178A2 (en) 2008-06-26 2009-06-05 Direct memory access filter for virtualized operating systems

Publications (2)

Publication Number Publication Date
CN102077188A true CN102077188A (zh) 2011-05-25
CN102077188B CN102077188B (zh) 2014-04-09

Family

ID=41445198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980124869.4A Active CN102077188B (zh) 2008-06-26 2009-06-05 用于虚拟化操作系统的直接存储器访问过滤器

Country Status (5)

Country Link
US (1) US8151032B2 (zh)
EP (1) EP2313832B1 (zh)
JP (2) JP5450620B2 (zh)
CN (1) CN102077188B (zh)
WO (1) WO2009158178A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137056A (zh) * 2011-10-28 2014-11-05 英特尔公司 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持
US9367478B2 (en) 2014-01-17 2016-06-14 International Business Machines Corporation Controlling direct memory access page mappings
CN105830020A (zh) * 2013-12-20 2016-08-03 微软技术许可有限责任公司 存储器保留重新引导
CN109564514A (zh) * 2016-06-30 2019-04-02 亚马逊科技公司 部分卸载的虚拟化管理器中的存储器分配技术
CN109564523A (zh) * 2016-06-30 2019-04-02 亚马逊科技公司 使用机会性管理程序降低性能可变性
CN114397999A (zh) * 2021-11-25 2022-04-26 北京智芯微电子科技有限公司 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8230155B2 (en) * 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8719823B2 (en) * 2009-03-04 2014-05-06 Vmware, Inc. Managing latency introduced by virtualization
US8726269B2 (en) * 2009-04-14 2014-05-13 Dell Products L.P. Method to enable application sharing on embedded hypervisors by installing only application context
US10177934B1 (en) 2009-09-04 2019-01-08 Amazon Technologies, Inc. Firmware updates inaccessible to guests
US8887144B1 (en) * 2009-09-04 2014-11-11 Amazon Technologies, Inc. Firmware updates during limited time period
US8971538B1 (en) 2009-09-08 2015-03-03 Amazon Technologies, Inc. Firmware validation from an external channel
US8959611B1 (en) 2009-09-09 2015-02-17 Amazon Technologies, Inc. Secure packet management for bare metal access
US8381264B1 (en) 2009-09-10 2013-02-19 Amazon Technologies, Inc. Managing hardware reboot and reset in shared environments
US20110153715A1 (en) * 2009-12-17 2011-06-23 Microsoft Corporation Lightweight service migration
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US8667191B2 (en) * 2010-01-15 2014-03-04 Kingston Technology Corporation Managing and indentifying multiple memory storage devices
US8453145B1 (en) * 2010-05-06 2013-05-28 Quest Software, Inc. Systems and methods for instant provisioning of virtual machine files
US9547562B1 (en) 2010-08-11 2017-01-17 Dell Software Inc. Boot restore system for rapidly restoring virtual machine backups
US8893306B2 (en) * 2010-08-31 2014-11-18 International Business Machines Corporation Resource management and security system
US8495750B2 (en) 2010-08-31 2013-07-23 International Business Machines Corporation Filesystem management and security system
US8694992B2 (en) 2010-12-16 2014-04-08 International Business Machines Corporation Traversing memory structures to parse guest operating system instrumentation information in a hypervisor
JP5573649B2 (ja) * 2010-12-17 2014-08-20 富士通株式会社 情報処理装置
US8578006B2 (en) * 2011-03-29 2013-11-05 Symantec Corporation Enabling selective policy driven propagation of configuration elements between and among a host and a plurality of guests
US9721089B2 (en) 2011-05-06 2017-08-01 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for efficient computer forensic analysis and data access control
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
US9311126B2 (en) * 2011-07-27 2016-04-12 Mcafee, Inc. System and method for virtual partition monitoring
CN102360369B (zh) * 2011-09-28 2014-08-13 中兴通讯股份有限公司 在用户空间文件系统上实现聚合写文件脏页的方法和装置
US9135046B1 (en) 2012-06-19 2015-09-15 Bromium, Inc. Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up
US9021476B1 (en) * 2012-06-19 2015-04-28 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor
US10140139B1 (en) 2012-06-19 2018-11-27 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor
KR20150105323A (ko) * 2013-01-08 2015-09-16 바이올린 메모리 인코포레이티드 데이터 스토리지 방법 및 시스템
JP6075226B2 (ja) 2013-06-26 2017-02-08 富士通株式会社 プログラム、仮想マシン管理方法および情報処理装置
US10229043B2 (en) * 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US9053068B2 (en) 2013-09-25 2015-06-09 Red Hat Israel, Ltd. RDMA-based state transfer in virtual machine live migration
US9436823B1 (en) * 2013-12-17 2016-09-06 Google Inc. System and method for detecting malicious code
KR101571810B1 (ko) 2013-12-30 2015-11-25 주식회사 시큐아이 복수의 가상 머신들을 포함하는 컴퓨팅 시스템
US9459900B2 (en) * 2014-01-13 2016-10-04 Red Hat Israel, Ltd. Hypervisor-based balloon page initialization
US10275269B1 (en) * 2016-05-27 2019-04-30 Bromium, Inc. Hypervisor to support nested virtualization
US11029986B2 (en) 2018-05-25 2021-06-08 Microsoft Technology Licensing, Llc Processor feature ID response for virtualization
US10833949B2 (en) * 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
US12106132B2 (en) 2018-11-20 2024-10-01 Amazon Technologies, Inc. Provider network service extensions
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11520530B2 (en) 2019-09-24 2022-12-06 Amazon Technologies, Inc. Peripheral device for configuring compute instances at client-selected servers
US11064017B2 (en) 2019-09-24 2021-07-13 Amazon Technologies, Inc. Peripheral device enabling virtualized computing service extensions
US11169870B2 (en) * 2020-01-15 2021-11-09 Vmware, Inc. Managing the migration of virtual machines in the presence of uncorrectable memory errors
US11569997B1 (en) 2020-03-09 2023-01-31 Amazon Technologies, Inc. Security mechanisms for data plane extensions of provider network services
US12050926B2 (en) * 2021-06-04 2024-07-30 VMware LLC Journal space reservations for virtual disks in a virtualized computing system
CN114201444B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3874603B2 (ja) * 2000-11-21 2007-01-31 株式会社日立製作所 計算機システムの共有メモリ構築方法
DE10328486B4 (de) * 2003-06-25 2007-03-01 Eisenmann Maschinenbau Gmbh & Co. Kg Hubvorrichtung
US7376949B2 (en) 2003-10-01 2008-05-20 Hewlett-Packard Development Company, L.P. Resource allocation and protection in a multi-virtual environment
US7558723B2 (en) 2003-12-12 2009-07-07 Microsoft Corporation Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US7421533B2 (en) 2004-04-19 2008-09-02 Intel Corporation Method to manage memory in a platform with virtual machines
US20050246453A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US20060070065A1 (en) 2004-09-29 2006-03-30 Zimmer Vincent J Memory support for heterogeneous virtual machine guests
US7882317B2 (en) * 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7451249B2 (en) 2005-03-21 2008-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for direct input and output in a virtual machine environment containing a guest operating system
US20070011444A1 (en) * 2005-06-09 2007-01-11 Grobman Steven L Method, apparatus and system for bundling virtualized and non-virtualized components in a single binary
US8001543B2 (en) 2005-10-08 2011-08-16 International Business Machines Corporation Direct-memory access between input/output device and physical memory within virtual machine environment
US7890669B2 (en) 2005-11-25 2011-02-15 Hitachi, Ltd. Computer system for sharing I/O device
US8042109B2 (en) 2006-03-21 2011-10-18 Intel Corporation Framework for domain-specific run-time environment acceleration using virtualization technology
US7613847B2 (en) 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US20080065854A1 (en) 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678575B2 (en) 2011-10-28 2020-06-09 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US9804870B2 (en) 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US9804871B2 (en) 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
CN104137056B (zh) * 2011-10-28 2018-10-23 英特尔公司 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持
CN104137056A (zh) * 2011-10-28 2014-11-05 英特尔公司 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持
CN105830020A (zh) * 2013-12-20 2016-08-03 微软技术许可有限责任公司 存储器保留重新引导
CN105830020B (zh) * 2013-12-20 2019-03-19 微软技术许可有限责任公司 存储器保留重新引导
US9367478B2 (en) 2014-01-17 2016-06-14 International Business Machines Corporation Controlling direct memory access page mappings
US9639478B2 (en) 2014-01-17 2017-05-02 International Business Machines Corporation Controlling direct memory access page mappings
CN109564514A (zh) * 2016-06-30 2019-04-02 亚马逊科技公司 部分卸载的虚拟化管理器中的存储器分配技术
CN109564523A (zh) * 2016-06-30 2019-04-02 亚马逊科技公司 使用机会性管理程序降低性能可变性
CN109564514B (zh) * 2016-06-30 2022-04-08 亚马逊科技公司 用于部分卸载的虚拟化管理器处的存储器分配的方法和系统
US11429414B2 (en) 2016-06-30 2022-08-30 Amazon Technologies, Inc. Virtual machine management using partially offloaded virtualization managers
CN109564523B (zh) * 2016-06-30 2023-10-31 亚马逊科技公司 使用机会性管理程序降低性能可变性
CN114397999A (zh) * 2021-11-25 2022-04-26 北京智芯微电子科技有限公司 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备
CN114397999B (zh) * 2021-11-25 2024-08-02 北京智芯微电子科技有限公司 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备

Also Published As

Publication number Publication date
EP2313832A2 (en) 2011-04-27
JP2012185849A (ja) 2012-09-27
WO2009158178A2 (en) 2009-12-30
US20090327576A1 (en) 2009-12-31
EP2313832B1 (en) 2020-11-04
JP5450620B2 (ja) 2014-03-26
JP2011526035A (ja) 2011-09-29
US8151032B2 (en) 2012-04-03
JP5452660B2 (ja) 2014-03-26
EP2313832A4 (en) 2011-11-09
CN102077188B (zh) 2014-04-09
WO2009158178A3 (en) 2010-04-15

Similar Documents

Publication Publication Date Title
CN102077188B (zh) 用于虚拟化操作系统的直接存储器访问过滤器
US10255087B2 (en) Dynamic I/O virtualization system having a bidirectional extended hybrid address space (EHAS) for allowing host kernel to access guest memory
US8230155B2 (en) Direct memory access filter for virtualized operating systems
EP3121731B1 (en) Memory management method and device
US20190155637A1 (en) Resource Access Method Applied to Computer and Computer
US8645611B2 (en) Hot-swapping active memory for virtual machines with directed I/O
CN102207886B (zh) 虚拟机快速仿真辅助
US7702826B2 (en) Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices
US8863123B2 (en) Apparatus and method for virtualizing input/output devices using shared memory in host-based mobile terminal virtualization environment
US8924624B2 (en) Information processing device
US20050076155A1 (en) Runtime virtualization and devirtualization of I/O devices by a virtual machine monitor
EP2955634B1 (en) Paravirtualization-based interface for memory management in virtual machines
US10956189B2 (en) Methods for managing virtualized remote direct memory access devices
US20080052709A1 (en) Method and system for protecting hard disk data in virtual context
US20160350260A1 (en) Dynamic Non-Uniform Memory Architecture (NUMA) Locality for Remote Direct Memory Access (RDMA) Applications
CN112612574B (zh) 输入输出设备的内存访问管理单元、系统及地址转换方法
US10341177B2 (en) Parallel computing system and migration method
US20200201691A1 (en) Enhanced message control banks
CN102662857B (zh) 用于对于存储进行虚拟化的设备和方法
US20220335109A1 (en) On-demand paging support for confidential computing
US11544194B1 (en) Coherence-based cache-line Copy-on-Write
JP2019164661A (ja) 情報処理装置、情報処理方法及びプログラム
US20080162805A1 (en) Method and Apparatus for Using Non-Addressable Memories of a Computer System
US9652296B1 (en) Efficient chained post-copy virtual machine migration
US20120054773A1 (en) Processor support for secure device driver architecture

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150430

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150430

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.