[go: up one dir, main page]

CN108351837A - 虚拟地址支持的虚拟机中的直接映射的文件 - Google Patents

虚拟地址支持的虚拟机中的直接映射的文件 Download PDF

Info

Publication number
CN108351837A
CN108351837A CN201680064128.1A CN201680064128A CN108351837A CN 108351837 A CN108351837 A CN 108351837A CN 201680064128 A CN201680064128 A CN 201680064128A CN 108351837 A CN108351837 A CN 108351837A
Authority
CN
China
Prior art keywords
file
host
virtual
virtual machine
guest
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.)
Withdrawn
Application number
CN201680064128.1A
Other languages
English (en)
Inventor
A·U·基什安
M·伊伊京
L·王
K·M·布罗斯
Y·M·巴克
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 Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN108351837A publication Critical patent/CN108351837A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Landscapes

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

Abstract

将文件映射在主机虚拟地址支持的虚拟机中。一种方法包括从客虚拟机接收对来自主机的文件的请求。该方法进一步包括在主机处确定文件可被直接映射到请求访问该文件的虚拟机的物理存储器位置。该方法进一步包括在主机处提供由主机虚拟存储器中的文件映射支持的客机物理存储器。

Description

虚拟地址支持的虚拟机中的直接映射的文件
背景
背景和相关技术
计算机和计算系统已经影响了现代生活的近乎每一个方面。计算机通常涉及工作、休闲、保健、运输、娱乐、家政管理等。在现代,计算系统可实现虚拟计算的概念。在虚拟计算中,主物理机(在下文被称为“主机”)可主控多个客虚拟机(在下文被称为“客机”或“虚拟机”)。虚拟机共享主机上的物理资源。例如,虚拟机使用主机处的物理处理器和物理存储器来实现虚拟机。
当前,虚拟机的物理存储器按一对一的方式由主机中的非分页物理存储器分配来支持。管理虚拟机的虚拟化堆栈从主机中分配这种类型的存储器,并且主机在分配之后不具有对该存储器的控制。虚拟化堆栈在该存储器被分配之后对其进行完全地管理。其选择如何在各虚拟机之间分配存储器、是否使其从客机的角度来看可分页等等。
增加主机上的虚拟机密度已经成为能够通过打包更多虚拟机(同时使这些虚拟机足够好地执行以运行其期望的工作负载)来更好地利用服务器硬件的虚拟化解决方案的重要部分。当前虚拟机密度主要受主机存储器大小的限制。因此,例如,如果主机具有可被分配给虚拟机的12GB的RAM,则该主机只能主控其中所有虚拟机的全部存储总共为12GB或更小的一些虚拟机。
本文中所要求保护的主题不限于解决任何缺点或仅在诸如以上所描述的环境那样的环境中操作的各实施例。相反,提供本背景仅用于解说其中可实践本文中所描述的一些实施例的一个示例性技术领域。
简要概述
本文中所例示的一个实施例包括一种可在虚拟计算环境中实践的方法。该方法包括用于映射主机虚拟地址支持的虚拟机中的文件的动作。该方法包括从客虚拟机接收对来自主机的文件的请求。该方法进一步包括在主机处确定文件可被直接映射到请求访问该文件的虚拟机的物理存储器位置。该方法进一步包括在主机处提供由主机虚拟存储器中的文件映射支持的客机物理存储器。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。
附加特征和优点将在以下描述中提出,且部分会从描述中显而易见,或者可以通过实施本文的原理来获悉。本发明的特征和优点可以通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的特征从以下描述和所附权利要求书中将更完全显而易见,或者可以通过如下文所述实施本发明而获悉。
附图简述
为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出的本主题的具体实施方式来呈现以上简要描述的本主题的更具体描述。应该理解,这些附图仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用附加特征和细节来描述并解释,在附图中:
图1解说了包括用于虚拟机的虚拟地址支持的物理存储器的系统;
图2解说了将来自主机的客虚拟机可访问的文件直接映射到由该主机处的文件映射支持的客机物理地址空间中的示例;以及
图3解说了将文件映射在主机虚拟地址支持的虚拟机中的方法。
详细描述
每当在虚拟地址(VA)支持的虚拟机(VM)中运行的代码(如下面将更详细地解说地)从盘访问文件页(参见例如存储在图2中所解说的盘140上的文件136)时,该文件页的内容被从主机(例如,从虚拟硬盘驱动器(VHD)等)转移到VM的物理存储器中(其中该VM是在主机上运行的客机),该VM的物理存储器进而由主机进程中所分配的虚拟存储器支持。如果存在运行在主机上的多个此类VM并且它们访问主机上的相同文件,则两个不同的物理页在主机上被消耗以支持包含相同文件数据的客机物理页。因为那些主机页具有完全相同的内容,所以有机会降低存储器使用。传统上,这样做的方式是使用存储器管理器页组合器功能性来对主机上的完全相同的页进行组合,但这具有在用于创建各个个体页并随后将这些页组合成共享页的资源消耗方面的成本。此外,这可能引入在创建各个个体页时和/或在页被组合之前发生的存储器使用高峰。例如,考虑其中多个完全相同的VM被几乎同时地创建的情形。多个完全相同的VM的创建将导致在多个VM的创建时间处的主机物理存储器使用高峰,其中大部分所使用的存储器具有完全相同的内容。
各实施例可被实现,其中来自主机的客VM可访问的文件可被直接映射到客机物理地址空间中并且由主机上的常规文件映射支持。附加地或替换地,多个VM可直接映射主机上的相同文件,且因此立即共享访问这些文件所需的主机物理页,而不会消耗附加的客机物理页。附加地或替换地,直接映射的文件可以是VM可同时从主机上的物理页执行且共享主机上的物理页的可执行文件。
作为基础,下面解说客机物理存储器如何被映射到主机虚拟存储器。该功能性可被用来直接映射用于由主机虚拟地址支持的客虚拟机的文件。
现在参考图1,示出了主机102。主机102可以是能够主控多个客虚拟机的物理主机服务器机器。主机102包括管理程序104。管理程序是管理主机上的虚拟机的一段计算机软件、固件和/或硬件。
主机102包括主机部分106和客机部分108。主机部分106主控主机102本身的用户模式进程。客机部分108主控客虚拟机。在所例示的示例中,客机部分108主控客机110-1和客机110-2。虽然仅例示了两个客虚拟机,但是应当领会,主机102能够主控比这更多的虚拟机。
可实现其中用户模式进程被实现在主机部分106中以提供用于支持客机部分108中的客虚拟机的虚拟存储器116的各实施例。在所例示的特定示例中,为每个客机创建用户模式进程。因此,图1例示了分别对应于虚拟机110-1和110-2的用户模式进程112-1和112-2。然而,应当领会,单个用户模式进程可被用于多个虚拟机,或者多个进程可被用于单个虚拟机。替代地,虚拟存储器116可以按除了使用如将在下文例示的用户模式进程以外的其他方式来被实现。
虚拟化堆栈114在将主控虚拟机的指定的用户模式进程的地址空间中分配常规虚拟存储器(例如,分别在进程112-1和112-2中的虚拟存储器116-1和116-2)。主机存储器管理器118可将该存储器作为任何其他虚拟分配来对待,这意味着该存储器可被分页,可以出于满足系统上别处的毗邻的存储器分配的目的而改变对该存储器进行支持的物理页,可以与另一进程中的另一虚拟分配(其进而可以是另一虚拟机支持分配或者系统上的任何其他分配)共享这些物理页。与此同时,使主机存储器管理器根据需要来特别地对待虚拟机支持虚拟分配的许多优化是可能的。而且,如果虚拟化堆栈114选择将性能优先于密度,则其可执行由操作系统存储器管理器118支持的许多操作,诸如将页锁定在存储器120中,以确保虚拟机将不会经历针对那些部分的分页。类似地,可以根据需要使用大型页来为虚拟机提供甚至更多的性能。
给定的虚拟机(例如,虚拟机110-1)可以使其客机物理存储器(例如,客机物理存储器122-1)中的所有的客机物理存储器地址由虚拟存储器(例如,虚拟存储器116-1)来支持,或者可以使其客机物理存储器(例如,客机物理存储器122)中的客机物理存储器地址中的一些由虚拟存储器(例如,虚拟存储器116)来支持,且一些由诸如从主机存储器120作出的非分页物理存储器分配之类的传统机制来支持。
当新虚拟机(例如,虚拟机110-1)被创建时,虚拟化堆栈114使用用户模式进程(例如,用户模式进程112-1)来主控虚拟存储器分配以支持虚拟机110-1的物理存储器(例如,客机物理存储器122-1)。这可以是新创建的空进程、主控多个虚拟机的现有进程,或者每个虚拟机的还包含对虚拟机本身不可见的其他与虚拟机相关的虚拟分配(例如,虚拟化堆栈数据结构)的进程。还可以使用内核虚拟地址空间来支持虚拟机。一旦这样的进程被找到或被创建,则虚拟化堆栈114在它的地址空间(其对应于虚拟机110-1应当具有的客机物理存储器122-1的数量)中作出专用存储器虚拟分配(或区段/文件映射)。具体而言,虚拟存储器可以是专用分配、文件映射、页文件支持的区段映射或由主机存储器管理器118支持的任何其他类型的分配。这不必非得是一个毗邻的分配。它可以是任意数量的分配,并且每个分配有效地描述了主机物理存储器120中的在虚拟机110-1中具有对应大小的存储器的物理范围。
一旦虚拟存储器分配已被完成,则向将管理虚拟机110-1的物理地址空间并使其与主机存储器管理器118将选择来支持虚拟存储器分配的主机物理存储器页保持同步的组件注册这些虚拟存储器分配。这些组件是管理程序104以及作为主机内核和/或驱动器的一部分的虚拟化堆栈114。管理程序104通过利用硬件中的SLAT(二级地址转换)特征来管理客机物理存储器地址范围。具体而言,图1例示了分别对应于虚拟机110-1和110-2的SLAT124-1和SLAT124-2。虚拟化堆栈114用正在支持对应的客机物理存储器页的主机物理存储器页来更新SLAT 124-1。管理程序104揭露了针对虚拟化堆栈114的当向给定的客机物理存储器地址122-1的某个访问类型由客虚拟机110执行时接收拦截的能力。例如,当客虚拟机110写入某个物理地址时,虚拟化堆栈114可请求接收拦截。
当虚拟机110-1首次被创建时,其SLAT 124-1不包含任何有效的条目,因为尚无主机物理存储器地址被分配来支持客机物理存储器地址(尽管如以下所例示,在一些实施例中,SLAT 124-1可在与虚拟机110-1的创建相同的时间处或附近针对一些客机物理存储器地址来被预填充)。管理程序104知道组成虚拟机110-1的各客机物理存储器地址范围,但是此时它们中没有一个被任何主机物理存储器支持。当客虚拟机110-1开始执行时,其将开始访问它的(客机)物理存储器页。随着每个新物理存储器地址被访问,其将生成合适类型(读/写/执行)的拦截,因为对应的SLAT条目尚未用主机物理存储器地址(被表示为SPA)来进行填充。管理程序104接收客访问拦截并将其转发到在主机中运行的虚拟化堆栈114。虚拟化堆栈114参考其由客机物理存储器地址范围索引的数据结构126,以找到正对其进行支持的虚拟地址范围(以及从其虚拟地址空间中分配了该支持的主机进程112-1)。此时,虚拟化堆栈114知道与生成了拦截的客机物理存储器地址相对应的特定主机虚拟存储器地址。
虚拟化堆栈114接着在主控虚拟地址范围的主机进程112-1的上下文中向主机存储器管理器118发出虚拟故障。其根据需要通过附加到进程地址空间来这样做。虚拟故障是用原始拦截的对应的访问类型(读/写/执行)来被发出的,该原始拦截当客虚拟机110-1访问其在客机物理存储器122-1中的物理地址时发生。虚拟故障执行与常规页故障将采取的基本上相同的代码路径以使指定的虚拟地址有效并可由主机CPU访问。一个差异在于,该代码路径返回存储器管理器118已用来使虚拟地址有效的物理页码。该物理页码是正在对虚拟地址进行支持并进而正在对最初在管理程序104中生成了访问拦截的客机物理存储器地址进行支持的主机物理存储器地址(SPA)。此时,虚拟化堆栈114更新SLAT124-1中对应于原始客机物理存储器地址的SLAT条目,该原始客机物理存储器地址用主机物理存储器地址以及曾被用来使虚拟地址在主机中有效的访问类型(读/写/执行)生成了拦截。一旦这被完成,客机物理存储器地址对客虚拟机110-1而言用该访问类型是立即可访问的(例如,客虚拟机110-1中的并行虚拟处理器可立即访问它而不碰到拦截)。原始拦截处理完成,并且曾生成了拦截的原始虚拟处理器可重新尝试其指令并继续访问现在已填充了SLAT条目的存储器。
如果和/或当主机存储器管理器118决定执行可能或将会改变经由虚拟故障生效的虚拟地址的物理地址支持的任何动作,则其将为该虚拟地址执行转换缓冲区(TLB)刷新。它已这样做以符合主机存储器管理器118与主机102上的硬件CPU所具有的现有合同。虚拟化堆栈114现在将拦截这样的TLB刷新,并使被刷新的任何虚拟地址的对应的SLAT条目(这些SLAT条目正在对任何虚拟机中的任何客机物理存储器地址进行支持)无效。TLB刷新调用伴随一系列虚拟地址被刷新而发生。虚拟化堆栈114对照其由虚拟地址索引的数据结构126来查找正被刷新的虚拟地址,以找到可由给定的虚拟地址支持的客机物理范围。如果任何这样的范围被找到,则对应于那些客机物理存储器地址的SLAT条目被无效。附加地,如果需要或期望的话,主机存储器管理器可处理对各VM按不同方式进行支持的虚拟分配,以优化TLB刷新行为(例如,以减少SLAT无效时间、后续存储器拦截等)。
虚拟化堆栈114必须针对由主机102执行的TLB刷新(由存储器管理器118发出)用从虚拟故障(由存储器管理器118服务)返回的主机物理存储器页码来仔细地使更新SLAT124-1同步。这被完成以避免在主机存储器管理器118和虚拟化堆栈114之间添加复杂的同步。由虚拟故障返回的物理页码在其被返回到虚拟化堆栈114时可能会过时。例如,虚拟地址可能已被无效。通过拦截来自主机存储器管理器118的TLB刷新调用,虚拟化堆栈114可以知道何时发生了该竞争,并重新尝试虚拟故障以获取经更新的物理页码。
当虚拟化堆栈114使SLAT条目无效时,由虚拟机110-1对该客机物理存储器地址的任何后续访问将再次生成对管理程序104的拦截,该拦截将进而被转发到虚拟化堆栈114以如上所述地得到解决。相同的过程可当客机物理存储器地址被访问以用于首次读取并接着在稍候被写入时重复。该写入将生成分开的拦截,因为SLAT条目仅用“读取”访问类型来生效。该拦截将照常被转发到虚拟化堆栈114,并且带有“写入”访问的虚拟故障将针对合适的虚拟地址来被发出至主机存储器管理器118。主机存储器管理器118将更新其内部状态(通常在页表条目(PTE)中),以指示主机物理存储器页现在是脏的。这是在允许虚拟机写入其客机物理存储器地址之前被完成的,以避免数据丢失和/或破坏。如果和/或当主机存储器管理器118决定修整该虚拟地址(其将执行TLB刷新并作为结果使对应的SLAT条目无效)时,主机存储器管理器118将知道页是脏的且需要被写入到磁盘上的虚拟存储器,诸如在被重新利用之前的页文件。这就像将发生在主机102上运行的任何进程中的常规专用虚拟分配那样。
主机存储器管理器118能够维护对客机物理存储器地址空间进行支持的每个虚拟页的准确的访问历史,就像其为任何进程地址空间中所分配的常规虚拟页所做的一样。例如,PTE中的“被访问的位”在作为处理存储器拦截的一部分被执行的虚拟故障期间被更新。当主机存储器管理器清除任何PTE上的被访问的位时,其已经刷新常规CPU上的TLB以避免存储器破坏。如前所述,该TLB刷新将使对应的SLAT条目无效,这进而将在虚拟机110-1再次访问其客机物理存储器地址的情况下生成访问拦截。作为处理拦截的一部分,主机存储器管理器118中的虚拟故障处理将再次置位被访问的位,从而维持页的适当的访问历史。替代地,出于尽可能地避免管理程序104中的访问拦截的性能原因,主机存储器管理器118可直接消耗如从SLAT条目收集到的(如果由底层的硬件支持的话)来自管理程序104的页访问信息。主机存储器管理器118将与虚拟化堆栈114协作以将SLAT 124-1(其由客机物理存储器地址组织)中的访问信息转换到对那些客机物理存储器地址进行支持的主机虚拟存储器地址,以知道哪些地址曾被访问。
利用该基础且参考图2,现在将针对此处所描述的各实施例来解说细节,这些实施例可允许来自主机部分106的文件在创建时间处被直接映射到客虚拟机的物理存储器122地址空间中,使得主机上的物理存储器高峰可被避免和/或使得页组合操作可被避免和/或由客机从主机读取页的CPU/IO开销可被避免。各实施例可在访问这些文件时改进给定客虚拟机110的性能。
具体而言,各实施例可使用VA支持的VM技术(诸如以上所描述的)来将预计在各客虚拟机之间共享的文件(诸如文件136)直接映射到客机的物理地址空间中,并且可以使客虚拟机110使用直接映射来直接访问它们。这涉及在主机部分106中为期望的文件创建常规文件映射(如138处所解说),以及在VA支持的VM基础设施中创建存储器范围,该VA支持的VM基础设施将文件映射的虚拟地址范围映射到客虚拟机110可寻址的某个客机物理存储器122地址范围。以此方式,当客虚拟机110想要访问该文件136时,客虚拟机110中的存储器管理器128(参见图1)可被告知该文件136具有直接物理地址支持而不是通常的基于盘的支持。每当客虚拟机110的任何客代码访问该文件的存储器页时,其将访问客机物理存储器122中的由主机部分106上的文件映射支持的客机物理地址。这避免了将数据从主机部分106复制到客虚拟机110的成本,并且允许多个客虚拟机立即共享主机部分106上的物理存储器120中的相同文件页(参见138)(所有客虚拟机将在主机部分106上创建它们自己的映射相同文件的文件映射)。
现在使用针对共享虚构示例可执行文件136foo.dll的示例来解说细节。尽管解说了可执行文件,但应当领会,各实施例可以与可执行文件或数据文件一起使用。此外,应当领会,所解说的示例仅仅是一个示例,并且本领域技术人员将领会到可按其他方式来实现功能。
当客虚拟机110-1首次打开文件foo.dll并创建映像区段时,运行在客虚拟机110-1中的虚拟文件客户端130将指引运行在主机部分106上的虚拟文件服务器132将该文件映射在主控客虚拟机110-1的客机物理存储器122-1地址空间的主机进程112-1的虚拟地址空间116-1中。虚拟文件服务器132将为此与主机虚拟化驱动器合作。
Foo.dll被映射作为进程112-1的地址空间中的常规映像映射。对于该示例,foo.dll被映射在虚拟地址A至B处。
在映射之后,主机虚拟化驱动器将存储器范围添加到VA支持的客虚拟机110-1,其中虚拟地址A至B主控客机物理地址X至Y。
运行在客虚拟机110-1中的虚拟文件客户端130接收客机物理地址X至Y作为其对虚拟文件服务器132的调用的一部分。
因为支持该文件的直接映射,虚拟文件客户端130接着在映像区段回调期间对客机中的存储器管理器128作出响应。
客机存储器管理器128和VA支持的VM技术做剩余的工作,使得映像的所有后续客虚拟机映射将访问客机物理地址X至Y,该客机物理地址X至Y进而将由主机进程112-1中的主机虚拟地址A至B支持,该主机虚拟地址A至B进而由主机物理存储器120中的来自进程112-1中的映射的映像页支持。
当客虚拟机110-2访问foo.dll时,相同的序列将重复,并且客虚拟机110-2将访问主机部分106上的主机物理存储器120中的相同底层文件136,而没有副本开销、没有页梳理成本、且在密度增益方面没有延迟。
这可以应用于任何只读文件,包括预计在各客虚拟机之间共享的数据文件。需要注意,在一些实施例中,读写文件也可被实现,如下面将更详细地解说的。
以下是用于在客虚拟机110和主机部分106之间建立直接映射的映像的特定示例的更详细的步骤。应当注意,这是一个具体示例,并且其他实施例可以使用其他机制。
对于以下示例流程,以下图例适用:
G:在客虚拟机110中执行的代码;H:在主机部分106上执行的代码
G:客机发出针对%WINDIR%\foo.dll的打开文件请求
G:该打开命中支持客虚拟机110的VHD上的重解析点。
G:过滤器134拦截该重解析并向运行在客虚拟机110中的虚拟文件客户端130发出分开的打开。
G:虚拟文件客户端130进而打开主机部分106上的对应foo.dll(无论它在哪里)。
G:一旦该创建成功,过滤器134就从(经由虚拟文件客户端130)在内部打开的文件对象将文件映射(例如,可从华盛顿州雷德蒙德的微软公司获得的Windows中的SectionObjectPointers(SOP))复制到原始打开请求的文件对象。
G:客机在其%WINDIR%\foo.dll打开的文件上创建映像区段。
G:作为该区段创建的一部分,客虚拟机110存储器管理器128发出对文件系统堆栈的文件系统映射调用。
G:过滤器134对其进行拦截并经由其在内部打开的文件对象将其发送到虚拟文件客户端130。
G:虚拟文件客户端130将命令发送到主机部分上的虚拟文件服务器132以确定该映像是否可被直接映射。虚拟文件客户端130可基于其分割出的IO空间堆(参见下面在主机虚拟化驱动器的细节部分中对此的更多讨论)来供应用于该文件的客机物理地址范围。
H:虚拟文件服务器132接收该请求并且已经在主控客虚拟机110的工作者进程的上下文中运行。
H:虚拟文件服务器132为先前在本地打开的foo.dll创建映像区段并映射其映像视图。例如,其可被映射在VA中:A至B。
H:虚拟文件服务器132将该VA信息传达给主机虚拟化驱动器,并要求它在客虚拟机110中创建由A至B支持的存储器范围。
H:主机虚拟化驱动器在客虚拟机110物理地址空间中找到可用的物理范围。例如,其可以是客机物理地址:X至Y。
H:主机虚拟化驱动器在内部创建用于VA支持的客虚拟机110的存储器范围,其具有由VA A至B支持的客机物理地址X至Y。主机虚拟化驱动器也调用存储器管理器118来创建该范围。
H:主机虚拟化驱动器将X至Y值返回到虚拟文件服务器132,该虚拟文件服务器132进而将该信息返回到客虚拟机110中的虚拟文件客户端130。
G:虚拟文件客户端130接收客机物理地址X至Y并将该信息记录在其数据结构中。可返回支持直接映射的指示的指示符。
G:存储器管理器看到对由文件系统堆栈返回的直接映射标志的支持,并且将最终在映像区段构造期间向文件系统堆栈发出回调以请求客机物理地址。
G:当虚拟文件客户端130看到请求客机物理地址的调用(如果必要的话,转发自过滤器134)时,虚拟文件客户端130用其在以上记录的X至Y范围中的合适的客机物理地址进行响应。
G:客机针对%WINDIR%\foo.dll映射新打开的映像区段的映像视图。
G:客机从映像视图执行,该映像视图经历常规的VA支持的客虚拟机110管道((SLAT->管理程序->主机虚拟化驱动器->存储器管理器118),并且实际访问主机上的VA A至B。
拆解直接映射的步骤
当客虚拟机110将其映像区段拆解为直接映射的文件时,其也应该在主机上被拆解。以下是用于拆解直接映射的步骤。
G:客机将最后一个映像视图取消映射到%WINDIR%\foo.dll并关闭其映像区段的最后句柄。%WINDIR%\foo.dll的文件句柄可能在对%WINDIR%\foo.dll创建映像区段之后的某个较早时间(可能早得多)处已被关闭。
G:存储器管理器对控制区域的引用计数变为0,所以其将控制区域拆解,这解引用文件对象。当控制区域处于直接映射模式中时,其页不在备用列表中,所以每当其视图+区段引用变为零时,其页帧数量计数在实践中也将变为零,且因此控制将被拆解。
G:虚拟文件客户端130接收对文件对象的关闭请求(潜在地经由关闭其内部文件的过滤器134)并且看到关闭计数已变为0(或者如果任何其他实体仍使文件打开,每当其结束时就变为0)。
G:虚拟文件客户端130知道其在文件上建立了一个直接映射,所以其知道其现在需要与主机一起将其拆解。其向主机上的虚拟文件服务器132发出针对其对应文件的命令。如果驱动器的探测和锁定仍在使用直接映射的页,则此处可能需要进行特殊处置。这在下面的虚拟文件客户端130细节部分中进行了解说。
H:虚拟文件服务器132与主机虚拟化驱动器通信以移除为该直接映射创建的存储器范围(在所解说的示例中,VA:A至B以及客机物理地址X至Y)。
H:主机虚拟化驱动器使现有虚拟故障缩减到该范围(不应该存在)并保持新的截获(按照主机虚拟化驱动器和存储器管理器合约)。主机虚拟化驱动器从存储器管理器118和其自身中移除该存储器范围。主机虚拟化驱动器恢复虚拟故障。
H:运行在工作者进程中的虚拟文件服务器132取消映射其本地foo.dll的映像视图并关闭映像区段(其本可以在打开它之后马上关闭它)。
H:虚拟文件服务器132返回到客虚拟机110中的虚拟文件客户端130。
G:虚拟文件客户端130照常完成文件拆解的其余部分。
主机虚拟化驱动器
主机虚拟化驱动器确定为每个直接映射使用哪个客机物理地址空间。这不能够与客虚拟机110已用于其设备等的任何IO空间范围交叠。存在执行这个的多种方式。以下是一些示例。
在一个示例中,主机虚拟化驱动器可在客虚拟机110引导时间处预分配大物理范围,并将其记录在系统资源亲和表(SRAT)中,但不作为实际RAM。然后,其将这用作如稍后用于直接映射目的所需的堆。
在替换或附加示例中,客虚拟文件客户端130可从客虚拟机110内部请求IO空间并且经由虚拟机总线将该范围传达给主机虚拟化驱动器。这可以在大范围中完成或甚至每映像地完成,以使得这是完全动态的。
在替换或附加示例中,客虚拟文件客户端130可保留客虚拟机110中的IO空间并自己管理这些范围,并且将客机物理地址传达给虚拟文件服务器132,而不是相反。
一些实施例可将映像紧密地背靠背映射并且背靠背地分配对应客机物理地址空间,以便在客虚拟机110中具有更少的存储器范围。这允许在执行各种存储器操作时针对主机虚拟化驱动器和存储器管理器118搜索较小的数据结构。
一些实施例可将主机和客机物理地址分配中的映像映射对准在大型页边界上,以便在未来允许大的TB条目。存储器管理器118将需要用毗连的页帧号填充映像支持。
当一些实施例被用于直接映射可执行映像时,主机在可执行映像在被映射主机进程中时执行映像文件虚拟布局。这是因为映像文件在存储器中的布局与其在盘上的布局不同。主机存储器管理器这么做,并且客机将经由其直接映射来接收正确地布局的视图。
此外,客机可选择将可执行映像保留在相同的基址处(特别是对于位置无关代码),或者其可选择通过创建经修改的页的专用副本来对直接映射的必要部分重定基址(rebase)(以此方式,每个VM可以出于安全原因来选择不同的基址,但仍尽可能地与主机共享)。
通常,在对只读文件(即,客虚拟机110不能够修改但可读取/执行的文件)执行直接映射的情况下实践各实施例。然而,各实施例也可实现可写文件。若干不同的替换实施例可被实现。例如,在一些实施例中,客虚拟机110可经由其直接映射来更新主机文件的内容。在另一示例中,客虚拟机110维持文件的经修改部分的专用副本,同时继续共享未经修改的部分。
需要注意,客虚拟机110可仍然执行对直接映射的可执行文件的各种代码完整性检查(例如,散列验证),因为主机102向客虚拟机110提供验证可执行映像所必需的信息,即使其已在主机上被重定基址。在一些实施例中,作为优化,主机102可对直接映射的可执行映像执行所有代码完整性检查,并且向客虚拟机110传达其已完成的事实,使得客虚拟机110在主机102被信任的场景中可选择跳过其验证。
下面的讨论现在涉及可被执行的多个方法和方法动作。尽管这些方法动作可以以特定次序被讨论或在流程图中被例示为以指定次序发生,但是除非特别指明否则不需要任何特定排序,或者不会因某一动作取决于在该动作被执行之前完成的另一个动作而要求特定排序。
现在参考图3,例示出方法300。方法300包括用于将文件映射在主机虚拟地址支持的虚拟机中的动作。方法300包括从客虚拟机接收对来自主机的文件的请求(动作302)。例如,客虚拟机110-1可从主机部分106请求文件136。
方法300进一步包括在主机处确定文件可被直接映射到请求访问该文件的任何虚拟机的物理存储器位置(动作304)。例如,主机部分106可确定文件136可被直接映射,如138处所解说的。
方法300进一步包括在主机处提供由主机虚拟存储器中的文件映射支持的客机物理存储器(动作306)。例如,客机物理存储器122-1由主机虚拟存储器116-1支持,该主机虚拟存储器116-1进而由主机物理存储器120支持。
方法300可在确定文件可被直接映射到物理存储器位置包括接收该文件具有直接物理地址支持的指示的情况下被实践。例如,主机部分106可提供文件136在物理存储器120中的指示。
方法300可在确定文件可被直接映射到物理存储器位置包括如果客机知道该文件满足其准则(例如,该文件是只读的)则客机要求主机直接映射某些内容的情况下被实践。主机可仍然选择不将其直接映射,因为例如其知道该文件不会与许多VM共享,或者其将由主机写入,等等。
方法300可在确定文件可被直接映射到物理存储器位置包括确定该文件是被用来实例化多个虚拟客机的组件的情况下被实践。因此,例如,各实施例可在文件136被用作用来实例化多个临时虚拟机的一组文件的一部分的情况下被实现。如此处所解说的,大量虚拟机可使用共享文件来实例化,而不需要具有针对每个虚拟机的该文件的副本。相反,虚拟机可以如所解说地共享文件。
方法300可以在文件是盘上的压缩文件的情况下被实践。该方法可进一步包括将文件从盘扩展到位于主机处的物理存储位置处的物理存储器中。因此,如图2所解说的,文件136可以在盘140上被压缩。然而,该文件可被扩展到物理存储器120中,如138处所解说的。如图所示,通过将文件136扩展到物理存储器120中,可以实现从客机物理存储器112-1到主机虚拟存储器116-1、到主机物理存储器120的直接映射。
方法300可进一步包括接收对文件进行写入的用户输入,并且作为结果为虚拟机创建该文件的一个或多个专用页,使得虚拟机可更新该文件的专用副本,而其他虚拟机可继续通过直接映射到物理存储器位置来获得对该文件的访问权而无需更新。因此,例如,如果虚拟机确定其需要对文件作更改,则其可这么做,但其可能不再能够使用直接映射的副本,而是将反而具有专用副本。
方法300可进一步包括接收对文件进行写入的用户输入,并且作为结果,标识文件中的一个或多个偏移,其中用户输入被施加到该文件,以及为虚拟机创建由用户输入更新的该文件的各部分的一个或多个专用页,使得虚拟机可更新文件的专用副本部分,而其他虚拟机可通过直接映射到物理存储器位置来继续获得对文件的访问权而无需更新。因此,例如,对于希望对文件进行写入的虚拟机而言,取代具有该文件的完全分开的副本,只有该文件的经修改的部分被专用地储存以用于该虚拟机,而未改变的部分仍能够通过以上所描述的直接支持来访问。
此外,各方法可由计算机系统实现,计算机系统包括一个或多个处理器以及诸如计算机存储器这样的计算机可读介质。具体而言,计算机存储器可以存储计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时使各种功能得以被执行,诸如各实施例中记载的动作。
本发明的各实施例可以包括或使用包括计算机硬件的专用或通用计算机,如以下更详细讨论的。本发明范围内的各实施例也包括用于实现或存储计算机可执行指令和/或数据结构的实体及其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
物理计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储(如CD、DVD等)、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传递或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可被用来携带所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并通过通用或专用计算机可访问的网络和/或数据链路。上述的组合也被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输计算机可读介质被自动转移到物理计算机可读存储介质(或者相反)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终被传输至计算机系统RAM和/或计算机系统处的较不易失性的计算机可读物理存储介质。因此,计算机可读物理存储介质可以被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令包括例如使通用计算机、专用计算机或专用处理设备执行某一功能或一组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
替代地或附加的,本文描述的功能可以至少部分由一个或多个硬件逻辑组件来执行。例如、但非限制,可使用的硬件逻辑部件的说明性类型包括现场可编程门阵列(FPGA)、程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统系统(SOC)、复杂可编程逻辑器件(CPLD)、等等。
本发明可以以其他具体形式来体现,而不背离其精神或特性。所描述的实施例在全部方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的全部改变应被权利要求书的范围所涵盖。

Claims (15)

1.一种系统,包括:
一个或多个处理器;以及
一个或多个其上存储有指令的计算机可读介质,所述指令能够由所述一个或多个处理器执行以将计算机系统配置成比较各循环进程,所述指令包括能够执行以将所述计算机系统配置成至少执行以下的指令:
从客虚拟机接收对来自主机的文件的请求;
在所述主机处确定所述文件能够被直接映射到请求访问所述文件的任何虚拟机的物理存储器位置;以及
在所述主机处将由主机物理存储器位置支持的主机虚拟存储器文件映射所支持的客机物理存储器提供给所述客虚拟机以用于所述文件。
2.根据权利要求1所述的系统,其特征在于,确定所述文件能够被直接映射到物理存储器位置包括接收客机希望所述文件被直接映射的指示。
3.根据权利要求1所述的系统,其特征在于,确定所述文件能够被直接映射到物理存储器位置包括确定所述文件是被用来实例化多个虚拟客机的组件。
4.根据权利要求1所述的系统,其特征在于,所述文件是盘上的压缩文件,并且其中所述一个或多个计算机可读介质进一步在其上存储有指令,所述指令能够由所述一个或多个处理器执行以将所述计算机系统配置成将所述文件从盘扩展到所述主机处的所述物理存储器位置处的物理存储器中。
5.根据权利要求1所述的系统,其特征在于,所述一个或多个计算机可读介质进一步在其上存储有指令,所述指令能够由所述一个或多个处理器执行以将所述计算机系统配置成接收对所述文件进行写入的用户输入,并且作为结果,创建被写入且是易失性的且不被持久保持的一个或多个专用部分。
6.根据权利要求1所述的系统,其特征在于,所述一个或多个计算机可读介质进一步在其上存储有指令,所述指令能够由所述一个或多个处理器执行以将所述计算机系统配置成接收对所述文件进行写入的用户输入,并且作为结果,在能够稍候在本地被应用的虚拟机本地副本中持久保持用户更改。
7.根据权利要求1所述的系统,其特征在于,多个虚拟机直接映射相同的主机文件并同时在所述主机上共享相同的物理页。
8.根据权利要求1所述的系统,其特征在于,所述文件是映像文件,并且其中所述一个或多个计算机可读介质进一步在其上存储有指令,所述指令能够由所述一个或多个处理器执行以将所述计算机系统配置成针对映像文件映射来虚拟地布局映像并允许所述主机自动查看经更新的布局。
9.一种方法,包括:
从客虚拟机接收对来自主机的文件的请求;
在所述主机处确定所述文件能够被直接映射到请求访问所述文件的任何虚拟机的物理存储器位置;以及
在所述主机处将由主机物理存储器位置支持的主机虚拟存储器文件映射支持的客机物理存储器提供给所述客虚拟机以用于所述文件。
10.根据权利要求9所述的方法,其特征在于,确定所述文件能够被直接映射到物理存储器位置包括接收所述客机希望所述文件被直接映射的指示。
11.根据权利要求9所述的方法,其特征在于,确定所述文件能够被直接映射到物理存储器位置包括确定所述文件是被用来实例化多个虚拟客机的组件。
12.根据权利要求9所述的方法,其特征在于,所述文件是盘上的压缩文件,所述方法进一步包括将所述文件从盘扩展到所述主机处的所述物理存储器位置处的物理存储器中。
13.根据权利要求9所述的方法,其特征在于,进一步包括接收对所述文件进行写入的用户输入,并且作为结果,创建被写入且是易失性的且不被持久保持的一个或多个专用部分。
14.根据权利要求9所述的方法,其特征在于,进一步包括接收对所述文件进行写入的用户输入,并且作为结果,在能够稍候在本地被应用的虚拟机本地副本中持久保持用户更改。
15.根据权利要求9所述的方法,其特征在于,多个虚拟机直接映射相同的主机文件并同时在所述主机上共享相同的物理页。
CN201680064128.1A 2015-11-02 2016-10-25 虚拟地址支持的虚拟机中的直接映射的文件 Withdrawn CN108351837A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562249823P 2015-11-02 2015-11-02
US62/249,823 2015-11-02
US15/155,964 US20170123996A1 (en) 2015-11-02 2016-05-16 Direct Mapped Files in Virtual Address-Backed Virtual Machines
US15/155,964 2016-05-16
PCT/US2016/058599 WO2017078967A1 (en) 2015-11-02 2016-10-25 Direct mapped files in virtual address-backed virtual machines

Publications (1)

Publication Number Publication Date
CN108351837A true CN108351837A (zh) 2018-07-31

Family

ID=58637690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680064128.1A Withdrawn CN108351837A (zh) 2015-11-02 2016-10-25 虚拟地址支持的虚拟机中的直接映射的文件

Country Status (4)

Country Link
US (1) US20170123996A1 (zh)
EP (1) EP3371708A1 (zh)
CN (1) CN108351837A (zh)
WO (1) WO2017078967A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284168A (zh) * 2018-09-10 2019-01-29 福建星瑞格软件有限公司 一种大数据平台环境配置与业务数据分离管理方法及系统
CN109308288A (zh) * 2018-09-26 2019-02-05 新华三云计算技术有限公司 数据处理方法及装置
CN115039088A (zh) * 2020-01-30 2022-09-09 微软技术许可有限责任公司 高效地提供对宿主上下文处的文件内容的客户上下文访问
CN118860992A (zh) * 2024-09-24 2024-10-29 阿里云计算有限公司 数据和容器文件读取方法、设备、系统、介质及程序产品

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10176111B2 (en) * 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10713081B2 (en) 2018-08-30 2020-07-14 Red Hat, Inc. Secure and efficient memory sharing for guests
US10901911B2 (en) 2018-11-21 2021-01-26 Microsoft Technology Licensing, Llc Faster computer memory access by reducing SLAT fragmentation
US10761876B2 (en) * 2018-11-21 2020-09-01 Microsoft Technology Licensing, Llc Faster access of virtual machine memory backed by a host computing device's virtual memory
US11099874B2 (en) * 2019-01-28 2021-08-24 Red Hat Israel, Ltd. Efficient userspace driver isolation by shallow virtual machines
US11308230B2 (en) 2019-01-28 2022-04-19 Red Hat, Inc. Direct access to host memory for guests
US11977493B2 (en) * 2019-07-17 2024-05-07 Red Hat, Inc. Safe virtual machine physical device access for network function virtualization
US11829298B2 (en) 2020-02-28 2023-11-28 Apple Inc. On-demand memory allocation
US11714759B2 (en) 2020-08-17 2023-08-01 Apple Inc. Private memory management using utility thread
US12547549B2 (en) 2022-06-06 2026-02-10 Onnivation Llc Virtual memory paging system and translation lookaside buffer with pagelets
CN115061954B (zh) * 2022-08-18 2022-11-29 统信软件技术有限公司 一种缺页中断处理方法、计算设备及存储介质
US12007888B2 (en) * 2022-08-19 2024-06-11 Micron Technology, Inc. Techniques to group media blocks
US12197329B2 (en) * 2022-12-09 2025-01-14 Advanced Micro Devices, Inc. Range-based cache flushing

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5426748A (en) * 1992-01-03 1995-06-20 International Business Machines Corporation Guest/host extended addressing method and means with contiguous access list entries
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US8447936B2 (en) * 2006-06-30 2013-05-21 Microsoft Corporation Module state management in a virtual machine environment
US8656386B1 (en) * 2007-03-13 2014-02-18 Parallels IP Holdings GmbH Method to share identical files in a common area for virtual machines having the same operating system version and using a copy on write to place a copy of the shared identical file in a private area of the corresponding virtual machine when a virtual machine attempts to modify the shared identical file
US20100107163A1 (en) * 2007-03-20 2010-04-29 Sanggyu Lee Movable virtual machine image
KR101081907B1 (ko) * 2010-01-05 2011-11-09 성균관대학교산학협력단 가상화 장치

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284168A (zh) * 2018-09-10 2019-01-29 福建星瑞格软件有限公司 一种大数据平台环境配置与业务数据分离管理方法及系统
CN109308288A (zh) * 2018-09-26 2019-02-05 新华三云计算技术有限公司 数据处理方法及装置
CN109308288B (zh) * 2018-09-26 2020-12-08 新华三云计算技术有限公司 数据处理方法及装置
CN115039088A (zh) * 2020-01-30 2022-09-09 微软技术许可有限责任公司 高效地提供对宿主上下文处的文件内容的客户上下文访问
CN118860992A (zh) * 2024-09-24 2024-10-29 阿里云计算有限公司 数据和容器文件读取方法、设备、系统、介质及程序产品

Also Published As

Publication number Publication date
WO2017078967A1 (en) 2017-05-11
US20170123996A1 (en) 2017-05-04
EP3371708A1 (en) 2018-09-12

Similar Documents

Publication Publication Date Title
CN108351837A (zh) 虚拟地址支持的虚拟机中的直接映射的文件
US10761876B2 (en) Faster access of virtual machine memory backed by a host computing device's virtual memory
JP5592942B2 (ja) 仮想マシンシステムにおけるショートカット入出力
CN108701048B (zh) 数据加载方法及装置
US8037279B2 (en) Method and system for cross-domain data sharing
CN101290593B (zh) 追踪转移逻辑分区的存储器状态的系统和方法
US9720717B2 (en) Virtualization support for storage devices
US9298377B2 (en) Techniques for reducing read I/O latency in virtual machines
US9811366B2 (en) Dynamically using system memory as video memory for virtual graphics processing units
US20160299712A1 (en) Virtual Machines Backed by Host Virtual Memory
US20150089185A1 (en) Managing Mirror Copies without Blocking Application I/O
JP6416591B2 (ja) 更新されたファイルへのアクセスを提供する方法及びそれを実行させるためのプログラム命令語を含むコンピュータ読み取り可能な記録媒体に格納された実行可能なソフトウェア製品
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US12086084B2 (en) IOMMU-based direct memory access (DMA) tracking for enabling live migration of virtual machines (VMS) using passthrough physical devices
US10613774B2 (en) Partitioned memory with locally aggregated copy pools
CN106293994A (zh) 网络文件系统中的虚拟机克隆方法和网络文件系统
US10430287B2 (en) Computer
CN107832097A (zh) 数据加载方法及装置
US11221985B2 (en) Metadata space efficient snapshot operation in page storage
AU2010249649B2 (en) Shortcut input/output in virtual machine systems
JP2019139404A (ja) 情報処理装置
JP2013011971A (ja) 分散共有メモリ管理システム、分散共有メモリ管理方法、および分散共有メモリ管理プログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20180731

WW01 Invention patent application withdrawn after publication