CN102707986B - Shared memory between partitions and sub parent partition - Google Patents

Shared memory between partitions and sub parent partition Download PDF

Info

Publication number
CN102707986B
CN102707986B CN201110310816.0A CN201110310816A CN102707986B CN 102707986 B CN102707986 B CN 102707986B CN 201110310816 A CN201110310816 A CN 201110310816A CN 102707986 B CN102707986 B CN 102707986B
Authority
CN
China
Prior art keywords
partition
virtual machine
memory
mode
data
Prior art date
Application number
CN201110310816.0A
Other languages
Chinese (zh)
Other versions
CN102707986A (en
Inventor
B·S·波斯特
E·考克斯
Original Assignee
微软技术许可有限责任公司
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 to US12/894,896 priority Critical patent/US8463980B2/en
Priority to US12/894,896 priority
Application filed by 微软技术许可有限责任公司 filed Critical 微软技术许可有限责任公司
Publication of CN102707986A publication Critical patent/CN102707986A/en
Application granted granted Critical
Publication of CN102707986B publication Critical patent/CN102707986B/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; 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/45541Bare-metal, i.e. hypervisor runs directly on hardware
    • GPHYSICS
    • G06COMPUTING; 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; 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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation

Abstract

本发明涉及子分区与父分区之间的共享存储器。 The present invention relates to a memory shared between the partition and the sub-parent partition. 描述了一种用于创建在父分区和子分区中的模式之间的共享存储器孔径的机制。 It describes the mechanism of shared memory between the aperture pattern for creating the parent and child partitions in. 该共享的存储器孔径可以创建在客机与任何主机之间的任何存储器模式之间。 The shared memory aperture can be created between any memory mode between the aircraft and any host. 例如,共享的存储器孔径可以创建在子分区上的内核模式与父分区上的用户模式之间。 For example, the shared memory and the aperture can be created on the parent partition between user mode kernel mode on the sub-partition.

Description

子分区与父分区之间的共享存储器 Shared memory between partitions and sub parent partition

技术领域 FIELD

[0001] 本发明涉及子分区与父分区之间的共享存储器。 [0001] The present invention relates to a memory shared between the partition and the sub-parent partition.

背景技术 Background technique

[0002] 联网的一种日益流行的形式一般被称为远程呈现系统,其能使用诸如远程桌面协议(RDP)以及独立计算体系结构(ICA)等协议来与远程客户端共享桌面和在服务器上执行的其他应用。 [0002] networked an increasingly popular form is generally referred to as remote presentation system, which can be used, such as Remote Desktop Protocol (RDP) and Independent Computing Architecture (ICA) protocol to share the desktop and the like with a remote client on the server and other applications perform. 这样的计算系统通常将键盘按压和鼠标点击或选择从客户端传送到服务器, 通过网络连接(例如,因特网)在另一方向上转播回屏幕更新。 Such computing systems typically keyboard presses and mouse clicks or selections from the client to the server, the connection (e.g., the Internet) in the other direction back to broadcast over the network to update the screen. 由此,当实际上仅仅向客户端设备发送如在服务器侧上显现的桌面或应用的屏幕截图时,用户具有好像他的或她的机器正在完全地本地操作的体验。 Thus, when in fact only sent to the client device, such as screen shots appear on the server side or desktop application, users have if his or her machine is completely experience the local operation.

[0003] 可以在服务器处为每个用户渲染用户图形和视频。 [0003] The user can render graphics and video for each user at a server. 然后将得到的位图发送给客户端以供显示和交互。 The resulting bitmap is then sent to the client for display and interaction. 在一些系统中,图形加速器(比如GPU)也可以被虚拟化。 In some systems, graphics accelerator (such as GPU) can also be virtualized. 例如,不是对完整的硬件GPU进行建模,而是GPU可以被虚拟化并且由此提供抽象的仅限软件的GPU, 该仅限软件的GPU呈现与底层硬件的软件接口不同的软件接口。 For example, not to carry out a complete hardware GPU model, but the GPU can be virtualized GPU and thereby provide abstract software only, software only GPU that exhibit different underlying hardware and software interface software interface. 通过提供虚拟化的GPU,虚拟机可以用例如经加速的3D渲染和多媒体来实现丰富的用户体验,而不需要将虚拟机与特定GPU广品相关联。 By providing virtualization of the GPU, a virtual machine can be used, for example, accelerated 3D rendering and multimedia to achieve a rich user experience without the need for a virtual machine to a specific GPU broad product is associated.

[0004] 在一些情况下,子分区上的诸如经虚拟化的GPU之类的经虚拟化的设备可以将大量数据传输给主分区以便模拟有视频能力的卡。 [0004] In some cases, such as a virtualized devices via the child partition virtualization a GPU may be a lot of data to the main partitions in order to simulate card has video capability. 由于标准虚拟机总线机制的限制,这样大量的数据的传输可能给系统设计和性能造成负担。 Due to limitations of standard virtual machine bus mechanism, such a large amount of transmission data may burden the system design and performance.

发明内容 SUMMARY

[0005] 在各个实施例中,存储器可以在子分区中分配,并且映射可以使用虚拟化系统API 来创建。 [0005] The memory can be allocated in the sub-partitions In various embodiments, and the mapping can be used to create a virtual system API. 然后,该映射可以被传输给主分区,其中附加的虚拟化系统API可以有助于将存储器映射到主分区的用户空间。 Then the mapping may be transmitted to the main partition, wherein the additional virtualization system API may facilitate memory mapped to the user space of the primary partition. 附加的同步机制和读取/写入API可以允许子分区和父分区二者上的应用读取共享存储器中的数据。 Additional synchronization mechanism and read / write data API allows an application to read the shared memory on both the parent and child partitions partition. 此外,还可以提供无论是内核还是用户空间都将存储器的任何区域从子分区映射到父分区的能力。 Further, it may also be provided either user space or kernel will map any area of ​​the memory from the parent to the child partition partitioning ability.

附图说明 BRIEF DESCRIPTION

[0006] 参考附图来进一步描述根据本说明书的用于在虚拟机分区之间传输数据的系统、 方法和计算机可读介质,附图: [0006] further described with reference to the drawings according to the present specification for data transmission systems, methods and computer readable media, partitions between virtual machines drawings:

[0007] 图1和2描绘了其中可实现本发明的各方面的示例计算机系统。 [0007] FIGS. 1 and 2 depict various aspects of an example computer system in which the present invention may be implemented.

[0008] 图3描绘了用于实施本发明的各方面的操作环境。 [0008] FIG 3 depicts an operational environment for practicing aspects of the present invention.

[0009] 图4描绘了用于实施本发明的各方面的操作环境。 [0009] FIG 4 depicts an operational environment for practicing aspects of the present invention.

[0010] 图5示出了包括用于实现远程桌面服务的电路的计算机系统。 [0010] FIG. 5 shows a circuit including remote desktop services for computer systems.

[0011] 图6示出了包括用于实现远程服务的电路的计算机系统。 [0011] FIG 6 illustrates a circuit including a remote service computer systems.

[0012] 图7示出了经虚拟化的GPU的示例性抽象层。 [0012] FIG. 7 illustrates an exemplary virtualization abstraction layer over the GPU.

[0013] 图8示出了包含此处所公开的方法的各方面的示例体系结构。 [0013] FIG. 8 shows an example architecture incorporating aspects of the methods disclosed herein.

[0014] 图9示出了包含此处所公开的方法的各方面的示例体系结构。 [0014] FIG. 9 shows an example architecture incorporating aspects of the methods disclosed herein.

[0015] 图10示出了包含此处所公开的方法的各方面的示例体系结构。 [0015] FIG. 10 shows an example architecture incorporating aspects of the methods disclosed herein.

[0016] 图11示出了用于在虚拟机分区之间传输数据的操作过程的实例。 [0016] FIG. 11 shows an example of a process for operation of data transfer between virtual machines partitions.

[0017] 图12示出了用于在虚拟机分区之间传输数据的实例性系统。 [0017] FIG. 12 illustrates an example system for transferring data between virtual machines partitions.

具体实施方式 Detailed ways

[0018] 概括的计算环境 [0018] The general computing environment

[0019] 在以下描述和附图中阐明了某些具体细节,以提供对本发明的各个实施例的全面理解。 [0019] Certain specific details are set forth in the following description and figures to provide a thorough understanding of various embodiments of the present invention. 通常与计算和软件技术相关联的某些公知细节将不在以下公开中描述,以避免不必要地使本发明的各实施例晦涩难懂。 Certain well-known details often associated with computing and software technology are not associated with the description of the following disclosure to avoid unnecessarily each embodiment of the present invention obscure. 此外,相关领域的普通技术人员可以理解,他们可以无需以下描述的细节中的一个或多个而实现本发明的其它实施例。 In addition, one of ordinary skill in the relevant art can appreciate that the specifics they may not need to be described in the following with one or more other embodiments to achieve the present invention. 最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本发明的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本发明所必需的。 Finally, although reference to steps and sequences in the following disclosure, various methods are described, but such description is intended to provide an embodiment of the present invention to achieve a clear, and the steps and sequences of steps should not be taken to achieve the present invention is necessary.

[0020] 应该理解,此处所描述的各种技术可以结合硬件或软件或,在适当的情况下,结合两者的组合来实现。 [0020] It should be understood that the various techniques described herein may be combined with hardware or software or, where appropriate, with a combination of both to achieve. 因此,本发明的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(即,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本发明的装置。 Thus, the methods and apparatus of the present invention, or certain aspects or portions thereof, may take the program code in tangible media such as floppy disks, CD-ROM, hard drives, or any other machine-readable storage media (i.e., instructions) form, wherein, when the program code is loaded into and executed by a machine such as a computer to run, the machine becomes an apparatus for implementing the present invention. 在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、可由处理器读取的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备,以及至少一个输出设备。 In the case of program code execution on programmable computers, the computing device generally includes a processor, a storage medium readable by the processor (including volatile and nonvolatile memory and / or storage elements), at least one input device , and at least one output device. 一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。 One or more programs that may, for example, by the use of an API, reusable controls, or the like is achieved by using the process described in conjunction with the present invention. 这样的程序优选地以高级别过程或面向对象编程语言来实现,以与计算机系统进行通信。 Such programs are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system. 然而,若有需要,程序也可以以以汇编或机器语言来实现。 However, if necessary, the program can also be implemented in assembly or machine language. 在任一情况下,语言都可以是编译的或解释的语言,并与硬件实现相结合。 In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.

[0021] 远程桌面系统是维护可由客户计算机系统远程地执行的应用的计算机系统。 [0021] A remote desktop system is a computer system maintenance application by the customer computer system remotely executed. 输入是在客户计算机系统处被输入的,并通过网络(例如,使用基于国际电信联盟(ITU)T. 120 系列协议等协议,如远程桌面协议(RDP))传送到终端服务器上的应用。 Input is entered at a client computer system, via a network (e.g., based ITU (ITU) T. 120 family of protocols such as Remote Desktop Protocol (the RDP)) to an application on the terminal server. 该应用如同该输入是在终端服务器处送入的那样来处理该输入。 As the application of the input at the terminal server is fed as input to the process. 该应用响应于所接收到的输入来生成输出, 并且通过网络将该输出传送到客户端。 The application in response to the received input to generate an output, the output through the network to the client.

[0022] 各实施例可在一个或多个计算机上执行。 [0022] Embodiments may execute on one or more computers. 图1和2以及下面的讨论旨在提供其中可实现本发明的合适的计算环境的简要概括描述。 Figures 1 and 2 and the following discussion are intended to provide a brief, general description of a suitable computing may be implemented in the environment of the present invention. 本领域的技术人员可以理解,计算机系统200、300可具有参照图1和2的计算机100描述的组件中的一部分或全部。 Those skilled in the art will appreciate that computer systems 200, 300 may have a portion or all of the computer components described with reference to FIGS. 1 and 2 in 100.

[0023] 贯穿本发明使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件/软件。 [0023] The term circuitry used throughout the present invention may comprise such hardware interrupt controllers, hard drives, network adapters, graphics processors, hardware based video / audio codecs and other hardware components, firmware, and hardware used to operate these / software. 术语电路还可包括被配置成通过固件或通过开关集来以特定方式执行功能的微处理器,或一个或多个逻辑处理器,例如,多核通用处理单元的一个或多个核。 The term may also include circuitry configured to perform the microprocessor by firmware or function in a particular manner through the switch set, or one or more logical processors, e.g., a general purpose multi-core processing unit, or more cores. 此示例中的逻辑处理器可以通过从存储器,例如,RAM、R0M、固件和/或虚拟存储器中加载的体现可操作以执行功能的逻辑的软件指令来配置。 In this example logical processor can perform logic functions configured by software instructions from a memory, e.g., RAM, R0M, firmware, and / or virtual memory operable reflected loaded. 在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。 In an example wherein the circuit comprises a combination of hardware and software embodiments, the implementer may write source code embodying logic, then the source code may be compiled into machine readable code executable by the processor logic. 因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/ 软件的组合之间几乎没有差别的地步,因而选择硬件还是软件来实现功能只是一个设计选择。 Because skilled in the art can understand that the art has evolved to the point where there is little difference between the combination of hardware, software, or hardware / software, the selection of hardware or software to implement functions simply a design choice. 因此,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现是无足轻重的且留给了实现者。 Accordingly, since one of skill in the art will be appreciated that a software process can be transformed into an equivalent hardware structure, and a hardware structure can itself be transformed into an equivalent software process, selection of a hardware implementation versus a software implementation is trivial and left the implementer.

[0024] 图1描绘了以本发明的各方面来配置的计算系统的示例。 [0024] FIG 1 depicts an example of a computing system to various aspects of the present invention is configured. 计算系统可包括计算机20等等,其中包括处理单元21、系统存储器22,以及将包括系统存储器在内的各种系统组件耦合到处理单元21的系统总线23。 The computing system may include a computer 20 or the like, including a processing unit 21, a system memory 22, and various system components including the system memory to the processing unit 21 is coupled to the system bus 23. 系统总线23可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线,以及局部总线。 The system bus 23 may be any of several types of bus structures, including using any of a variety of bus architectures memory bus or memory controller, a peripheral bus, and a local bus. 系统存储器包括只读存储器(ROM) 24和随机存取存储器(RAM) 25。 The system memory includes read only memory (ROM) 24 and random access memory (RAM) 25. 基本输入/ 输出系统26 (BIOS)被存储在ROM24中,该基本输入/输出系统26包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。 A basic input / output system 26 (the BIOS) is stored in the ROM24, the basic input / output system containing the basic routines 26 such as during start within the computer 20, the information transmitted between elements. 计算机20还可以包括用于读写硬盘(未示出)的硬盘驱动器27、用于读写可移动磁盘29的磁盘驱动器28,以及用于读写诸如⑶ROM或其他光学介质之类的可移动光盘31的光盘驱动器30。 The computer 20 may further include a hard disk drive for reading and writing a hard disk (not shown) 27 for reading and writing a removable magnetic disk 29, magnetic disk drive 28, and a reader or other optical media such as ⑶ROM such a removable optical disk 31 optical disk drive 30. 在一些示例实施例中,实施本发明的各方面的计算机可执行指令可存储在ROM24、硬盘(未示出)、RAM25、可移动磁盘29、光盘31和/或处理单元21的高速缓存中。 In some example embodiments, various aspects of embodiments of the present invention, computer-executable instructions may be stored in ROM 24, hard disk (not shown), RAM 25, removable magnetic disk 29, optical disk cache 31 and / or the processing unit 21. 硬盘驱动器27、磁盘驱动器28,以及光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33,以及光盘驱动器接口34连接到系统总线23。 Hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 by a hard disk drive 32, magnetic disk drive interface 33, and an optical disk drive interface 34 is connected to the system bus 23 interface. 驱动器以及它们相关联的计算机可读介质为计算机20提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失性存储。 The computer 20 provides computer-readable instructions, data structures, program modules, and other data non-volatile storage drive and the computer-readable medium thereof is associated. 虽然此处所描述的环境使用了硬盘、可移动磁盘29、以及可移动光盘31,但是,那些本领域普通技术人员应该理解,在操作环境中也可以使用诸如盒式磁带、闪存卡、数字视频盘、伯努利磁带盒、随机存取存储器(RAM)、只读存储器(ROM)等等之类的可以存储可由计算机进行访问的数据的其他类型的计算机可读介质。 Although the environment described herein employs a hard disk, a removable magnetic disk 29, and removable optical disk 31, however, those of ordinary skill in the art will appreciate that such cartridge may also be used in the operating environment, flash memory cards, digital video disks other types of computers, Bernoulli cassette, a random access memory (RAM), a read only memory (ROM) and so forth may be stored by a computer-based data access readable medium.

[0025] 可以有若干个程序模块存储在硬盘、磁盘29、光盘31、ROM24,和/或RAM25上, 包括操作系统35、一个或多个应用程序36、其他程序模块37、以及程序数据38。 [0025] A number of program modules can be stored on the hard disk, magnetic disk 29, optical disk 31, ROM24, and / or RAM 25, including an operating system 35, one or more application programs 36, other program modules 37, and program data 38. 用户可以通过诸如键盘40和定点设备42之类的输入设备向计算机20中输入命令和信息。 The user can enter commands and information into the computer 20 through input devices such as a keyboard 40 and pointing device 42 or the like. 其他输入设备(未示出)可包括话筒、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。 Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner or the like. 这些及其他输入设备常常通过耦合到系统总线的串行端口接口46连接到处理单元21,但是,也可以通过诸如并行端口、游戏端口、通用串行总线(USB)端口之类的其他接口来连接。 These and other input devices are often connected through a serial port interface is coupled to the system bus 46 to the processing unit 21, but may also be connected by such as a parallel port, a game port, a universal serial bus interfaces other (USB) port or the like . 显示器47 或其他类型的显示设备也可以通过诸如视频适配器48之类的接口连接到系统总线23。 Display 47 or other type of display device may be such as a video adapter 48 or the like to the system bus 23 via an interface. 除了显示器47之外,计算机通常还包括其他外围输出设备(未示出),如扬声器和打印机。 In addition to the display 47, computers typically include other peripheral output devices (not shown), such as speakers and printers. 图1的系统也包括主机适配器55、小型计算机系统接口(SCSI)总线56,以及连接到SCSI总线56的外部存储装置62。 System of Figure 1 also includes a host adapter 55, Small Computer System Interface (SCSI) bus 56, and an external storage device 62 connected to the SCSI bus 56.

[0026] 计算机20可以使用到一个或多个远程计算机(如远程计算机49)的逻辑连接, 以在联网环境中操作。 [0026] Computer 20 may be used to one or more remote computers (such as a remote computer 49) of the logical connections, to operate in a networked environment. 远程计算机49可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点、虚拟机,并通常包括上文相对于计算机20所描述的许多或全部元件,但是在图1中只示出了存储器存储设备50。 The remote computer 49 may be another computer, a server, a router, a network PC, a peer device or other common network node, a virtual machine, and typically includes many or all of the elements above described computer 20, but in FIG. 1 It shows only a memory storage device 50. 图1中所描绘的逻辑连接可包括局域网(LAN)51和广域网(WAN)52。 Depicted in Figure 1. The logical connections can include a local area network (LAN) 51 and a wide area network (WAN) 52. 这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中是普遍的。 Such networking environments are common in offices, enterprise-wide computer networks, intranets and the Internet.

[0027] 当用于LAN网络环境中时,计算机20可通过网络接口或适配器53连接到LAN51。 [0027] When used in a LAN networking environment, the computer 20 may be connected to LAN51 via network interface or adapter 53. 当用于WAN网络环境中时,计算机20通常包括调制解调器54,或用于通过诸如因特网之类的广域网52建立通信的其他手段。 When used in a WAN networking environment, the computer 20 typically includes a modem 54 or other means for establishing communications over the wide area network such as the Internet 52. 可以是内置的或外置的调制解调器54可通过串行端口接口46连接到系统总线23。 Which may be internal or external modem serial port interface 54 may be connected to the system bus 46 through 23. 在联网环境中,相对于计算机20所描述的程序模块或其部分可被存储在远程存储器存储设备中。 In a networked environment, program modules relative to the computer 20 as described or portions thereof may be stored in the remote memory storage device. 可以理解,所示出的网络连接只是示例,也可以使用用于在计算机之间建立通信链路的其他装置。 It is appreciated that the network connections shown are merely examples, may be used other means of establishing a communications link between the computers may be used. 此外,虽然可构想本发明的许多实施例尤其适用于计算机系统,然而在本文中不意味着将本发明限于这些实施例的公开。 In addition, although many embodiments may be contemplated embodiments of the present invention is particularly suitable for the computer system, however, it is not meant to limit the invention to these embodiments disclosed herein.

[0028] 现在参考图2,描绘了示例性计算系统100的另一实施例。 [0028] Referring now to Figure 2, depicts another embodiment of an exemplary computing system 100. 计算机系统100可包括逻辑处理器102,如执行核。 The computer system 100 may include a logic processor 102, such as the execution core. 尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。 Although a one logical processor 102, in other embodiments, the computer system 100 may have a plurality of logical processors, each processor, for example, a plurality of execution cores of the substrate, and / or may have a plurality of execution cores each a plurality of processor substrate. 如图所示,各种计算机可读存储介质110可由一个或多个系统总线互联,系统总线将各种系统组件耦合到逻辑处理器102。 As shown, a variety of computer-readable storage medium 110 may be interconnected to one or more system buses, a system bus couples various system components to the logical processor 102. 系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。 The system bus may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and using any of a variety of bus architectures of the local bus. 在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM) 104、存储设备106 (例如电机硬盘驱动器、固态硬盘驱动器等)、固件108 (例如闪速RAM或ROM)、以及可移动存储设备118 (例如⑶-R0M、软盘、DVD、闪速驱动器、外部存储设备等)。 In an exemplary embodiment, a computer-readable storage medium 110 may include, for example, random access memory (RAM) 104, storage device 106 (e.g., electromechanical hard drive, solid state hard drive, etc.), firmware 108 (e.g., flash RAM or ROM), and a removable storage device 118 (e.g. ⑶-R0M, floppy disk, DVD, flash drive, an external storage device, etc.). 本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、数字视频盘、柏努利盒式磁带。 Those skilled in the art will appreciate that other types of computer-readable storage medium may be used, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges.

[0029] 计算机可读存储介质为计算机100提供了对处理器可执行指令122、数据结构、程序模块和其他数据的非易失性存储。 [0029] Computer-readable media provide storage of processor-executable instructions 122, non-volatile memory data structures, program modules and other data for the computer 100. 基本输入/输出系统(BIOS) 120可被存储在固件108 中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。 A basic input / output system (BIOS) 120 may be stored in firmware 108, which contains the basic routines that help to transfer information, such as during start between elements within the computer system 100. 包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM104和/ 或可移动存储设备118上,并且可由逻辑处理器102来执行。 Including an operating system and / or a plurality of application programs may be stored on a firmware 108, storage device 106, RAM 104 and / or removable storage devices 118 and logical processor 102 may be performed.

[0030] 命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。 [0030] commands and information into the computer 100 can be received through the input device 116, the input device may include, but are not limited to, a keyboard and a pointing device. 其他输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。 Other input devices may include a microphone, joystick, game pad, scanner or the like. 这些和其他输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其他接口连接,如并行端口、游戏端口或通用串行总线(USB)。 These and other input devices are often coupled to the system bus via a serial port interface connected to the logic processor 102, but may be connected by other interfaces, such as a parallel port, game port or a universal serial bus (USB). 显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理器112的一部分或可连接到图形处理器112的接口来连接到系统总线。 Display or other type of display device may also be such as a video adapter, through a graphics processor may be part of or may be connected to an interface 112 to graphics processor 112 is connected to the system bus. 除了显示器之外,计算机通常包括其他外围输出设备(未示出), 如扬声器和打印机。 In addition to the monitor, computers typically include other peripheral output devices (not shown), such as speakers and printers. 图1的示例性系统还可包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。 The exemplary system 1 also includes a host adapter, a Small Computer System Interface (SCSI) bus, and connected to the SCSI bus, an external storage device.

[0031] 计算机系统100可使用至一个或多个远程计算机,如远程计算机,的逻辑连接在网络化环境中操作。 [0031] Computer system 100 may use to one or more remote computers, such as remote computers, logical connections operate in a networked environment. 远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。 The remote computer may be another computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer system 100.

[0032] 当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡114连接至LAN或WAN。 [0032] When used in a LAN or WAN networking environment, the computer system 100 may be connected to a LAN or WAN 114 via a network interface card. NIC114可以是内置或外置的,其可以连接到系统总线。 NIC114 may be internal or external, which can be connected to the system bus. 在联网环境中,相对于计算机系统1〇〇所描述的程序模块或其部分可被储存在远程存储器存储设备中。 In a networked environment, program modules relative to the computer system 1〇〇 described or portions thereof, may be stored in the remote memory storage device. 可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。 It will be appreciated that the network connections described herein are exemplary, and may use other means of establishing a communications link between the computers. 此外,虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施例。 In addition, although many embodiments may be contemplated embodiments of the present invention is particularly useful for computerized systems, however, are not meant to limit the invention to those embodiments in this description.

[0033] 远程桌面系统是维护可由客户计算机系统远程地执行的应用的计算机系统。 [0033] A remote desktop system is a computer system maintenance application by the customer computer system remotely executed. 输入是在客户计算机系统处被输入的,并通过网络(例如,使用基于国际电信联盟(ITU)T. 120 系列协议等协议,如远程桌面协议(RDP))传送到终端服务器上的应用。 Input is entered at a client computer system, via a network (e.g., based ITU (ITU) T. 120 family of protocols such as Remote Desktop Protocol (the RDP)) to an application on the terminal server. 该应用如同该输入是在终端服务器处送入的那样来处理该输入。 As the application of the input at the terminal server is fed as input to the process. 该应用响应于所接收到的输入生成输出,并且该输出通过网络传送到客户计算机系统。 The application in response to the received input generates an output, and the output is transmitted to the client computer system through a network. 客户计算机系统呈现输出数据。 The client computer system presents the output data. 由此,在客户计算机系统处接收输入并呈现输出,而处理实际上是在终端服务器处发生的。 Thus, the client computer system receiving the input and output presented, the processing actually occurs at the terminal server. 会话可包括诸如桌面之类的命令行界面(shell)和用户界面、跟踪该桌面内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等等。 Such as a desktop session may include a command line interface or the like (the shell) and a user interface, the desktop that track mouse movement within the subsystems that translate a mouse click on an icon into commands subsystem instance of a program and the like. 在另一示例实施例中,会话可包括应用。 In another exemplary embodiment, the session may include an application. 在该示例中,当呈现应用时,桌面环境仍可被生成并对用户隐藏。 In this example, when a presentation application, a desktop environment still be generated and hidden from the user. 应当理解, 前述讨论是示例性的,且当前公开的主题可以在各种客户端/服务器环境中实现且不限于特定终端服务产品。 It should be understood that the foregoing discussion is exemplary, and the presently disclosed subject matter is not limited to a particular terminal may be implemented in a variety of products and services a client / server environment.

[0034] 即使不是全部,也是在大多数远程桌面环境中,输入数据(在客户计算机系统处送入的)通常包括表示对应用的命令的鼠标和键盘数据,且输出数据(由终端服务器处的应用生成)通常包括用于在视频输出设备上显示的视频数据。 [0034] Even if not all, most of the remote desktop environment, input data (entered at the client computer system) typically includes mouse and keyboard commands to an application of the data, and output data (the terminal at the server generating applications) typically includes video data for display on a video output device. 许多远程桌面环境也包括扩展到传输其他类型的数据的功能。 Many remote desktop environment is also extended to include functional data transmission of other types.

[0035] 可使用通信信道来通过允许插件经由RDP连接传输数据来扩展RDP协议。 [0035] The communication channel may be used by allowing plug-ins to extend the transmission of data via an RDP connection RDP protocol. 存在许多这样的扩展。 There are many such extensions. 诸如打印机重定向、剪贴板重定向、端口重定向等特征使用通信信道技术。 Such as a printer redirection, clipboard redirection, port redirection, etc. using a communication channel technology. 由此,除了输入和输出数据之外,可以有许多需要来传输数据的通信信道。 Thus, in addition to input and output data, there may be many communication channels are required to transmit data. 因此,可能有传输输出数据的偶然请求和传输其他数据的一个或多个信道请求争用可用的网络带宽。 Thus, there may be a chance of another data transmission request and transmitting a plurality of output data or request contention channel available network bandwidth.

[0036] 现在参考图3和4,所描绘的是被配置成实现虚拟机的计算机系统的高级框图。 [0036] Referring now to FIGS. 3 and 4, depicted is a computer system configured to implement high level block diagram of a virtual machine. 如图所示,计算机系统1〇〇可包括图1和2中所描述的元件,以及可用于实现虚拟机的组件。 As shown, the computer system may comprise 1〇〇 element 2 and illustrated in Figure 1, and the assembly may be used to implement virtual machines. 一个这样的组件是在本领域中也可被称为虚拟机监控程序的系统管理程序(hyperviS〇r)202。 One such component is present in the art may also be referred to as a hypervisor virtual machine monitor (hyperviS〇r) 202. 所描绘的实施例中的系统管理程序202可被配置成控制并仲裁对计算机系统100的硬件的访问。 The embodiment depicted embodiment hypervisor 202 may be configured to control and arbitrate access to the hardware of the computer system 100. 广泛而言,系统管理程序202可以生成称为分区的执行环境,如子分区1到子分区N(其中N是大于或等于1的整数)。 Broadly, the hypervisor 202 may generate execution environments called partitions such as child partition 1 through child partition N (where N is an integer equal to or greater than 1). 在各实施例中,子分区可被认为是系统管理程序202所支持的基本隔离单位,S卩,每一子分区可被映射到在系统管理程序202 的控制下的一组硬件资源,例如存储器、设备、逻辑处理器周期等,和/或父分区,并且系统管理程序202可以隔离一个分区使其无法访问另一分区的资源。 In various embodiments, a child partition can be considered hypervisor 202 supports basic unit of isolation, S Jie, each child partition can be mapped to a set of hardware resources under control of the hypervisor 202 such as a memory , devices, logical processor cycles, etc., and / or the parent partition, and the hypervisor 202 can isolate one partition can not access the resources of another partition. 在各实施例中,系统管理程序202可以是独立软件产品,操作系统的一部分、被嵌入在主板的固件内、专门的集成电路,或其组合。 In various embodiments, the hypervisor 202 may be a standalone software product, part of an operating system, embedded within firmware of the motherboard, specialized integrated circuits, or a combination thereof.

[0037] 在以上示例中,计算机系统100包括父分区204,父分区在开源社区中也可被认为是域0。 [0037] In the above example, the computer system 100 includes a parent partition 204, in the open source community parent partition may be considered as the domain 0. 父分区204可被配置成通过使用虚拟化服务提供者228 (VSP)来向在子分区IN中执行的客操作系统提供资源,虚拟化服务提供者在开源社区中也被称为后端驱动程序。 Parent partition 204 can be configured by using virtualization service provider 228 (VSP) to provide resources to guest operating systems executing in the child partitions IN, virtualization service provider in the open source community is also known as the back-end driver . 在此示例体系结构中,父分区204可以选通对底层硬件的访问。 In this example architecture, the parent partition 204 can gate access to the underlying hardware. VSP228可用于通过虚拟化服务客户端(VCS)来复用到硬件资源的接口,虚拟化服务客户端在开源社区中也被称为前端驱动程序。 VSP228 can be used for multiplexed hardware resources through virtualization service clients (VCS) interface, a virtualization service clients in the open source community is also known as front-end drivers. 每一子分区可包括一个或多个虚拟处理器,例如客操作系统220到222可管理并调度线程在其上执行的虚拟处理器230到232。 Each child partition can include one or more virtual processors, such as guest operating systems 220 through 222 can manage and schedule threads executing virtual processors 230-232. 一般而言,虚拟处理器230到232是提供带有特定体系结构的物理处理器的表示的可执行指令和相关联状态信息。 Generally, virtual processors 230 through 232 is represented with a physical processor to provide specific architecture of the executable instructions and associated status information. 例如,一个虚拟机可具有带有英特尔X86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。 For example, a virtual machine may have a virtual processor with Intel X86 processors characteristic, whereas another virtual processor may be a PowerPC processor having a characteristic. 本例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。 In this embodiment a virtual processor may be mapped to the logical processors of the computer system, such that the instructions virtual processors will be backed by logical processors. 如此,在这些示例实施例中,多个虚拟处理器可以同时执行,而同时例如另一逻辑处理器正执行系统管理程序指令。 Thus, in these exemplary embodiments, a plurality of virtual processors can be performed simultaneously, for example, while another logical processor is executing instructions hypervisor. 一般而言,且如图所示,分区中的虚拟处理器、各种VCS以及存储器的组合可被认为是虚拟机,如虚拟机240或242。 In general, and as illustrated, a virtual partition processors, memory, and various combinations of VCS may be considered a virtual machine such as virtual machine 240 or 242.

[0038] -般而言,客操作系统220到222可包括诸如,例如,来自Microsof^iAppk®、 开放源代码社区等等的操作系统之类的任何操作系统。 [0038] - In general, guest operating systems 220-222 may include information such as, for example, any operating system from the operating system or the like Microsof ^ iAppk®, like the open source community. 客操作系统可包括用户/内核操作模式,并且可具有能包括调度器、存储器管理器等的内核。 The guest operating systems may include user / kernel modes of operation, and may have a core can include a scheduler, memory manager and the like. 内核模式可包括逻辑处理器中的执行模式,该执行模式授予对至少特权处理器指令的访问。 Kernel mode may include a logic processor execution mode, the execution mode granted access to at least privileged processor instructions. 每一客操作系统220到222 可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用以及客操作系统本身。 Each guest operating system 220-222 may have an associated file system, the file system storage such as terminal servers, electronic commerce servers, email servers, etc., and the guest operating system itself. 客操作系统220-222可以调度线程来在虚拟处理器230-232上执行,并可以实现这样的应用程序的实例。 The guest operating systems 220-222 can schedule threads to execute on the virtual processors 230-232, and can be achieved Examples of such applications.

[0039] 现在参考图4,所示是可用于实现虚拟机的可替代体系结构。 [0039] Referring now to Figure 4, shown is an alternative architecture for implementing a virtual machine. 图4描绘了类似于图3的组件,但在该示例实施例中,系统管理程序202可包括虚拟化服务提供者228和设备驱动程序224,并且父分区204可包含配置实用程序236。 4 depicts an assembly similar to Figure 3, but in this exemplary embodiment, the hypervisor 202 may include a virtualization service provider 228 and device drivers 224, 204 and the parent partition 236 may include a configuration utility. 在该体系结构中,系统管理程序202 可执行与图2中的系统管理程序202相同或相似的功能。 In this architecture, the hypervisor 202 can perform the same as hypervisor 202 in FIG. 2 or similar functions. 图4中的系统管理程序202可以是独立的软件产品、操作系统的一部分、被嵌入在主板的固件内,或者系统管理程序202的一部分可以由专用集成电路来实现。 Hypervisor 202 in Figure 4 may be a stand alone software product, part of an operating system, embedded within firmware of the motherboard, or a portion of hypervisor 202 may be implemented by ASIC. 在该示例中,父分区204可具有可用于配置系统管理程序202的指令,然而,硬件访问请求可由系统管理程序202来处理而非传递到父分区204。 In this example, the parent partition 204 may have instructions may be used to configure the hypervisor 202, however, the system hardware access request may be processed instead of the hypervisor 202 is transmitted to the parent partition 204.

[0040] 现在参考图5,计算机100可包括被配置成向连接的客户端提供远程桌面服务的电路。 [0040] Referring now to Figure 5, the computer 100 may include a circuit configured to provide services to the remote desktop client connections. 在一示例实施例中,所描绘的操作系统400可直接在硬件上执行,或者客操作系统220或222可以由诸如VM216或VM218等虚拟机来实现。 In an exemplary embodiment, depicted in the operating system 400 may be performed directly on the hardware, or the guest operating system 220 or 222 may be realized by such as VM216 VM218 or virtual machine. 底层硬件208、210、234、212和214在所示类型的虚线中指示以标识该硬件可被虚拟化。 208,210,234,212 and 214 are indicative of the underlying hardware to identify the hardware virtualization may be of the type shown in dashed lines.

[0041] 远程服务可被提供给诸如客户端401等至少一个客户端(尽管描绘了一个客户端,但远程服务可被提供给更多的客户端)。 [0041] The remote service can be provided to at least one client such as client 401, etc. (Although depicted as a client, but the remote service may be provided to more clients). 示例客户端401可包括由被配置成将用户输入定向到远程服务器会话并显示该会话生成的用户界面信息的硬件来实现的计算机终端。 Examples of client 401 may be configured to include a user input directed to the remote computer terminal server session and displays the generated session information to the user interface hardware implementation. 在另一实施例中,客户端401可以由一计算机来实现,该计算机包括与图1的计算机100中的元件类似的元件。 In another embodiment, the client 401 may be implemented by a computer which includes a computer 100 in FIG. 1 element similar elements. 在该实施例中,客户端401可包括被配置为实现操作系统的电路以及被配置为模拟终端的功能(例如,可由一个或多个逻辑处理器102执行的远程桌面客户端应用)的电路。 In this embodiment, the client 401 may include an operating system configured to implement a circuit, and is configured to simulate the function of the terminal (e.g., by one or more logical processors 102 remote desktop client application executed) circuit. 本领域技术人员能够理解,被配置为实现操作系统的电路也可以包括被配置为模拟终端的电路。 Those skilled in the art will appreciate that the operating system is configured to implement the circuit may also be configured to include an analog circuit terminal.

[0042] 每一连接的客户端可具有允许该客户端访问存储在计算机100上的数据和应用的会话(如会话404)。 [0042] each connection may have to allow the client session data and application access to the client 100 stored on a computer (e.g., session 404). 一般而言,应用和某些操作系统组件可被加载到分配给会话的存储器区域中。 In general, some applications and operating system components may be loaded into the memory assigned to the session area. 由此,在某些情况下,某些OS组件可被派生N次(其中N表示当前会话数)。 Thus, in some cases, certain components may be derived OS N times (where N represents the number of the current session). 这些各种OS组件可向操作系统内核418请求服务,操作系统内核例如能够管理存储器;方便盘读/写;以及配置来自每一会话的线程来在逻辑处理器102上执行。 These various components may request to OS operating system kernel 418 service, for example, the operating system kernel memory management; facilitate disk read / write; and from each session thread configuration is executed on a logical processor 102. 可被加载到会话空间的某些示例子系统可包括生成桌面环境的子系统、跟踪桌面内的鼠标移动的子系统、 将图标上的鼠标点击转换成实现程序实例的命令的子系统等等。 Some examples may be loaded into the subsystem may include a session space generation subsystem desktop environment, track mouse movement within the desktop subsystems that translate a mouse click on an icon into commands subsystem instance of a program and the like. 实现这些服务,例如跟踪鼠标移动,的进程用与该会话相关联的标识符来标记,并且被加载到分配给该会话的存储器区域中。 These services are implemented, for example, track mouse movement, a process with an identifier associated with the session marked, and loaded into the memory area assigned to the session.

[0043] 会话可以由例如进程等会话管理器416来生成。 [0043] The session may be generated by other processes, for example, the session manager 416. 例如,会话管理器416可以通过如下方式来初始化和管理每一远程会话:为会话空间生成会话标识符;向会话空间分配存储器;以及在分配给会话空间的存储器中生成系统环境变量和子系统进程的实例。 For example, session manager 416 may initialize and manage each by way of a remote session: generate a session identifier for the session space; allocating memory space to a session; and generate system environment variables and process sub-memory assigned to the session in the space instance. 会话管理器416可在操作系统400接收到对远程桌面会话的请求时被调用。 The session manager 416 can be invoked when the operating system requests to remote desktop session received 400.

[0044] 连接请求可首先由例如远程桌面协议(RDP)栈等传输栈410来处理。 [0044] First, a connection request can be processed by, for example, a Remote Desktop Protocol (RDP) stack transport stack 410 and the like. 传输栈410 指令可配置逻辑处理器102来监听特定端口上的连接消息,并将这些消息转发到会话管理器416。 Transport stack 410 may be configurable logic instruction processor 102 to listen for connections on a specific port of the message, and forwards the message to the session manager 416. 当生成会话时,传输栈410可为每一会话实例化远程桌面协议栈实例。 When generating a session, the transport stack 410 may stack instance for each instance of a remote desktop protocol session. 栈实例414 是可为会话404生成的示例栈实例。 Examples of the stack 414 is a stack instance 404 as an example of the generated session. 一般而言,每一远程桌面协议栈实例可被配置成将输出路由到相关联的客户端,并将客户端输入路由到用于适当的远程会话的环境子系统444。 Generally, each remote desktop protocol stack instance can be configured to route the output to an associated client, client input and routed to the appropriate subsystem for environment 444 remote sessions.

[0045] 如图所示,在一实施例中,应用448 (尽管示出了一个,但其他也可执行)可执行并生成位数组。 [0045] As shown, in one embodiment, the application 448 (although one is shown, but also execute other) execute and generate a bit array. 数组可由图形接口446来处理,图形接口进而可渲染可被存储在存储器中的位图,如像素值阵列。 Array may be processed graphics interface 446, graphics interface in turn can render the bitmap may be stored in memory, such as the array of pixel values. 如图所示,可实例化远程显示子系统420,该子系统可捕捉渲染调用, 并通过网络经由用于会话的栈实例414来将该调用发送给客户端401。 As shown, may instantiate the remote display subsystem 420, the rendering subsystem may capture call, and the call instance 414 to send to the client 401 via a stack over the network for the session.

[0046] 除了遥控图形和音频之外,也可实例化即插即用重定向器458以便遥控诸如打印机、mp3播放器、客户端文件系统、CDROM驱动器等不同设备。 [0046] In addition to graphics and remote audio may be instantiated Plug 458 to remotely control the various devices such as a printer redirector, mp3 players, the client file system, CDROM drives. 即插即用重定向器458可从客户端侧组件接收信息,该信息标识了耦合到客户端401的外围设备。 Plug redirector 458 may receive information from the client-side assembly, the information identifying the peripheral device coupled to the client 401. 即插即用重定向器458然后可配置操作系统400来加载用于客户端401的外围设备的重定向设备驱动程序。 Plug 458 may then configure the redirector 400 to load the operating system device driver for a peripheral device to redirect client 401. 重定向设备驱动程序可接收来自操作系统400的访问外围设备的调用,并通过网络将该调用发送到客户端401。 Redirecting device driver can receive calls from the operating system to access the peripheral devices 400, and the call is sent to the client 401 via the network.

[0047] 如上所讨论的,客户端可使用诸如远程桌面协议(RDP)等用于提供远程呈现服务的协议来连接到使用终端服务的资源。 [0047] As discussed above, the client may be used, such as Remote Desktop Protocol (RDP) and other protocols and services for providing telepresence to connect to the terminal resources and services. 当远程桌面客户端经由终端服务器网关连接到终端服务器时,该网关可打开与终端服务器的套接字连接,并重定向远程呈现端口或专用于远程访问服务的端口上的客户端通信。 When the Remote Desktop client connects to a terminal server through a terminal server gateway that opens a socket connection to the terminal server, and redirects telepresence client communication port or a dedicated port on the remote access service. 网关还可使用通过HTTPS传送的终端服务器网关协议来执行与客户端的特定的网关专用交换。 Gateways may also be performed a particular dedicated switch gateway and the client terminal server gateway protocol transmitted over HTTPS.

[0048] 转向图6,所描绘的是包括用于实现远程服务并合并本发明的各方面的电路的计算机系统100。 [0048] Turning to Figure 6, depicted is a remote service and includes various aspects of the circuit of the invention a computer system 100 combined. 如图所示,在一实施例中,计算机系统100可包括类似于图2和图5中所描绘的那些组件,并可实现远程呈现会话。 As shown, in one embodiment, the computer system 100 may include components similar to those of FIGS. 2 and depicted in FIG. 5, and telepresence session. 在本发明的一个实施例中,远程呈现会话可包括控制台会话的各方面,例如使用计算机系统为用户派生的会话以及远程会话。 In one embodiment of the present invention, a remote presentation session may include aspects console session, for example, using the computer system for the user sessions, and remote session derived. 类似于上述内容,会话管理器416可通过启用/禁用各组件以实现远程呈现会话来初始化并管理远程呈现会话。 Similar to the above, the session manager 416 can enable / disable individual components to telepresence session to initialize and manage telepresence session.

[0049] 可被加载到远程呈现会话中的一组组件是启用高保真遥控的控制台组件,即利用了3D硬件所渲染的3D图形和2D图形的组件。 [0049] The presentation may be loaded into the remote session is a set of components to enable high-fidelity remote console components, i.e. components utilizing 3D graphics hardware rendered 3D and 2D graphics.

[0050] 3D硬件所渲染的3D/2D图形可使用驱动程序模型来访问,该驱动程序模型包括用户模式驱动程序522、API520、图形内核524以及内核模式驱动程序530。 [0050] 3D rendering hardware 3D / 2D graphics can be used to access the driver model, the driver model includes a user mode driver 522, API520, graphics core 524 and the kernel mode driver 530. 应用448 (或诸如用户界面等生成3D图形的任何其他进程)可生成API构造并将其发送到诸如来自微软@的0化6(^30等应用编程接口520 (API)。API520进而可与用户模式驱动程序522通信, 用户模式驱动程序522可生成在被表示为顶点和常量的计算机图形中使用的例如基本几何形状等图元,这些图元被用作用于其他形状的构件块,并将这些图元存储在例如存储器页等缓冲区中。在一个实施例中,应用448可以声明它将如何使用该缓冲区,例如它将在缓冲区中存储什么类型的数据。诸如视频游戏等应用可使用动态缓冲区来存储用于化身的图元,并可使用静态缓冲区来存储诸如表示建筑物或森林等将不常改变的数据。 Application 448 (such as a user interface or any other like processes generate 3D graphics) may be configured to generate and send to the API, such as from Microsoft @ 0 of 6 (^ 30, application programming interface 520 (API) .API520 user may turn communication mode driver 522, user mode driver 522 may generate computer graphics is represented as vertices and using constants in other geometric shapes such as basic elements, those elements are used as building blocks of other shapes, and these FIG element stored in a memory, for example, page buffers and the like. in one embodiment, the application 448 may declare how it is to use the buffer, such as what type of data it is stored in the buffer. applications such as video games and the like may be used FIG buffer to store dynamic metadata for the avatar, and can be used as buffer to store static data representing infrequently changing other buildings or forest.

[0051] 继续驱动程序模型的描述,应用可用图元填充缓冲区并发出执行命令。 Description [0051] The driver model to continue the application may issue primitives to fill the buffer and executes the command. 当应用发出执行命令时,缓冲区可由内核模式驱动程序530追加到运行列表,并由图形内核调度器528来调度。 When the application execution command issued, the buffer 530 by the kernel mode driver is added to the run list, by the graphics kernel scheduler 528 schedules. 例如应用或用户界面等每一图形源可具有一上下文及其自己的运行列表。 Each graphics application, for example, the source or the like may have a user interface context and its own run list. 图形内核524可被配置成调度各个上下文来在图形处理单元112上执行。 Graphics core 524 may be configured to schedule the respective context to execute on the graphics processing unit 112. GPU调度器528可由逻辑处理器102执行,并且调度器528可向内核模式驱动器530发出命令来渲染缓冲区的内容。 GPU scheduler 528 may perform logical processor 102, and scheduler 528 may issue a command to the kernel mode driver 530 to render the contents of the buffer. 栈实例414可被配置成接收命令并通过网络将缓冲区的内容发送到客户端401,在客户端401处,缓冲区可由客户端的GPU来处理。 Stack instance 414 can be configured to receive a command sent over the network and the contents of the buffer to the client 401 at the client 401, the buffer of the GPU by the client process.

[0052] 现在所示的是结合调用远程呈现服务的应用所使用的经虚拟化的GPU的操作的示例。 [0052] is an example of the operation of combined call telepresence services through virtualization of the GPU used by the application shown now. 参考图6,在一实施例中,虚拟机会话可由计算机100生成。 Referring to FIG 6, in one embodiment, the virtual machine 100 may then generate a computer. 例如,会话管理器416可由逻辑处理器102执行并且可初始化包括特定远程组件的远程会话。 For example, session manager 416 and executed by logical processor 102 may initialize a particular remote session includes remote components. 在该示例中,所派生的会话可包括内核418、图形内核524、用户模式显示驱动程序522和内核模式显示驱动程序530。 In this example, the derived session may include a kernel 418, a graphics kernel 524, a user mode display driver 522 and kernel-mode display driver 530. 用户模式驱动程序522可生成可被存储在存储器中的图元。 User mode driver 522 may generate a map may be stored in a memory element. 例如,API520可包括可被展示给诸如用户界面等用于操作系统400或应用448的进程的接口。 For example, API520 may comprise an interface may be presented to a user interface, etc., such as a process for operating system 400 or the application 448. 进程可向API 420发送高级API命令,如点列表(PointList)、线列表(LineList)、线带(LineStrip)、 三角形列表(TriangleList)、三角形带(TriangleStrip)、或三角形扇(TriangleFan)。 Process may send high-level API 420. API command, such as a list of points (PointList), the line list (LineList), tape (LineStrip), triangle list (TriangleList), triangle strip (TriangleStrip), or a triangle fan (TriangleFan). API520可接收这些命令,并将其转换成用于用户模式驱动程序522的命令,用户模式驱动程序522然后可生成顶点并将其存储在一个或多个缓冲区中。 API520 these commands may be received, and converts it to a driver command for the user mode 522, the user mode driver 522 then generate vertices and stored in one or more buffers. GPU调度器528可运行并确定渲染缓冲区的内容。 GPU scheduler 528 can run and determine the contents of the buffer rendering. 在该示例中,可捕捉对服务器的图形处理单元112的命令,并且可将缓冲区的内容(图元)经由网络接口卡114发送到客户端401。 In this example, the server can capture command to the graphics processing unit 112, and the contents of the buffer (primitives) can be sent to the client 401 via the network interface card 114. 在一个实施例中,API可由各组件能与其接口的会话管理器416来展示,以确定虚拟GPU是否可用。 In one embodiment, the API may be capable of assembly by the session manager 416 interfaces to its display, is available to determine the virtual GPU.

[0053] 在一实施例中,诸如图3或图4的虚拟机240等虚拟机可被实例化,并且虚拟机可担当用于操作系统400的执行的平台。 [0053] In one embodiment, such as in FIG. 3 or FIG. 4, the virtual machine 240 and the like may be instantiated virtual machine and the virtual machine can act as a platform for execution of the operating system 400. 在本例中,客操作系统220可具体化操作系统400。 In the present embodiment, the guest operating system 220 operating system 400 may be embodied. 虚拟机可在通过网络接收到连接请求时被实例化。 Virtual machine can be instantiated upon reception of a connection request via the network. 例如,父分区204可包括传输栈410的实例,并且可被配置成接收连接请求。 For example, the parent partition 204 may include a transmission stack instance 410, and may be configured to receive a connection request. 父分区204可响应于连接请求连同包括实现远程会话的能力的客操作系统一起初始化虚拟机。 The parent partition 204 may include a response to the connection request along with the ability to achieve remote session initialization of the guest operating system with virtual machines. 连接请求然后可被传递给客操作系统220的传输栈410。 Then the connection request may be passed to the guest operating system of the transport stack 410 220. 在本例中,每一远程会话可在由其自己的虚拟机执行的操作系统上实例化。 In the present embodiment, each remote session may be instantiated on its own operating system, virtual machine executing.

[0054] 在一个实施例中,可实例化虚拟机,并且可执行具体化操作系统400的客操作系统220。 [0054] In one embodiment, the guest operating system, a virtual machine can be instantiated embodiment, and may perform specific operating system 400 220. 类似于上述内容,虚拟机可在通过网络接收到连接请求时被实例化。 Similar to the above, a virtual machine can be instantiated upon reception of a connection request via the network. 远程会话可由操作系统生成。 Remote session generated by the operating system. 会话管理器416可被配置成确定该请求是针对支持3D图形渲染的会话的, 并且会话管理器416可加载控制台会话。 Session manager 416 may be configured to determine that the request is for rendering 3D graphics support session, and the session manager 416 can load a console session. 除了加载控制台会话之外,会话管理器416可为该会话加载栈实例414'并将系统配置成捕捉由用户模式显示驱动程序522生成的图元。 In addition to loading the console session, the session manager 416 can load a stack instance 414 'configured to capture and display system by a user mode driver 522 primitives generated for the session.

[0055] 用户模式驱动程序522可生成可被捕捉并存储在传输栈410可访问的缓冲区中的图元。 [0055] The user mode driver 522 may be generated and may be captured in FIG transport stack 410 may access the buffer in the memory element. 内核模式驱动程序530可将缓冲区追加到应用的运行列表,并且GPU调度器528可运行并确定何时对缓冲区发出渲染命令。 Kernel mode driver buffer 530 may be added to the list of applications running, and GPU scheduler 528 may determine when to run and rendering commands issued to the buffer. 当调度器528发出渲染命令时,该命令可由例如内核模式驱动程序530捕捉并经由栈实例414'发送到客户端401。 When the scheduler 528 issuing rendering commands, the commands may e.g. kernel mode driver 530 via a stack instance 414 and capture 'to the client 401.

[0056] GPU调度器528可执行并确定发出渲染缓冲区的内容的指令。 [0056] GPU scheduler 528 may perform rendering and issues an instruction to determine the contents of the buffer. 在本例中,与渲染指令相关联的图元可经由网络接口卡114发送到客户端401。 In the present embodiment, FIG associated with rendering command element 401 may be sent to the client 114 via a network interface card.

[0057] 在一实施例中,至少一个内核模式进程可由至少一个逻辑处理器112执行,且至少一个逻辑处理器112可同步渲染存储在不同缓冲区中的顶点。 [0057] In one embodiment, at least one kernel mode process may execute at least one logical processor 112, and at least one logical processor 112 may be stored in different synchronous rendering the vertex buffer. 例如,可类似于操作系统调度器来操作的图形处理调度器528可调度GPU操作。 For example, a graphics processing may be similar to the operating system scheduler scheduler 528 may schedule operation of GPU operation. GPU调度器528可将单独的顶点缓冲区合并成正确的执行次序,使得客户端401的图形处理单元以允许它们被正确地渲染的次序来执行命令。 GPU scheduler 528 can be combined into a single vertex buffer correct execution order, so that the client graphics processing unit 401 to allow the order that they are correctly rendered to execute the command.

[0058] 诸如视频游戏等进程的一个或多个线程可映射多个缓冲区且每一线程可发出绘制命令。 [0058] can map multiple buffers such as a video game or processes such as multiple threads and each thread may issue drawing commands. 顶点的标识信息、例如为每个缓冲区、每个顶点或缓冲区中的每批顶点生成的信息可以被发送给GPU调度器528。 Identification information of vertices, each buffer, for example, each batch of the vertex information to generate vertex or each buffer may be transmitted to a GPU scheduler 528. 信息可与关联于来自相同的或其他进程并用于同步各个缓冲区的渲染的顶点的标识信息一起存储在表中。 Information may be associated with the same or other processes from the identification information and the vertex of each synchronization buffer for rendering is stored in a table.

[0059] 诸如文字处理程序等应用可执行并声明例如两个缓冲区一一一个用于存储用于生成3D菜单的顶点,而另一个存储用于生成将填充该菜单的字母的命令。 [0059] application such as a word processing program and executable statement, for example, two buffer for storing one hundred and eleven vertices for generating 3D menu, the menu will fill the letters used to generate another storage command. 应用可映射缓冲区,并发出绘制命令。 Applications can be mapped buffer and issue drawing commands. GPU调度器528可确定执行两个缓冲区的次序,使得菜单与字母一起以看上去令人满意的方式来渲染。 GPU scheduler 528 may determine the order of execution of two buffers, so that the menu appears along with the letters to render a satisfactory manner. 例如,其他进程可以在相同或基本相似的时间发出绘制命令,并且如果顶点不是同步的,则来自不同进程的不同线程的顶点可能在客户端401上异步地渲染,从而使得所显示的最终图像看上去是混乱或混杂的。 For example, other processes may issue drawing commands in the same or substantially similar time, and if the vertex is not synchronized, the apex of different threads in different processes from a possible rendered on client 401 asynchronously, so that the final displayed image See It is mixed up or confused.

[0060] 可使用批量压缩器450在将数据流发送到客户端401之前压缩图元。 [0060] 450 may be sent using the bulk to the compressor before the compressed FIG client 401 yuan in the data stream. 在一实施例中,批量压缩器450可以是栈实例414的用户模式(未示出)或内核模式组件,并且可被配置为在被发送到客户端401的数据流中查找相似的模式。 In one embodiment, the bulk compressor 450 may be a user-mode stack instance 414 (not shown) or a kernel-mode component, and may be configured to look at the data is sent to the client 401 similar to the flow pattern. 在该实施例中,由于批量压缩器450从多个应用接收顶点流而不是接收多个API构造,因此批量压缩器450具有较大的顶点数据集来筛选,以便找到压缩机会。 In this embodiment, since the bulk compressor 450 to filter the plurality of applications it receives vertex stream instead of receiving a plurality of configuration API, bulk compressor 450 having a large data set of vertices from the compressor in order to find opportunities. 即,由于用于多个进程的顶点而非不同的API调用被遥控,因此存在批量压缩器450能在给定流中找到相似模式的更大机会。 That is, since a plurality of processes and not for the vertex of different API call is remote, so the bulk compressor 450 greater chance to find similar patterns in a given stream is present.

[0061] 在一实施例中,图形处理单元112可被配置成对存储器使用虚拟寻址而不是物理地址。 [0061] In one embodiment, the graphics processing unit 112 may be configured to use virtual memory addressing instead of physical addresses. 由此,被用作缓冲区的存储器页可从视频存储器分页到系统RAM或盘。 Accordingly, the buffer memory is used as a pageable pages from the video memory to the System RAM or disk. 栈实例414' 可被配置成获得缓冲区的虚拟地址,并在捕捉到来自图形内核528的渲染命令时发送来自该虚拟地址的内容。 Examples of stack 414 'may be configured to obtain a virtual address of the buffer, and transmits the content from the virtual address when capturing the rendering commands from the graphics core 528.

[0062] 可配置操作系统400,例如可加载各种子系统和驱动程序来捕捉图元并将其发送到诸如客户端401等远程计算机。 [0062] The operating system 400 may be configured, for example, load drivers and various subsystems to capture and transmit the primitives to the client 401, such as a remote computer and the like. 类似于上述内容,会话管理器416可由逻辑处理器102执行并且包括特定远程组件的会话可被初始化。 Similar to the above, the session manager 416 and executed by the logic processor 102 includes a session-specific remote components may be initialized. 在该示例中,所派生的会话可包括内核418、 图形内核524、用户模式显示驱动程序522和内核模式显示驱动程序530。 In this example, the derived session may include a kernel 418, a graphics kernel 524, a user mode display driver 522 and kernel-mode display driver 530.

[0063] 图形内核可调度GPU操作。 [0063] GPU graphics core operation may be scheduled. GPU调度器528可将单独的顶点缓冲区合并成正确的执行次序,使得客户端401的图形处理单元以允许它们被正确地渲染的次序来执行命令。 GPU scheduler 528 can be combined into a single vertex buffer correct execution order, so that the client graphics processing unit 401 to allow the order that they are correctly rendered to execute the command.

[0064] 用于实现上文所提及的分区的所有这些方案只是示例性实现,且此处没有任何东西应该解释为将本公开限制为任何特定虚拟化方面。 All these solutions [0064] for implementing the above mentioned partitions are merely exemplary implementation, without anything herein should be interpreted as limiting the disclosure to any particular virtualization aspect.

[0065] 虚拟化环境中的GPU [0065] GPU virtualization environments

[0066] 图形处理单元或GPU是从微处理器卸下3D图形渲染这一负担的专用处理器。 [0066] The graphics processing unit or GPU rendering 3D graphics is remove this burden from the microprocessor to a dedicated processor. GPU 可以通过实现各种图元操作来提供图形渲染中常用的数学运算的有效处理。 It may provide effective treatment GPU graphics rendering commonly used in the mathematical operation implemented by operating the various elements. 与主CPU相比,GPU可以提供更快的图形处理。 Compared with the main CPU, GPU can provide faster graphics processing. GPU也可以称为图形加速器。 GPU graphics accelerator can also be called.

[0067] 图形应用可以使用应用编程接口(API)来配置图形处理流水线并且提供在GPU 上执行应用专用顶点和像素处理的着色器程序。 [0067] The graphics application may use an application programming interface (API) to configure the graphics processing pipeline and provide application-specific program executing shader vertex and pixel processing on the GPU. 许多图形应用都使用诸如微软的DirectX或OpenGL标准之类的API与GPU对接。 Many graphics applications using the API and GPU docking such as Microsoft's DirectX or OpenGL standard and the like.

[0068] 如上所述,虚拟化的运行方式是,通过给每个虚拟机呈现虚拟设备并且将其相应的操作在系统管理程序或虚拟机监控程序中进行组合来复用物理硬件,使得硬件资源在被使用的同时保持每个虚拟机都具有完整独立的硬件资源的感知。 [0068] As described above, the virtual operating mode is presented by a virtual device for each virtual machine and its corresponding operation are combined in a hypervisor or virtual machine monitor program multiplexed with the physical hardware, such hardware resources held at the same time used by each virtual machine has a complete perception of independent hardware resources. 如所讨论的那样,虚拟机监控程序(VMM)或系统管理程序是可以将单个物理机器分区成多个虚拟机的软件系统。 As discussed, the virtual machine monitor (VMM) or hypervisor is a single physical machine may be partitioned into a plurality of virtual machine software.

[0069] 虚拟机可以通过虚拟GPU设备驱动程序渲染成虚拟设备。 [0069] The virtual machine can be rendered into GPU virtual equipment by a virtual device driver. 实际的渲染可以通过如下方式完成:使用另一虚拟机(父虚拟机)中或被许多客虚拟机共享的远程机(其充当图形服务器)上的单个或多个GPU控制器对渲染进行加速。 The actual rendering can be completed in the following manner: using another virtual machine (parent virtual machine) or in a number of guest virtual machine shared remote machine (which acts as a graphics server) single or multiple controllers on the GPU to accelerate rendering. 父虚拟机上的图像捕捉组件可以检索桌面图像的快照。 Image capture component on the parent virtual machine can retrieve a snapshot of the desktop image. 所捕捉的图像在传送到客户机之前可被任选地压缩和编码。 The captured image may be optionally transmitted to the client prior to compression and encoding. 压缩和编码可在父虚拟机或者子虚拟机或客虚拟机上发生。 Compression and encoding a parent or child virtual machine in a virtual machine or guest virtual machine occur. 可以使用诸如远程桌面协议(RDP)之类的远程呈现协议来从远程客户端连接到虚拟机并用于传送桌面图像。 You may be used such as a remote Remote Desktop Protocol (RDP) or the like presentation protocol from a remote client to connect to the virtual machine and for transmitting the desktop image. 通过这种方式,远程用户可以通过远程登陆体验诸如WindowsAero之类的图形用户界面以及执行3D应用和多媒体。 In this way, the remote user can log in to experience a graphical user interface such as WindowsAero like a remote and executing 3D applications and multimedia.

[0070] 虚拟化方案可以基于两种模式之一或二者。 [0070] virtualization scheme may be based on one or both of the two modes. 在一个实施例中,用户模式驱动程序可以提供在图形栈中较高的虚拟化边界,并且内核模式驱动程序可以提供在图形栈中较低的虚拟化边界。 In one embodiment, the user mode driver may be provided in graphical higher virtualization stack boundary and kernel-mode drivers may be provided in a lower graphical virtualization stack boundary. 在一个实施例中,虚拟GPU子系统可以包括进一步包括下列项目的显示驱动程序:在虚拟机上执行的用户模式和内核模式组件;以及在父分区上执行的渲染/捕捉/压缩过程的渲染组件。 In one embodiment, the virtual GPU subsystem may further include a display driver comprising the following items: user mode and kernel mode components executing on the virtual machine; and performing rendering on the parent partition / Capture / compression process render component . 在一实施例中,显示驱动程序可以是Windows显示驱动程序模型(WDDM)驱动程序。 In one embodiment, the display driver can be displayed Windows Driver Model (WDDM) driver.

[0071] 图10示出了用于将虚拟GPU实现为VDI场景中的组件的虚拟机场景的示例性实施例。 [0071] FIG. 10 illustrates an exemplary embodiment of a virtual scene VDI GPU implemented as a component of the virtual machine scene. 在该示例中,VDI可以为每个子虚拟机1010提供3D图形能力,所述子虚拟机1010 由服务器平台上的系统管理程序1020来实例化。 In this example, the VDI 1010 provides 3D graphics capabilities may for each sub virtual machine, the virtual machine 1010 by the sub-system management program on the server platform 1020 is instantiated. 每个子虚拟机1010都可以加载虚拟GPU 驱动程序1040。 Each sub-VM 1010 can be loaded virtual GPU driver 1040. 可以给系统填充可从父分区或根分区1000访问的GPU加速器1030。 GPU accelerators may be filled accessed from the parent partition 1030 or 1000 to the system root partition. 父分区或根分区1000上的物理GPU1030(亦称GVM--图形虚拟机)可以被不同的子虚拟机1010共享以执行图形渲染操作。 Physical GPU1030 the parent partition 1000 or partition root (also known GVM-- graphical virtual machine) can be a different guest VMs 1010 to perform graphics rendering operations to share.

[0072] 虚拟机GPU子系统可以虚拟化物理GPU并且为所述虚拟机提供经加速的渲染能力。 [0072] GPU virtual machine can virtualize physical subsystems and providing accelerated GPU rendering of the virtual machine capability. 在一个实施例中,虚拟GPU驱动程序可以是WDDM驱动程序1040。 In one embodiment, the virtual GPU driver WDDM driver 1040 can be. 该驱动程序可以将相应的命令和数据遥控到父分区以用于渲染。 The driver can use the remote commands and data corresponding to a parent partition for rendering. 可以是渲染/捕捉/压缩子系统1050 -部分的渲染进程可以在GPU上执行相应的渲染。 May render / capture / compression subsystem 1050-- part of the rendering process can be performed corresponding rendering on the GPU. 对于每个虚拟机,可以在主分区或父分区1000 上提供相应的渲染/捕捉/压缩组件1050。 For each virtual machine may provide rendering / or capture on the primary partition parent partition 1000 / compression assembly 1050. WDDM驱动程序允许视频存储器被虚拟化,其中视频数据被从视频存储器中按页传入系统RAM。 WDDM driver allows the video memory is virtualized, wherein the video data is page by page into the system from the video RAM memory.

[0073] 根据运行在子虚拟机上的图形源子系统的请求,渲染/捕捉/压缩子系统可以适当地返回经压缩或未经压缩的屏幕更新。 [0073] The request to run a graphics source subsystem on the child virtual machine, rendering / capture / compression subsystem may return the updated appropriately compressed or non-compressed screen. 这些屏幕更新可以基于改变的矩形大小和内容。 These screens can be updated based on the changed rectangle size and content. 虚拟GPU驱动程序可以支持诸如VISTA和WINDOWS7之类的常见操作系统。 Virtual GPU driver can support common operating systems such as VISTA WINDOWS7 and the like.

[0074] 如所讨论的那样,一些实施例可以合并WDDM驱动程序。 [0074] As discussed, some embodiments may be combined WDDM driver. WDDM驱动程序运行得使得就好像GPU是被配置为基于存储在直接存储器访问(DMA)缓冲区中的命令来绘制视频存储器中像素的设备。 WDDM driver that runs like GPU is configured based on the command stored in the direct memory access (DMA) buffer to draw pixels in the video memory apparatus. DMA缓冲区信息可以被发送给GPU,GPU以提交的顺序异步地处理该数据。 DMA buffer information may be sent to GPU, GPU to process the data submitted in order asynchronously. 当每个缓冲区完成时,通知运行时并且提交另一缓冲区。 As each buffer is completed and submitted to notify the other runtime buffer. 通过执行该处理循环,视频图像可以被处理并且最终在用户屏幕上渲染。 By performing this processing loop, the video image may be processed and eventually rendered on the user's screen. 本领域的技术人员能够认识到,所公开的主题在使用OpenGL或其他产品的系统中实现。 Those skilled in the art will recognize that the disclosed subject matter in a system using OpenGL or other products.

[0075] DMA缓冲区调度可以由内核模式中的GPU调度器组件来驱动。 [0075] DMA buffers may be scheduled by the kernel mode driver GPU scheduler component. GPU调度器可以确定:哪些DM缓冲区以及以何种顺序被发送给GPU。 GPU scheduler may determine: which DM is transmitted to GPU buffer and in what order.

[0076] 用户模式驱动程序可以被配置为把由3D运行时API发出的图形命令转换成硬件专用的命令并且将这些命令存储在命令缓冲区中。 [0076] The user-mode driver may be configured to convert the operation from the 3D graphics commands issued by an API into hardware-specific commands and the command stored in the command buffer. 然后,该命令缓冲区被提交给运行时,该运行时进而调用内核模式驱动程序。 Then, when the command buffer is submitted to run, and then call the kernel-mode drivers that run. 然后,内核模式驱动程序可以基于命令缓冲区的内容来构造DMA缓冲区。 Then, the kernel mode driver may be based on the contents of the command buffer to the DMA buffer configuration. 当DMA缓冲区该被处理时,GPU调度器可以调用内核模式驱动程序,该内核模式驱动程序处理当前将缓冲区提交给GPU硬件的所有细节。 When the DMA buffer is processed, GPU scheduler may call a kernel mode driver, the kernel-mode driver to handle the current buffer to submit all the details of the GPU hardware.

[0077] 内核模式驱动程序可以与显示设备的物理硬件对接。 [0077] The kernel mode driver may interface with the physical hardware display device. 用户模式驱动程序包括硬件专用的知识,并且可以构建硬件专用的命令缓冲区。 User mode driver includes specific hardware knowledge, and may be constructed of hardware specific command buffer. 然而,用户模式驱动程序不直接与硬件对接,并且可以在该任务方面依靠内核模式驱动程序。 However, the user mode driver does not dock directly with the hardware, and can rely on kernel-mode drivers in the mandate. 内核模式驱动程序可以对显示硬件进行编程,并且致使显示硬件执行DMA缓冲区中的命令。 Kernel-mode drivers may be programmed to display hardware, and causes the display hardware executing DMA buffer command.

[0078] 在一个实施例中,与主分区或父分区的所有交互都可以通过内核模式驱动程序来处理。 [0078] In one embodiment, all interaction with the primary partition or parent partition can be handled by the kernel mode driver. 内核模式驱动程序可以将DMA缓冲区信息发送给父分区,并且在DMA缓冲区已经被处理时可以进行到内核模式API运行时中的必要回调。 Kernel-mode drivers can send information to the DMA buffer parent partition, and the necessary correction can be performed in the kernel mode at runtime API DMA buffer it has been processed. 当运行时创建图形设备上下文时, 运行时可以调用用于创建持有渲染状态集合的图形设备上下文的函数。 When creating graphics device context is running, the runtime can call hold function for creating graphics device context rendering state collection. 在一个实施例中, 可以在第一虚拟图形设备被创建时创建到父分区的单个内核模式连接。 In one embodiment, it is possible to create a single parent partition kernel mode virtual connection when the first device pattern is created. 可以与用户模式设备协调来创建随后的图形设备,并且可以由用户模式设备来处理到这些设备的父分区的连接。 May be created with a graphics device subsequent coordination mode user equipment, and may be processed by user-mode device is connected to the parent partition these devices.

[0079] 在另一实施例中,到主分区或父分区的连接可以在每当内核模式驱动程序创建新设备时创建。 [0079], or parent partition to a primary partition connections can be created whenever the kernel mode driver to create a new device in another embodiment. 连接上下文可以创建并存储在每设备的数据结构中。 Connection context may be created and stored in a data structure for each device. 该连接上下文通常可以包括套接字和I/O缓冲区。 The connection context may generally comprise a socket and I / O buffers. 由于与GVM的所有通信都经过内核模式驱动程序,因此该每设备的连接上下文可以有助于保证:命令被路由到主分区或父分区上的正确设备。 Since all communications have been GVM with kernel-mode driver, so that the connection context may help to ensure that each device: the device commands are routed to the correct partition on the primary or parent partition.

[0080] 在一个实施例中,可以在主分区或父分区上为用户模式设备的每个运行实例提供单独的线程。 [0080] In one embodiment, the thread may be provided separately for each instance of user mode of the device operation in the main branch or the parent partition. 该线程可以在应用在子分区上创建虚拟设备时被创建。 The thread can be created when creating a virtual device application on a child partition. 可以提供附加的渲染线程来处理源自子分区上的内核模式的命令(例如,内核模式呈现和鼠标指针活动)。 It may provide additional thread to handle the rendering command from the kernel mode on the child partition (e.g., mouse pointer and kernel mode presentation events).

[0081] 在一个实施例中,父分区上的渲染线程的数目可以保持在最小值以匹配CPU核的数目。 [0081] In one embodiment, the number of rendering thread on the parent partition may be kept to a minimum in order to match the number of CPU cores.

[0082] 当管理GPU时可以执行附加的任务。 [0082] When the GPU can perform additional management tasks. 例如,除了提供图元以外,还可以维护GPU的硬件上下文。 For example, in addition to providing primitive, it also can maintain the hardware of the GPU context. 可以配置像素着色器、顶点着色器、剪辑平面、剪裁矩形以及影响图形流水线的其他设定。 Pixel shader may be configured to, vertex shader, the clipping plane, and other settings affect the cropping rectangle in the graphics pipeline. 用户模式驱动程序还可以确定这些设定的逻辑值以及如何将这些值翻译成物理设定。 User mode driver may also determine the logical values ​​of these settings and how these values ​​are translated into physical configuration.

[0083] 在一个实施例中,用户模式驱动程序可以负责构造硬件上下文和命令缓冲区。 [0083] In one embodiment, the user mode driver can be responsible for the hardware configuration and context command buffer. 内核模式驱动程序可以被配置为将命令缓冲区转换成DM缓冲区,并且在由GPU调度器进行调度时将该信息提供给GPU。 Kernel-mode drivers may be configured to convert the DM command buffer into a buffer, and provides the information to the GPU GPU when scheduled by the scheduler.

[0084] 虚拟GPU可以在若干用户模式和内核模式组件的范围内实现。 [0084] Virtual GPU may be implemented in a range of several user mode and kernel mode components. 在一个实施例中, 可以将虚拟机传输(VMT)用作在所有这些组件的范围内发送和接收请求的协议。 In one embodiment, the virtual machine transmission (the VMT) may be used as the protocol for transmitting and receiving requests within the scope of all these components. VMT可以提供跨两个或更多个分区的模块之间的通信。 VMT may provide communication between the modules across two or more partitions. 由于在每个分区中存在在该所述分区的范围内通信的多个组件,因此可以在这些组件之间定义公共的传输。 Since the plurality of components within communication range of the partition in the presence of in each partition, it is possible to define the common transmission between these components.

[0085] 图7描绘了传统驱动程序中的抽象层以及虚拟GPU驱动程序的一个示例性实施例中的抽象层。 [0085] FIG. 7 depicts a conventional driver abstraction layer, and an exemplary embodiment of the virtual GPU driver abstraction layer. 如传统GPU700那样,父分区600可以被看成是位于驱动程序栈710的底部。 The above conventional GPU700, the parent partition 600 may be seen as the bottom of the stack in the driver 710. 父分区600表示图形硬件,并且就好像GPU存在于虚拟机中那样抽象出传统GPU700的接口。 The parent partition 600 represents graphics hardware, and just like GPU exists in the virtual machine as a traditional GPU700 abstract interface. 虚拟GPU驱动程序由此在驱动程序模型的限制下提供对父分区的访问。 Virtual GPU driver thus providing access to the parent partition within the constraints of driver model.

[0086] 显示驱动程序740可接收GPU专用的命令725,并且可以通过硬件接口被写成硬件专用的并且控制GPU700。 [0086] Display driver 740 may receive a command dedicated GPU 725, dedicated hardware and may be written by the hardware interface and control GPU700. 显示驱动程序740可以对I/O端口进行编程,访问经存储器映射的寄存器,以及以其他方式与GPU设备的低级操作对接。 Display driver 740 may be programmed I / O ports, memory mapped register access, and the lower abutment otherwise operate the device with the GPU. 虚拟GPU驱动程序750可以接收父分区专用的命令735并且可以被写入由父分区600所展示的特定接口。 Virtual GPU driver 750 may receive commands specific parent partition 735 and may be written by the parent partition 600 specific interfaces shown. 在一个实施例中,父分区可以是在不同机器上运行的Direct3D应用,并且父分区可以充当本机地执行Direct3D命令的GPU。 In one embodiment, the parent partition may be Direct3D applications running on different machines, and may serve as a parent partition GPU native Direct3D execute the command. 在该实施例中,用户模式显示驱动程序730从Direct3D运行时705 接收的命令可以以未经修改的形式被发送给父分区600。 In this embodiment, user mode display driver 730 705 received from the Direct3D runtime commands may be transmitted in unmodified form to the parent partition 600.

[0087] 如图8所示,在一个实施例中,子分区800上的Direct3D命令可以在用户模式驱动程序820和内核模式驱动程序830中被编码,并且与数据参数一起被发送给父分区810。 [0087] As shown in FIG. 8, in one embodiment, the command on a child partition Direct3D driver 800 can be encoded program 820 and kernel-mode drivers 830 in the user mode, and transmitted together with the data parameters to parent partition 810 . 在父分区810上,组件可以通过使用硬件GPU来渲染所述图形。 In the parent partition 810, the graphics components may be rendered using hardware GPU.

[0088] 在图9中所示的另一实施例中,子分区800上的Direct3D命令可以发送给用户模式驱动程序820和内核模式驱动程序830。 [0088] In another embodiment shown in FIG. 9, the child partition Direct3D command 800 may be sent to the user mode driver 820 and the kernel mode driver 830. 这些命令可以在内核模式驱动程序830中被解释/调整,并且被放置在内核模式中的DM缓冲区中。 These commands can be interpreted in the driver 830 / adjusted in kernel mode, and is placed in the kernel mode DM buffer. 父分区810可以提供虚拟GPU功能, 并且命令缓冲区可以由用户模式驱动程序820来构造。 Parent partition GPU 810 may provide a virtual function, and the program command buffer 820 may be configured by a user mode driver. 命令缓冲区信息可以被发送给内核模式驱动程序830,在那里,它们可以被转换成DMA缓冲区并且提交给父分区810以供执行。 Command buffer information may be sent to the kernel mode driver 830, where they may be converted into a DMA buffer and submit to the parent partition 810 for execution. 在父分区上,组件可以在硬件GPU上渲染所述命令。 In the parent partition, the assembly can render command hardware GPU.

[0089] 当应用请求执行图形处理函数时,可以使相应的命令和视频数据对命令解释器函数可用。 [0089] When an application requests to perform graphics processing functions, and can command the corresponding command interpreter video data available functions. 例如,独立于硬件的像素着色器程序可以被转换成硬件专用的程序。 For example, hardware-independent pixel shader program can be converted into hardware-specific program. 经翻译的命令和视频数据可以被放置在父分区工作队列中。 The translated commands and video data may be placed in a parent partition the work queue. 然后,该队列可以被处理,并且待处置的DM缓冲区可以被发送给父分区以供执行。 Then, the queue can be processed, and to be disposed of DM buffer may be sent to the parent partition for execution. 当父分区接收到该命令和数据时,父分区可以使用Direct3DAPI来将该命令/数据转换成对父分区的图形硬件特定的形式。 When the parent partition receiving the command and data, may be used Direct3DAPI parent partition to the command / data conversion paired parent partition graphics hardware-specific form.

[0090] 因此,在子分区中可以配备如下的GPU驱动程序:该GPU驱动程序在概念上将每个虚拟机看成是真实的图形驱动程序,但是在现实中致使虚拟机命令被路由到父分区。 [0090] Thus, in the child partitions can be equipped with the following GPU driver: the GPU driver as conceptually each virtual machine is a real graphics driver, but the resulting virtual machine commands are routed to the parent in the real world partition. 在父分区上,图像可以使用真实的GPU硬件来渲染。 On the parent partition image can be used to render actual GPU hardware.

[0091] 在图10中所示的一个说明性的实施例中,可以向虚拟机展示合成3D视频设备,并且虚拟机可以搜索与该视频设备匹配的驱动程序。 [0091] one illustrative embodiment shown in FIG. 10, it is possible to show 3D video synthesizing apparatus to the virtual machine and the virtual machine may search for the device driver to the video matching. 可以配备与该设备匹配的虚拟图形显示驱动程序,该驱动程序可以由虚拟机找到和加载。 Can be equipped with devices to match the virtual graphics display driver, the driver can be found and loaded by the virtual machine. 一旦被加载,则虚拟机就可以确定:其可以执行3-D任务并且将该设备能力展现给可以使用经虚拟化的设备的函数的操作系统。 Once loaded, the virtual machine may determine: it may perform 3-D task and show the device capability to the operating system may use the virtualization function of the device.

[0092] 由虚拟机所接收的命令可以调用虚拟设备驱动程序接口。 [0092] received by the virtual machine commands may invoke the virtual device driver interface. 翻译机制可以将设备驱动程序命令翻译成DirectX命令。 Translation mechanism can translate commands into DirectX device drivers command. 因此,虚拟机认为:其具有对调用DDI和设备驱动程序的真实GPU的访问。 Therefore, the virtual machine that: it has access to the call DDI device driver and real GPU. 到来的设备驱动程序调用被接收和翻译,数据被接收,并且在父分区侧,DDI命令可以被重新创建回到DirectXAPI以在虚拟机上渲染本应渲染的东西。 Device Drivers incoming call is received and translation, data is received, and in the parent partition side, DDI commands can be recreated back DirectXAPI to render this stuff on a virtual machine to be rendered. 在一些实例中,DDI命令到DirectXAPI命令的转换可以是低效的。 In some examples, DDI command to the command conversion DirectXAPI may be inefficient. 在其他实施例中,可以绕开DirectXAPI,并且可以将DDI命令直接转换成主分区上的DDI命令。 In other embodiments, the bypass may be DirectXAPI, and may convert commands directly to DDI DDI command on the primary partition. 在该实施例中, DirectX子系统可以被配置为允许该绕开。 In this embodiment, DirectX subsystem may be configured to allow the bypass.

[0093] 在另一实施例中,仅可建立到父分区的一个连接,并且与图形设备上下文的通信可以在一个通信信道上复用。 [0093] In another embodiment, a connection may be established only parent partition, and may be multiplexed with the communication device context in a communication channel. 尽管通常存在图形设备从子分区到父分区的一一映射,但是在该实施例中,该通信信道不与任何特定图形设备相关联。 Although graphics device typically present from child to parent partition partitions one mapping, but in this embodiment, the communication channel is not associated with any particular graphics device. 可以在发送去往特定设备的命令以前发送"选择设备"令牌。 You may send a "device select" token in the command destined for a particular device before sending. 该"选择设备"令牌指示:所有随后的命令都应当被路由到特定的图形设备。 The "Device Select" token indicates: All subsequent commands are to be routed to a particular graphics device. 当应当将图形命令发送给不同设备时,可以发送随后的"选择设备"令牌。 When the graphics commands should be sent to different devices, then you may send a "Select Device" token.

[0094] 可替代地,在另一实施例中,在父分区上可以仅有一个图形设备可用。 [0094] Alternatively, in another embodiment, a graphics device may only be available on the parent partition. 在此,可以实现设备从子分区到父分区上的设备的多对一映射。 Here, the device may be implemented to one mapping from the sub-partition device on the parent partition. 可以在发送与特定图形设备相关联的命令以前发送正确的GPU状态。 Given the correct state of the GPU command transmitting device associated with a particular pattern previously. 在该场景中,GPU状态不是由父分区而是由子分区来维护。 In this scenario, GPU, but the state is not maintained by the parent partition of the sub-district. 在该实施例中,创造了在子分区上存在多个图形设备上下文的错觉,但是在现实中,所有图形设备上下文都是由父分区上的一个图形设备上下文来处理的,该图形设备上下文在处理与给定子分区图形设备上下文相关联的命令以前接收正确的GPU状态。 In this embodiment, creating the illusion of a plurality of graphics device context in the sub-partitions, but in reality, all the graphics device context is made on a graphics device context to process the parent partition, the graphics device context in given sub-processing command partition device context associated with previously received the correct state GPU.

[0095] 因此在各个实施例中,GPU可以被抽象,并且虚拟机上的设备驱动程序调用可以被发送给父分区,在那里,命令被翻译以使用图形服务器的API。 [0095] Therefore, in various embodiments, the GPU may be abstracted, and device drivers on the virtual machine calls may be sent to the parent partition, where the API command is translated to the graphics server. 在发送给父分区以前,设备驱动程序调用可以在它们被发送给父分区并且被转换成应用级API以前被转换成中间命令和数据。 Before sent to the parent partition, the device driver calls they can be sent to the parent partition and converted into the intermediate data is converted into commands and application-level API previously. 中间阶段可以是实施方式特定的,并且取决于所使用的特定硬件。 Intermediate stages may be implementation-specific, and depends on the particular hardware being used.

[0096] 使用上述技术,可以合成稳定的虚拟GPU,并且只要位于下层的特定的某件硬件满足了最小需求,则给定的虚拟机就不需要关心该底层设备。 [0096] Using the techniques described above, it can be synthesized by the GPU virtual stabilized, and as long as the lower layer located in a particular piece of hardware to meet the minimum requirements, the given virtual machine do not need to care about the underlying device. 例如,在一种情况下,父分区可以使用NVIDIAGPU,并且在另一情况下,父分区可以使用ATI设备。 For example, in one case, the parent partition may be used NVIDIAGPU, and in another case, the parent partition ATI device may be used. 在两种情况任一中,只要底层GPU提供预定的最小的一组能力,则就可以展示一组虚拟能力。 In both cases, any one, as long as the underlying GPU to provide a predetermined minimum set of capabilities, you can show a set of virtual capacity. 在虚拟机上运行的应用就好像WDDM驱动程序具有稳定的一组特性那样运行。 Applications running on the virtual machine as if WDDM driver with a stable set of characteristics that run. 虚拟机可以被保存并且迀移到使用不同GPU的另一系统,而不影响使用GPU服务的应用。 Virtual machines can be saved and moved to Gan different GPU using another system, without affecting applications that use GPU services.

[0097] 在上述GPU场景中,可以使用3D图形。 [0097] In the above scenario GPU, 3D graphics may be used. 3D图形使用通过对三维物体进行线框表示的建模,这些三维物体可以使用各种3D渲染技术被显示成二维图像。 By using 3D graphics model of the three-dimensional wireframe representation of the objects, which may use various three-dimensional object is displayed as a 3D rendering two-dimensional images. 这样的技术例如可以使用3D空间中由诸如三角形之类的几何实体所连接的点的集合来表示3D物体。 Such techniques can be used, for example, a set of points in 3D space by geometric entities such as triangles or the like are attached to represent a 3D object. 当建立视频应用中的画面时,可以在生成静止图像或动画时考虑到各个虚拟物体、观众的视角、色彩、以及照明。 When establishing a video screen applications, can be considered when generating a still image or animation to each virtual object, the viewer viewing angle, color, and lighting. 通常,3D模型的顶点被着色,并且该色彩然后可以在渲染期间在该模型表面的范围内进行插值。 Typically, the vertices of the 3D model is colored, and the color can then be interpolated within the scope of the model of the surface during rendering. 一种用于将色彩信息添加到3D模型的方法是通过使用纹理映射将2D 纹理图像应用于该模型的表面来进行的。 A method for adding color information to a 3D model is performed by using a 2D texture image texture mapping applied to the surface of the model. 纹理可以将细节、表面纹理、或色彩添加到计算机生成的图形或3D模型。 Texture may be added detail, surface texture, or color of the graphics or computer generated 3D models. 顶点几何形状信息(顶点缓冲区)可以包括纹理坐标,该纹理坐标指示如何将纹理图像图的点映射到3D模型的表面。 Geometry information vertex (vertex buffer) may include texture coordinates, texture coordinates indicating how the mapping point to the surface texture image of FIG. 3D model. 纹理可以映射到诸如3D建模中常用的三角形之类的形状的表面。 Texture may be mapped to the surface shape, such as a conventional 3D modeling triangle or the like. 此外,着色器可以执行复杂计算以从任意位置内取任何数目的纹理。 In addition, the coloring may perform complex calculations in order to get any number of texture from an arbitrary position.

[0098] 3D应用通常需要大量的纹理数据来产生良好质量的画面。 [0098] 3D applications typically require a large amount of texture data to produce a good quality picture. 该大量的纹理进而需要存储器中和存储介质(例如硬盘或光盘)上的大量的空间。 The texture in turn requires large amount of space on the memory and the storage medium (e.g. a hard disk or CD-ROM).

[0099] 子分区与父分区之间共享的存储器区域 [0099] child partitions and partition shared memory area between the parent

[0100] 如上所述,当虚拟化图形硬件时,纹理或其他数据可能需要大量的视频存储器。 [0100] As described above, when the virtual graphics hardware, textures or other data may require a large amount of video memory. 例如,当在虚拟机中运行3D应用时,大量图形数据可能被推送给视频驱动程序。 For example, when running 3D applications in virtual machines, a lot of graphics data may be pushed to the video driver. 此外,实际的渲染将在父分区上进行,并且因此图形数据必须从子分区传输给父分区。 Furthermore, the actual rendering will be carried out on the parent partition, and therefore the parent partition pattern data to be transmitted from the child partitions.

[0101] 作为附加的因素,图形数据通常必须不仅仅从子分区的内核模式中传输给父分区上的内核模式,因为子分区的渲染器使用父分区上的用户模式应用。 [0101] As an additional factor, the graphics data must not transmitted from the sub-partition in kernel mode to kernel mode on the parent partition, the child partition because the application renderer user mode on the parent partition. 因此,父分区上的用户模式应用需要向子分区中的内核模式发送命令,该内核模式然后需要将数据传输给父分区中的用户模式应用。 Thus, the user-mode applications parent partition needs to send a command to the child partitions kernel mode, the kernel mode and needs to transfer data to the parent partition user mode application.

[0102] 图形数据是期望在虚拟机分区之间传输大量数据的场景的一个说明性实例。 [0102] Graphics data is intended for an illustrative example of large amounts of data between virtual machines partitions scene. 在此所公开的实施例适用于任何类型的数据,并且不限于图形数据的传输。 In this embodiment, applicable to any type of data disclosed and is not limited to the transmission of graphics data.

[0103] 上述需要可以通过开放客机中的内核模式与主机上的用户模式之间的共享存储器通道来解决。 [0103] above needs may be addressed by a shared memory channel open between the guest and the user mode kernel mode on the host. 这样的传输打破了多个边界,其中共享的存储器必须被重新映射和重新分配以便让用户模式应用访问客机中的内核模式试图渲染的数据。 Such transmission broke multiple boundaries, where the shared memory must be re-mapped and re-distribution to allow user mode applications to access airliner in kernel mode trying to render data.

[0104] 然而,一些解决方案可能是非常低效的。 [0104] However, some solutions may be very inefficient. 例如,一些系统可以提供主机上的定制内核模式服务,该定制内核模式服务与客机上的内核模式服务交谈。 For example, some systems can provide custom kernel mode on the hosting service, the custom kernel mode and kernel-mode service chat service on the aircraft. 于是,主定制内核模式服务需要将内核模式存储器翻译成用户模式存储器,并且与主机上的用户模式应用交谈。 Thus, the main custom kernel mode service needs to be translated into user mode kernel mode memory storage, and user-mode application to talk to the host. 这可能是非常昂贵和麻烦的。 This can be very expensive and cumbersome. 例如,一些系统可以首先在子分区中的内核模式与父分区中的内核模式之间复制存储器。 For example, some systems may first kernel mode in the sub-partition between the parent partition and kernel mode memory copy. 然后,这些数据需要从父分区中的内核模式复制到用户模式区域。 Then, the data need to be copied from the parent partition kernel mode to user mode region.

[0105] 在各个实施例中,公开了一种用于创建在父分区和子分区中的模式之间共享的存储器孔径(aperture)的机制。 [0105] In various embodiments, a mechanism is disclosed for creating a memory aperture (Aperture) between the parent and child partitions in the shared mode. 该共享的存储器孔径可以创建在客机与任何主机之间的任何存储器模式之间。 The shared memory aperture can be created between any memory mode between the aircraft and any host. 例如,共享的存储器孔径可以创建在子分区上的内核模式与父分区上的用户模式之间。 For example, the shared memory and the aperture can be created on the parent partition between user mode kernel mode on the sub-partition.

[0106] 通过使用这样的机制,可以提供直接的桥,例如从子分区中的内核模式到父分区中的用户模式的桥。 [0106] By using such a mechanism may provide a direct bridge, for example bridge child partitions from kernel mode to user mode parent partition's. 这样的桥可以为将从子分区中的内核或用户模式传递给父分区中的所期望的目的地模式(内核或用户)的数据提供最短路径,并且反之亦然。 Such bridges may be transferred to the child partitions from the user or kernel mode to the desired destination in the parent partition mode (kernel or user) data to provide the shortest path, and vice versa.

[0107] 如下面将进一步详述的那样,在一些实施例中,当创建共享的存储器孔径时,可以商定该孔径的大小。 [0107] As will be described in further detail below, the some embodiments, the aperture when creating a shared memory, the size of the aperture can agree. 此外,在一些实施例中,该孔径可以通过充分利用现有API来建立。 Further, in some embodiments, the aperture may be established by making full use of existing API.

[0108] 虚拟机总线(VMBus)可以是提供用于在虚拟服务提供者(VSP)与虚拟服务消费者(VSC)端点之间建立通道的机制的一组库和驱动程序。 [0108] Virtual Machine Bus (VMBus) may be used to provide a set of libraries and drivers mechanisms passage between the virtual service provider (VSP) and virtual service consumer (VSC) endpoints. VMBus允许VSP将虚拟设备发布到在子分区内运行的虚拟机中。 VMBus VSP is allowed to publish virtual device to a sub-partition in a virtual machine is running. 在子分区中,VMBus提供总线驱动程序,该总线驱动程序展示被发布到该虚拟机中的每个合成虚拟设备。 In sub-partition, VMBus provide bus driver, the bus driver was released to showcase the virtual machine for each virtual synthesis device. 然后,在虚拟机中运行的客OS为该合成设备识别和安装合适的设备驱动程序栈。 Then, in a virtual machine running the guest OS for the recognition and synthesis apparatus suitable mounting device driver stack. VMBus库还提供用于在子分区与父分区之间共享存储器的机制,并且协助多个分区范围内的虚拟中断递送。 VMBus library also provides a mechanism for the parent partition between the child and the shared memory partition, and to assist the virtual partitions within the range of interrupt delivery.

[0109] VSC可以提供与虚拟化系统(例如Hyper-V)组件的直接接口,并且建立到在虚拟机中运行的合成虚拟设备的VMBus通道。 [0109] VSC virtualization system may provide (e.g., Hyper-V) direct interface component, and to establish a virtual channel synthesizer VMBus equipment running in a virtual machine. VSP是在父分区中的主OS上运行的内核模式驱动程序。 VSP is running in kernel mode on the parent partition main OS driver. VSP提供到虚拟机中的VMBus通道,并且如果存在接受通道供应的合成设备VSC组件,则该通道被创建。 VSP is supplied to the virtual machine VMBus channel, and if the composite device assembly receiving passage VSC supply is present, the channel is created. VSP和VSC充当VMBus通道上的端点,并且使用上行(upstream)环形缓冲区和下行(downstream)环形缓冲区进行通信。 VSP and VMBus VSC acts as an endpoint on the channel, and using an uplink (upstream) and a downlink ring buffer (downstream) ring buffer for communication. 这些环形缓冲区可以用于交换控制分组和小的数据分组。 The ring buffer may be used to exchange control packets and data packets small. 如果需要传输较大量的数据,则可以建立共享的存储器缓冲区。 If you need to transfer larger amounts of data, you can create a shared memory buffer. 在父分区中运行的VSP实例可以使用运行特定合成设备的各个虚拟机中的VSC组件管理所建立的所有通道。 Each virtual machine management VSC component VSP instance running in the parent partition synthesizing apparatus may be used in a particular run of all established channels.

[0110] VSC可以是在虚拟机中运行的合成虚拟设备的一部分,并且实现该合成设备与其他Hyper-V组件之间的接口。 [0110] VSC portion of the synthesis may be running a virtual device in a virtual machine, and implements the interface between the composite device assembly with other Hyper-V. VSC接受由其相应VSP作出的VMSBus通道供应,并且使用该通道来交换配置和状态管理分组。 VSC VMSBus receiving therefrom respective channels supplied to VSP, and the channel used to exchange configuration and status management packets. VSC可以建立到在父分区中运行的相应合成设备组件的共享存储器通道。 VSC channels may be established corresponding to the shared memory synthesizing apparatus components running in the parent partition.

[0111] 在一个实施例中,共享存储器孔径可以通过库来创建。 [0111] In one embodiment, the shared memory aperture may be created by the library. 该库可以具有多个API,这些API允许创建和删除共享存储器孔径以及读取和写入共享存储器孔径。 The library may have a plurality of API, which allows the creation and deletion of the shared memory diameter and the shared memory to read and write the aperture. 该库可以置入到希望使用共享存储器孔径的任何组件中。 The library can be inserted into any desired pore size of the shared memory components. 该库可以与父分区和子分区上的相应合成设备驱动程序一起工作以便通过VMBus(或任何子分区通信系统)进行通信以建立连接。 The library can work together with the corresponding device driver on the synthesis of the parent and child partitions to communicate via the VMBus (or any sub-partition communication system) to establish a connection.

[0112] 在一实施例中,在子分区引导以后,子分区可以通过分配存储器、创建映射以及请求到父分区的连接来作出对父分区的请求。 [0112] In one embodiment, after the child partition boot child partition can be allocated by the memory, and a request to create a mapping is connected to the parent partition makes a request for the parent partition. 父分区接收该连接请求,确认该连接请求并且验证该映射。 The parent partition receiving the connection request, the connection request to confirm and verify the map. 在该验证完成以后,父分区将子分区存储器映射到已经请求了连接之处的主存储器。 After this verification is complete, the parent partition to be mapped sub-partition memory has requested the connection of the main memory at the.

[0113] 父分区和子分区可以使用来自该库的读取和写入API来读取和写入存储器区域。 [0113] The parent and child partitions may be read and written to memory areas used to read and write from the API library. 可以创建任何大小的存储器区域(其受到父存储器和子存储器的限制)。 You can create any size memory area (which is limited by the parent memory and sub-memory).

[0114] 在上述说明性的虚拟化系统的一些的上下文中,当新的虚拟机启动时,可以由桌面窗口管理器代理来产生桌面窗口管理器进程的实例。 [0114] In the context of some of the above-described illustrative virtualization system, when a new virtual machine starts, may be generated Desktop Window Manager process instance by Desktop Window Manager agent. 该桌面窗口管理器进程包含渲染组件,该渲染组件从相应虚拟机中的经虚拟化的GPU组件接收D3D命令和数据流。 The process comprises a Desktop Window Manager render component, the component receives the D3D commands and rendering data streams from a virtualized component of the GPU respective virtual machine. 该桌面窗口管理器进程使用主OSDirect3D软件组件和由主OS管理的物理GPU来渲染D3D流。 The Desktop Window Manager process using the primary OSDirect3D software components and the physical GPU to render the main OS management D3D flow. 该桌面窗口管理器的捕捉组件确定每个所渲染的帧的哪些部分已经改变,并且对这些帧差异进行编码。 The desktop window manager for each frame capture component determines which portions of the rendered has changed and encoding the frames differences. 然后,捕捉组件将经编码的数据传递给用户模式终端服务组件的图形源模块。 Then, the capture component is passed to the source module graphical user mode of the terminal services component encoded data.

[0115] 用户模式终端服务组件在子分区中的虚拟机的客OS中运行。 Operation [0115] user mode Terminal Services component in a child partition of the virtual machine guest OS. 用户模式终端服务组件接受使用远程呈现连接从客户端计算机的单用户登陆。 User mode Terminal Services component accept the use of telepresence connection landing from single-user client computer. 该用户模式终端服务组件创建用户会话并且处理各个设备在虚拟桌面与客户端计算机之间的重定向。 The user-mode Terminal Services component to create user sessions and redirect the processing of each device between the virtual desktop and client computers. 共享的存储器通道可以用于接收用于远程虚拟桌面和应用的经编码的帧差异显示数据,并且通过远程呈现连接发送给客户端计算机上的终端服务客户端软件,在那里,该数据被解码和显示。 The frame difference may be used for shared memory channel for receiving encoded remote virtual desktop applications and display data, and is connected to a Terminal Services client software on the client computer remote presentation, where the data is decoded and display.

[0116] 桌面窗口管理器进程渲染从设备内核模式和用户模式驱动程序组件接收的D3D 命令和数据流。 [0116] Rendering the desktop window manager process D3D commands and data flow program components received from the driving device kernel mode and user mode.

[0117] 从经虚拟化的GPU驱动程序被发送给桌面窗口管理器进程中的渲染模块的D3D命令和数据流、以及由捕捉模块发送给用户模式终端服务组件中的图形源的经编码帧差异数据需要高性能传输通道。 [0117] is transmitted from the virtualized of GPU driver to the desktop window manager process rendering module D3D commands and data streams, and the encoded frame difference transmitted by the capture module to the graphic source user mode Terminal Services component of the require high performance data transmission channel. 该需要由共享存储器传输通道库来解决,其提供共享的存储器传输机制。 This need is solved by a transmission channel shared memory library, which provides a shared memory transport mechanism. 共享存储器传输通道库提供允许创建共享存储器传输通道的API。 Transmission channel shared memory allows the creation of a shared library memory transfer channel API. 共享存储器传输通道库与VSC和VSP组件交互以映射所分配的缓冲区,使得所述缓冲区在运行在子分区和根分区中的组件之间共享。 Transmission channel shared memory interact with the database to map the VSC and VSP components allocated buffer so that the buffer is shared between the sub-components running in and root partitions. 可以提供该库的内核模式版本和用户模式版本。 It can provide kernel mode and user mode version version of the library.

[0118] 可以使用打开函数来创建在子分区中的客OS中运行的软件组件和在主OS中运行的桌面管理器进程实例中的通道。 [01] can be used to open the software components function to create a child partition in the guest OS instance is running and desktop management processes are running in the primary OS in the channel. 一旦已经创建了该通道,则就可以使用发送(Send)和接收(Receive)函数以二者任一方向来发送数据。 Once the channel has been created, it may use the transmit (the Send) and a receiver (the Receive) function to either one of both data transmission always. 该通道可以使用关闭(Close)函数来关闭。 The closed channel may be used (the Close) function to close.

[0119] 当打开(Open)函数被调用时,共享存储器传输通道库确定其是在客机还是主机上运行。 [0119] When opening (the Open) function is called, a transmission channel shared memory database to determine which is running on the host or guest. 如果其在客机上运行,则打开(Open)函数分配用于实施两个循环缓冲区和共享存储器中的控制状态的存储器缓冲区。 If it is running on the guest, it opens (the Open) function allocates a memory buffer for performing control state and two circular buffers in the shared memory. 共享存储器传输通道库打开VSC设备对象并且将DeviceIoControl消息发送给VSC驱动程序,该DeviceIoControl消息请求在子分区中分配的用户模式或内核模式缓冲区与链接到桌面窗口管理器进程的共享存储器传输通道库中的根分区缓冲区共享。 Shared memory transfer channel opens VSC device object library and sends a message to the VSC DeviceIoControl driver DeviceIoControl message requests the child partition allocated in user mode or in kernel mode buffer to the desktop window manager process shared memory bank and a transmission channel link the root partition buffer sharing.

[0120] VSC驱动程序为该缓冲区获得存储器描述符列表(MDL),并且将该页锁定到客OS 存储器空间中。 [0120] VSC obtained driver memory descriptor list (MDL) for the buffer, and the page is locked to the guest OS memory space. VSC驱动程序将MDL转换成客物理地址描述符列表(GPADL),该客物理地址描述符列表描述已经由系统管理程序分配给存储器缓冲区的实际真实系统物理页。 VSC driver MDL converted into guest physical address descriptor list (GPADL), the guest physical address of the descriptor list descriptor has been allocated by the hypervisor memory buffer to the actual physical page real system. VSC通过VMBus通道将请求VSP完成共享存储器映射操作的分组发送给VSP。 VSC VMBus packet channel request by VSP shared memory mapping operation is completed is transmitted to the VSP.

[0121] VSC驱动程序将其从VSC驱动程序接收的GPADL转换成主OSMDL并且将页锁定在系统存储器中。 [0121] VSC driver converts the driver received from the VSC GPADL OSMDL and into a main locking pages in system memory. 桌面窗口管理器进程中的渲染和捕捉模块对链接到桌面窗口管理器进程中的共享存储器传输通道库执行打开(Open)函数调用。 Desktop Window Manager process rendering module and capture the desktop window manager process shared library to perform the memory transmission channel open (Open) function calls to link to. 共享存储器传输通道库确定其运行在主机上,并且保留与在客机上分配的缓冲区大小相同的缓冲区,并且发送等待来自客机的通道打开请求的DeviceloControl。 Transmission channel shared memory database to determine which runs on the host, and the reservation and assignment of the aircraft on the same buffer buffer size, and transmits the waiting passenger from opening DeviceloControl channel request. VSP使用共享存储器传输通道库已经使用VirtualAlloc函数进行保留的存储器缓冲区的虚拟地址,并且将这些保留的页映射到来自客分区的已经被分配和锁定的系统页,由此共享该存储器。 VSP using a shared memory transport channel VirtualAlloc function library has been used virtual addresses reserved memory buffers, and maps those pages reserved page has been allocated to the system from the guest partition and locked, whereby the shared memory. VSP使用唯一的标识符来将来自客机的通道打开请求映射到桌面窗口管理器进程中的合适的监听模块。 Channel VSP uses a unique identifier to open request from aircraft monitoring module mapped to the appropriate desktop window manager process. 虚拟机分区ID用于确定客虚拟机与合适的桌面窗口管理器实例的对应关系。 VM guest virtual machine partition corresponding relationship with a suitable desktop window manager instance for determining the ID.

[0122] 发送(Send)和接收(Receive)调用通过共享的存储器缓冲区来传输数据,并且这些细节对调用者是透明的。 [0122] transmitted (the Send) and a receiver (the Receive) call to transmit data through a shared memory buffer, and these details are transparent to the caller. 接收(Receive)函数可以基于打开(Open)函数中的接收模式) 参数在受阻塞或非阻塞的模式下运行。 Receiving (the Receive) may function) operates based on the parameters received open mode (the Open) in function by blocking or nonblocking mode. 可替代地,可以使用EventSelect(事件选择)函数来允许接收如下数据:所述数据将被用信号通知使得调用者可以等待单个或多个事件, 并且然后在所述事件之一发生时用信号通知该调用者。 Alternatively, one can use EventSelect (selection event) function to allow the receiving following data: the data will be signaled such that a single call can wait for one or more events, and then signal when the event occurs one the caller.

[0123] 当关闭(Close)操作被调用时,VSC和VSP被调用并且共享存储器被解锁、解除映射和释放。 [0123] when closed (the Close) operation is invoked, and the VSC and VSP are called the shared memory is unlocked, and release unmapped. 当在对方端点上进行任何随后的调用时,通道关闭返回状态被返回。 When any subsequent calls on the other end, closed return channel status is returned. 该端点然后调用关闭(Close)来完成关闭操作。 The call is then closed end (the Close) to complete the closing operation.

[0124] 共享存储器传输通道库所使用的循环缓冲区和控制存储器可以由共享存储器传输通道库来分配。 [0124] circular buffer memory and a control memory shared library used by the transmission channel may be assigned by the transmission channel shared memory database. 库用户可能除了间接通过发送(Send)和接收(Receive)函数以外不具有对该内部存储器的访问。 Library user may not have access to the internal memory other than indirectly through transmission (the Send) and a receiver (the Receive) function. 这些函数可以具有客户端缓冲区指针和字节计数参数。 These functions may have the client buffer pointer and byte count parameter. 库将来自发送缓冲区的数据复制到其内部共享存储器缓冲区中,并且然后将该数据复制到目的地接收缓冲区中。 Copying data from the library to its internal transmit buffer in shared memory buffer, and then copies the data to the destination receive buffer. 如果发送缓冲区大于内部缓冲区,则可以执行多次传输以发送所有数据。 If the transmission buffer is greater than the internal buffer, the transmission may be performed a plurality of times to transmit all data. 发送方必须保证:由发送缓冲区指针和字节计数所指定的字节处于其发送缓冲区中。 Sender must ensure that: a transmit buffer pointer and a byte count specified in bytes in its transmit buffer. 接收方将在每次对接收(Receive)的调用中接收由字节计数所指定的数量的数据。 The recipient received data by the number of bytes specified in the call count of each received (the Receive) in. 接收进程负责保证:其缓冲区指针和字节计数不导致接收缓冲区溢出。 Receiving process responsible for ensuring that: its buffer pointer and byte counts do not cause receive buffer overflow.

[0125] 两个通道端点控制它们通过该通道传输的数据的格式。 [0125] endpoints two control channels through which the data format of the transmission channel. 共享存储器传输通道库可以被配置为使得其不检查所传输的数据的内容。 Transmission channel shared memory database may be configured such that it does not check the contents of the transmitted data. 两个端点可以负责在通道被打开时交换版本分组,以及验证:两个端点可以合适地彼此互操作。 Two endpoints exchange version may be responsible for packet when the channel is opened, and a verification: suitably two endpoints may interoperate with each other. 如果该检查失败,则所述端点可以用指示不兼容版本的状态来调用关闭(Close)函数,并且桌面窗口管理器进程可以发送指示失败的状态。 If the check fails, then the endpoint may indicate a version incompatible call state off (the Close) function, and the desktop window manager process may send an indication of the failed state. VSP向系统通知该失败,并且虚拟机建立将失败。 The failure to notify the VSP system, and the establishment of a virtual machine fails.

[0126] 因此,提供了基于共享存储器的传输通道API表面,使得可以利用各种组件来在子虚拟机分区中运行的组件与在根分区中运行的桌面窗口管理器进程的相应实例之间传输数据。 [0126] Accordingly, there is provided a surface-based API transmission channel shared memory, so that the various components may be utilized between the respective transmission instances running in a virtual machine partition sub assembly and the desktop window manager processes running in the root partition data. 共享存储器传输通道库允许用更高性能的传输解决方案来代替当前的套接字传输。 Transmission channel shared memory library allows transmission of higher performance solution to replace the current transmission socket.

[0127] 共享存储器传输通道可以被其他VDI组件用于增强组件间数据传输性能。 [0127] shared memory channel may be a transmission other VDI components for enhancing the performance of data transfer between components. 共享存储器传输通道利用虚拟机间共享的存储器页来提供双向数据传输能力。 Shared memory transmission channel provides bidirectional data transmission between the virtual machine the ability to use shared memory pages. 内部通道设计提供了通道端点之间的上行和下行循环缓冲,并且管理数据在发送和接收端点之间的流式传输。 Interior channel design provides uplink and downlink channels between the end circular buffer, and manages data streaming between the sending and receiving endpoint. 通道端点起源于子虚拟机分区,并且终止于在根分区中运行的相应桌面窗口管理器进程。 Endpoint originated in the sub-channel virtual machine partitions, and terminates the corresponding desktop window manager process running in the root partition. 子虚拟机端点可以起源于内核模式驱动程序、用户模式驱动程序以及用户模式终端服务组件中的图形源模块。 Child virtual machine may originate from endpoint kernel-mode drivers, user-mode driver and a user mode service terminal assembly graphics source module.

[0128] 用户模式组件可以使用共享存储器传输通道库来创建数据以及通过共享存储器传输通道的实例来传输数据。 [0128] Users can use the shared memory mode component library to create data transmission channel and to transmit data by way of example of the transmission channel shared memory. 下面描述共享存储器传输通道库的示例性函数。 The following example function shared memory bank described transmission channel.

[0129] 这些组件可以使用打开(Open)函数打开通道。 [0129] These components can be used to open (the Open) function to open the passage. 该通道起源于客虚拟机以允许在客虚拟机中进行共享存储器缓冲区分配。 The channel originates from the guest virtual machine to allow for the shared memory buffers are allocated in the guest virtual machine. 如果调用打开(Open)的组件在客虚拟机中运行, 则共享存储器传输通道库分配存储器缓冲区并且将DeviceloControl发送给VSC驱动程序以建立共享的存储器缓冲区。 If the call is opened (the Open) components to operate in the guest virtual machine, the memory is shared memory buffers allocated transmission channel database and sends to the VSC DeviceloControl driver to create the shared memory buffer. 如果打开(Open)函数是由与子分区中运行的虚拟机相对应的桌面窗口管理器进程调用的,则其监听将被客虚拟机中的组件打开的通道。 If you open (Open) function is a virtual machine running with the child partitions corresponding desktop window manager process calls, it will be the guest virtual machine monitor components in the open channel. 桌面窗口管理器进程保留缓冲区并且将DeviceloControl发送给VSP以监听通道创建。 Desktop Window Manager process to retain a buffer and sends VSP DeviceloControl to create a channel to listen. 当客虚拟机组件打开该通道时,VSC通过VMBus通道来向VSP发送消息。 When the guest virtual machine to open the channel assembly, VSC to send a message to the VSP VMBus through passage. VSP将客虚拟机缓冲区和主缓冲区映射到相同的系统物理页,并且响应从桌面窗口管理器进程对通道DeviceIoControl的监听。 VSP maps the guest virtual machine buffers and the main buffer to the same system of physical pages, and listen for a response from the channel DeviceIoControl desktop window manager process. 打开(Open)函数返回句柄(handle),该句柄在调用其他共享存储器传输通道库函数时被用于指定该特定通道实例。 Open (the Open) function returns a handle (handle), the handle is used to specify the particular instance of the channel when the channel memory transfer calls to other shared libraries. 关闭(Close)函数关闭通道,这致使所有共享存储器被解除映射并被释放。 Close (the Close) function to close the channel, which causes all the mapped shared memory is released and released.

[0130] 发送(Send)函数可以用于将指定数目的字节发送给对方端点。 [0130] transmitted (the Send) function can be used to specify the number of bytes sent to the other endpoint. 接收(Receive)函数可以用于接收数据。 Receiving (the Receive) function can be used to receive data. 接收(Receive)函数可以在阻塞性或非阻塞性的模式二者任一中运行,所述模式可以由打开(Open)函数中的接收模块参数来指定。 Receiving (the Receive) function may be obstructive or non-obstructive to any one of the two modes of operation, the mode may be specified by the opening (the Open) receiving the parameters in the function modules. EventSelect(事件选择) 函数可以用于指定如下事件:该事件在指定数量或任何数量的数据已经被接收到的情况下可以被用信号通知。 EventSelect (selection event) function can be used to specify the events as follows: may be signaled in a case where the event or any number of specified amount of data has been received. 这允许通道所有者等待接收事件用信号通知该数据的存在。 This allows the owner of the channel waits to receive an event notification of the presence of data signals. 转储清除(Flush)函数可以用于在已经被发送的所有数据都被对方端点接收以前一直进行阻塞。 Flush (Flush) function can be used has been blocked in all previous data has been sent have been received by the endpoint each other.

[0131] 共享存储器传输通道可以用于在子分区中运行的软件组件与在根分区中运行的相应桌面窗口管理器进程之间创建多个持久的通道。 [0131] shared memory to create a plurality of transmission channels may be used for persistent channels between software components running in the respective sub-partitions Desktop Window Manager processes running in the root partition. 在子分区中运行的组件在它们启动时打开通道实例。 Component running in a child partition to open the channel instance when they are started. 桌面窗口管理器进程具有如下线程:该线程等待在子分区组件启动时从所述子分区组件建立新通道连接。 Desktop Window Manager Process has the following threads: the thread waiting to establish a new connection from the sub-channel when the sub-assembly partition boot partition assembly. 一旦被创建,则通道就保持为持久的,直到组件被关闭或者虚拟机被关闭。 Once created, the channel remains as a lasting until the component is turned off or the virtual machine is turned off.

[0132] 共享存储器传输通道库监控通道,并且检测该通道是否停止运行或是否任一方关闭该通道。 [0132] shared memory library monitoring channel transmission path, and detects whether the channel is stopped if either one or closes the channel. 如果客虚拟机组件关闭通道,则共享存储器传输通道库通知对方端点,并且将关闭通道DeviceIoControl发送给VSC驱动程序以对存储器进行映射解除和释放。 If the guest virtual machine assembly closes the passage, the shared memory database notification transmission channel other endpoint, and closing the passage to a VSC DeviceIoControl driver for lifting and releasing the memory map. 当被通知通道被关闭时,桌面窗口管理器进程清除其状态并且调用关闭(Close)函数。 When the notification channel is closed, the desktop window manager process to clear its status and call close (Close) function. 该函数将关闭通道DeviceIoControl发送给VSP驱动程序。 This function closes the passage to a DeviceIoControl VSP driver. VSP与客虚拟机中的VSC协调以对存储器进行映射解除和释放。 VSP and guest virtual machine VSC coordination with the memory mapping to lift and release. 如果关闭操作由客虚拟机组件发起,则这被认为是正常通道关闭。 If you turn off the operation launched by the guest virtual machine components, this is considered normal channel is closed.

[0133] 如果桌面窗口管理器进程发起通道关闭,则这可以被认为是通道丢失情况。 [0133] If the desktop window manager process initiated channel is closed, then this can be considered a channel loss situation. 这可能在桌面窗口管理器进程以任何原因被终止时发生。 This may occur when the desktop window manager process is terminated for any reason. 在这种情况下,通道丢失状态被传送给已经打开与终止的桌面窗口管理器进程实例之间的通道的客虚拟机组件。 In this case, the channel has been transferred to the loss of state open channel between the desktop window manager process instance termination of the guest virtual machine components. 客虚拟机组件现在将具有不一致的状态,并且必须将自自身复位并且在桌面窗口管理器进程被代理进程重启时重建通道连接。 Guest virtual machine components will now have an inconsistent state and must be reset and rebuilt itself from the channel connecting proxy process to restart the desktop window manager process.

[0134] 类似的情况可能在虚拟机恢复其执行的操作时存在。 Presence of [0134] A similar situation may resume its operations performed in a virtual machine. 桌面窗口管理器进程可能在保存虚拟机操作期间不保存所有当前的D3D状态。 Desktop Window Manager process may not save all of the current state of D3D during the save operation of the virtual machine. 当虚拟机被恢复时,桌面窗口管理器进程被重启,并且监听将从客虚拟机创建的通道。 When a virtual machine is restored, the desktop window manager process is restarted, and monitor channel from the guest virtual machines created. 客虚拟机被完全保存和恢复,使得组件必须被复位并且重建到桌面窗口管理器进程的通道。 Guest virtual machine is completely saved and restored so that components must be reset and rebuild the channel to the desktop window manager process. 共享存储器传输通道库调用打开(Open) 函数中指定的错误处理程序,或者返回CT_VMT_CHANNEL_LOST返回状态。 Transmission channel shared memory library calls open error handler (the Open) specified in the function, status or return CT_VMT_CHANNEL_LOST return. 当组件接收通道丢失通知时,其必须将其自身复位并且重建该通道。 When the component receives notification channel is lost, it must be reset and rebuild the channel itself.

[0135] 图11描绘了用于在虚拟机分区之间传输数据的示例性操作过程,该过程包括操作1100、1102、1104、1106和1108。 [0135] FIG. 11 depicts an exemplary operational procedure in the virtual machine between the partitions for transmitting data, the process includes operating 1100,1102,1104,1106 and 1108. 参考图11,操作1100开始该操作过程,并且操作1102 示出了:由第一虚拟机分区向第二虚拟机分区发送针对存储器分配的请求,其中该分配指示用于所传输的数据的最大缓冲区大小。 Referring to Figure 11, operation 1100 begins the operational procedure and operation 1102 illustrates: send a request for memory allocation to the second virtual machine by the first virtual machine partition partition, wherein the maximum buffer allocation instruction for the transmission of data District size. 操作1104示出了:映射所请求的存储器分配。 Operation 1104 shows: mapping the requested memory allocation. 操作1106示出了:在第一虚拟机分区和第二虚拟机分区中的模式之间的共享存储器孔径中分配请求的存储器。 Operation 1106 shows: a memory shared memory between the aperture pattern in the first virtual machine and the second virtual machine partition in the partition allocation request. 操作1108示出了:使用共享存储器孔径在第一虚拟机分区与第二虚拟机分区之间传输数据。 Operation 1108 shows: a shared memory used to transfer data between the first aperture of the virtual machine and the second virtual machine partition partition.

[0136] 图12描绘了用于如上所述在虚拟机分区之间传输数据的示例性系统。 [0136] FIG. 12 depicts an exemplary system for transferring data between virtual machines partitions described above. 参考图12, 系统1200包括处理器1210和存储器1220。 Referring to Figure 12, system 1200 includes processor 1210 and memory 1220. 存储器1220进一步包括计算机指令,这些指令被配置为在虚拟机分区之间传输数据。 The memory 1220 further comprises computer instructions which are configured to transfer data between virtual machines partitions. 框1222示出了:由第一虚拟机分区向第二虚拟机分区发送针对存储器分配的请求,其中该分配指示用于所传输的数据的最大缓冲区大小。 Block 1222 shows: sending a request for the memory allocated to the second virtual machine by the first virtual machine partition partitions, wherein the size of the maximum buffer allocation indication for the transmitted data. 框1224示出了:映射所请求的存储器分配。 Block 1224 shows: mapping the requested memory allocation. 框1226示出了:在第一虚拟机分区和第二虚拟机分区中的模式之间的共享存储器孔径中分配请求的存储器。 Block 1226 shows: a memory shared memory between the aperture pattern in the first virtual machine and the second virtual machine partition in the partition allocation request. 框1228示出了:使用共享存储器孔径在第一虚拟机分区与第二虚拟机分区之间传输数据。 Block 1228 shows: aperture using the shared memory to transfer data between the first virtual machine and the second virtual machine partition partition.

[0137] 上文所提及的方面中的任何一个方面都可以以方法、系统、计算机可读介质或任何类型的产品来实现。 Aspect of the [0137] above-mentioned any one of the aspects can be implemented in methods, systems, computer readable media, or any type of manufacture. 例如,计算机可读介质可以在其上存储用于在虚拟机分区之间传输数据的计算机可执行指令。 For example, computer readable media may be a computer-executable instructions to transfer data between partitions in a virtual machine stored thereon. 这样的介质可以包括:指令的第一子集,其用于由子虚拟机分区向父虚拟机分区发送针对存储器分配的请求,其中该分配指示用于所传输的数据的最大缓冲区大小;指令的第二子集,其用于映射所请求的存储器分配;指令的第三子集,其用于在子虚拟机分区和父虚拟机分区中的模式之间的共享存储器孔径中分配请求的存储器;以及指令的第四子集,其用于使用共享存储器孔径在子虚拟机分区与父虚拟机分区之间传输数据。 Such a medium may include: a first subset of instructions for a virtual machine by the sub-partitions virtual machine a request for memory allocation partition transmitted to the parent, wherein the maximum buffer size allocated for indicating the data transmission; instruction a second subset, for mapping memory allocation request; third subset of instructions for shared memory between the sub-aperture VM partitions and partition the parent virtual machine mode memory allocation request; and a fourth subset of instructions, which transfer data between partitions using the shared memory for the virtual sub-aperture with the parent virtual machine partition. 本领域技术人员可以理解,可以使用附加指令集来捕捉此处所公开的各其他方面,且根据本发明,四个目前所公开的指令子集可以在细节方面不同。 Those skilled in the art will appreciate, additional instruction sets may be used to capture the various other aspects disclosed herein, and in accordance with the present invention, four current instruction subset disclosure may differ in detail.

[0138] 上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。 [0138] The detailed description of embodiments by way of example and / or operational diagrams illustrate various systems and / or processes. 就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。 These block diagrams and / or examples contain one or more functions and / or operations, it will be appreciated by those skilled in the art, each of these functional block diagrams, and / or operations can be by a variety of hardware, software , firmware, or virtually any combination thereof, individually and / or collectively implemented.

[0139] 应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。 [0139] It should be understood that the various techniques described herein may be combined with hardware or software, or be implemented in a combination of both, where appropriate. 因此,本发明的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、 CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(S卩,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本发明的装置。 Program code (S Jie, instructions) Thus, the methods and apparatus of the present invention, or certain aspects or portions thereof, may take the form of program such as a flexible disk, CD-ROM, hard drives, or any other machine-readable storage medium or the like form, wherein, when the program code is loaded into and executed by a machine such as a computer to run, the machine becomes an apparatus for implementing the present invention. 在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。 In the case of program code execution on programmable computers, the computing device generally includes a processor, a storage medium readable by the processor (including volatile and nonvolatile memory and / or storage elements), at least one input device , and at least one output device. 一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。 One or more programs that may, for example, by the use of an API, reusable controls, or the like is achieved by using the process described in conjunction with the present invention. 这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。 Such programs are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system. 然而,如果需要,该程序可以用汇编语言或机器语言来实现。 However, if required, the program can use assembly language or machine language. 在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。 In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.

[0140] 尽管具体地参考其优选实施例来示出并描述了本发明,但本领域的技术人员可以理解,可以作出形式和细节上的各种改变而不脱离所附权利要求书中所述的本发明的范围。 [0140] Although specific reference to preferred embodiments thereof shown and described the present invention, those skilled in the art will be appreciated that various changes may be made in the form and details without departing from the appended claims the scope of the invention. 此外,尽管本发明的各元素可以用单数来描述或要求保护,但构想了复数,除非明确地规定了限于单数。 Furthermore, although elements of the present invention may be described or claimed in the singular protection, but the plural is contemplated unless explicitly stated limitation to the singular.

Claims (10)

1. 一种用于在虚拟机分区之间传输数据的方法,该方法包括: 由第一虚拟机分区向第二虚拟机分区发送(1102)针对存储器分配的请求,其中该分配指示用于所传输的数据的最大缓冲区大小; 映射(1104)所请求的存储器分配; 在第一虚拟机分区和第二虚拟机分区中的模式之间的共享存储器孔径中分配(1106) 请求的存储器,所述共享存储器孔径提供了从第一虚拟机分区中的一种模式到第二虚拟机分区中的另一模式的直接的桥;以及使用该共享存储器孔径在第一虚拟机分区与第二虚拟机分区之间传输(1108)数据。 1. A method for transmitting data between virtual machines partitions, the method comprising: a first virtual machine partitions that sends a second virtual machine (1102) for the memory allocation request, wherein the indication for the assignment memory allocation map (1104) requested;; maximum buffer size of the data transfer between the shared memory allocated first virtual machine and the second virtual machine partition partition aperture pattern (1106) of the memory request, the said aperture of shared memory provides a direct bridge from a first virtual machine partition of one mode to another partition in a second virtual machine; and using the shared memory partition aperture in the first virtual machine and the second virtual machine transmission between partitions (1108) data.
2. 如权利要求1所述的方法,其特征在于,第一虚拟机分区是子分区(800),并且第二虚拟机分区是父分区(810)。 2. The method according to claim 1, characterized in that the partition is a first virtual machine child partition (800), and the second partition is a virtual machine parent partition (810).
3. 如权利要求2所述的方法,其特征在于,所述模式包括内核模式(830)或用户模式(820)任一。 The method according to claim 2, wherein said mode comprises kernel mode (830) or a user mode (820) of any one.
4. 如权利要求1所述的方法,其特征在于,在第一虚拟机分区与第二虚拟机分区之间商定该最大缓冲区大小。 4. The method according to claim 1, wherein the maximum buffer size agreed between the first virtual machine and the second virtual machine partition partition.
5. 如权利要求3所述的方法,其特征在于,进一步包括:打开虚拟服务消费者设备对象并且将控制消息发送给虚拟服务消费者驱动程序,该控制消息请求在子分区中分配的用户模式或内核模式缓冲区与父分区缓冲区共享。 5. The method according to claim 3, characterized in that, further comprising: opening a virtual service consumer device object and sending a control message to the service consumer virtual driver, the control message requesting user mode assignment in the sub-partitions or kernel mode buffers buffers is shared with the parent partition.
6. 如权利要求5所述的方法,其特征在于,虚拟服务消费者驱动程序为在子分区客OS 存储器空间中所分配的缓冲区创建存储器描述符列表。 6. The method according to claim 5, wherein the virtual service consumer driver creates a list of descriptors for the buffer memory in sub-partition guest OS memory space allocated.
7. 如权利要求6所述的方法,其特征在于,虚拟服务消费者驱动程序将存储器描述符列表转换成客物理地址描述符列表,该客物理地址描述符列表描述已经由系统管理程序分配给该存储器缓冲区的系统页。 7. The method according to claim 6, wherein the virtual service consumer driver converts memory descriptor list to a guest physical address of the descriptor list, the guest physical address of the descriptor list descriptor has been allocated by the hypervisor the system memory buffer page.
8. 如权利要求1所述的方法,其特征在于,进一步包括:通过对该共享存储器孔径进行解锁、映射解除和释放来关闭该共享存储器孔径。 8. The method according to claim 1, characterized in that, further comprising: unlocking the shared memory through the aperture, and releasing release mapping shared memory to close the aperture.
9. 一种用于在虚拟机分区之间传输数据的系统(100),包括: 包括至少一个处理器的计算设备; 在所述系统运行时通信地耦合到所述处理器的存储器,所述存储器具有存储于其中的计算机指令,所述计算机指令在由所述至少一个处理器执行时致使: 由第一虚拟机分区向第二虚拟机分区发送(1222)针对存储器分配的请求,其中该分配指示用于所传输的数据的最大缓冲区大小; 映射(1224)所请求的存储器分配; 在第一虚拟机分区和第二虚拟机分区中的模式之间的共享存储器孔径中分配(1226) 请求的存储器,所述共享存储器孔径提供了从第一虚拟机分区中的一种模式到第二虚拟机分区中的另一模式的直接的桥;以及使用该共享存储器孔径在第一虚拟机分区与第二虚拟机分区之间传输(1228)数据。 9. A system for transmitting data between a virtual machine partition (100), comprising: a computing device comprising at least one processor; the runtime system communicatively coupled to the processor, the memory, the a memory having computer instructions stored therein, the computer instructions cause the processor to perform at least one of the: a first virtual machine partitions that sends a second virtual machine (1222) for the memory allocation request, wherein the dispensing data for indicating the maximum transmission buffer size; mapping (1224) the requested memory allocation; allocation (1226) between the aperture in the shared memory partitions a first virtual machine and the second virtual machine partition mode request a memory, the shared memory aperture provides a direct bridge from a first virtual machine partition of one mode to another partition in a second virtual machine; and using the shared memory partition aperture and the first virtual machine transmission between the second virtual machine partition (1228) data.
10. -种用于在虚拟机分区之间传输数据的系统,包括: 用于由子虚拟机分区向父虚拟机分区发送针对存储器分配的请求的装置,其中该分配指示用于所传输的数据的最大缓冲区大小; 用于映射所请求的存储器分配的装置; 用于在子虚拟机分区和父虚拟机分区中的模式之间的共享存储器孔径中分配请求的存储器的装置,所述共享存储器孔径提供了从子虚拟机分区中的一种模式到父虚拟机分区中的另一模式的直接的桥;以及用于使用该共享存储器孔径在子虚拟机分区与父虚拟机分区之间传输数据的装置。 10. - kind of a system for transferring data between virtual machines partitions, comprising: a virtual machine by the sub-unit partition means for partitioning the transmission request to the memory allocated to the parent virtual machine, wherein the allocation instruction for the transmission of data maximum buffer size; means for mapping memory allocation request; means for storage in the shared memory aperture between the parent and child virtual machine partition mode virtual machine partition allocated for the request, the shared memory aperture It provides a direct bridge from a guest virtual machine partition mode to another mode of the parent virtual machine partition; and means for using the shared memory transfer aperture between the parent virtual machine guest VM partitions to partition data device.
CN201110310816.0A 2010-09-30 2011-09-30 Shared memory between partitions and sub parent partition CN102707986B (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/894,896 US8463980B2 (en) 2010-09-30 2010-09-30 Shared memory between child and parent partitions
US12/894,896 2010-09-30

Publications (2)

Publication Number Publication Date
CN102707986A CN102707986A (en) 2012-10-03
CN102707986B true CN102707986B (en) 2016-01-06

Family

ID=45890822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110310816.0A CN102707986B (en) 2010-09-30 2011-09-30 Shared memory between partitions and sub parent partition

Country Status (5)

Country Link
US (1) US8463980B2 (en)
EP (1) EP2622461A4 (en)
CN (1) CN102707986B (en)
HK (1) HK1175002A1 (en)
WO (1) WO2012050724A2 (en)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8910155B1 (en) * 2010-11-02 2014-12-09 Symantec Corporation Methods and systems for injecting endpoint management agents into virtual machines
US9201678B2 (en) 2010-11-29 2015-12-01 International Business Machines Corporation Placing a virtual machine on a target hypervisor
US9053053B2 (en) * 2010-11-29 2015-06-09 International Business Machines Corporation Efficiently determining identical pieces of memory used by virtual machines
CN102541619B (en) * 2010-12-23 2015-09-16 国际商业机器公司 Virtual machine management apparatus and method
KR20120072134A (en) * 2010-12-23 2012-07-03 한국전자통신연구원 Apparatus and method for accelerating virtual desktop
CN102143156B (en) * 2010-12-31 2014-06-04 华为技术有限公司 Desktop sharing method and device
US8893274B2 (en) * 2011-08-03 2014-11-18 Trend Micro, Inc. Cross-VM network filtering
US9311250B2 (en) * 2011-12-19 2016-04-12 Intel Corporation Techniques for memory de-duplication in a virtual system
US20130210522A1 (en) * 2012-01-12 2013-08-15 Ciinow, Inc. Data center architecture for remote graphics rendering
US9058759B2 (en) * 2012-06-14 2015-06-16 Avatron Software, Inc. Virtual display device drivers compatible with windows display driver model
JP2014059862A (en) * 2012-08-22 2014-04-03 Canon Inc Data flow resource allocation device and method
US20140068165A1 (en) * 2012-09-06 2014-03-06 Accedian Networks Inc. Splitting a real-time thread between the user and kernel space
US9274839B2 (en) 2012-09-27 2016-03-01 Intel Corporation Techniques for dynamic physical memory partitioning
CN103873924B (en) * 2012-12-12 2017-09-05 华为技术有限公司 A video redirection method, apparatus, system
US9384024B2 (en) 2012-12-18 2016-07-05 Dynavisor, Inc. Dynamic device virtualization
CN104781845B (en) * 2012-12-19 2018-11-09 英特尔公司 Processing video content
GB2511794A (en) * 2013-03-13 2014-09-17 Advanced Risc Mach Ltd A Protection Unit and Method for Controlling Access by Plural Processes to a Storage Unit
US9361202B2 (en) * 2013-07-18 2016-06-07 International Business Machines Corporation Filtering system noises in parallel computer systems during thread synchronization
WO2015081308A2 (en) 2013-11-26 2015-06-04 Dynavisor, Inc. Dynamic i/o virtualization
CN104679486B (en) * 2013-11-28 2019-05-28 华为技术有限公司 A kind of processing method of graph data, apparatus and system
US9323565B2 (en) 2013-12-20 2016-04-26 Vmware, Inc. Provisioning customized virtual machines without rebooting
US20150189012A1 (en) * 2014-01-02 2015-07-02 Nvidia Corporation Wireless display synchronization for mobile devices using buffer locking
US9467526B2 (en) 2014-01-15 2016-10-11 Microsoft Technology Licensing, Llc Network communication using intermediation processor
WO2015130837A1 (en) * 2014-02-25 2015-09-03 Dynavisor, Inc. Dynamic information virtualization
US9785576B2 (en) * 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
US9513949B2 (en) * 2014-08-23 2016-12-06 Vmware, Inc. Machine identity persistence for users of non-persistent virtual desktops
US20160100015A1 (en) * 2014-10-06 2016-04-07 Vidyo, Inc. Systems and methods for resolving service initialization links in virtual desktop infrastructure environments
WO2016090536A1 (en) * 2014-12-08 2016-06-16 Intel Corporation Apparatus and method to improve memory access performance between shared local memory and system global memory
US9817776B2 (en) 2015-01-19 2017-11-14 Microsoft Technology Licensing, Llc Memory descriptor list caching and pipeline processing
US9612860B2 (en) 2015-03-24 2017-04-04 International Business Machines Corporation Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest
US9606827B2 (en) 2015-03-24 2017-03-28 International Business Machines Corporation Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest
US20160285970A1 (en) * 2015-03-27 2016-09-29 International Business Machines Corporation Network communication between virtual machine applications via direct memory access
WO2016205976A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Apparatus and method for efficient communication between virtual machines
US10108462B2 (en) 2016-02-12 2018-10-23 Microsoft Technology Licensing, Llc Virtualizing sensors
US10275169B2 (en) 2017-01-18 2019-04-30 Microsoft Technology Licensing, Llc Shared memory in memory isolated partitions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1497469A (en) * 2002-10-24 2004-05-19 国际商业机器公司 System and method for transmitting data between virtual machine or other computer entity
EP1722301A2 (en) * 2005-05-12 2006-11-15 Microsoft Corporation Partition bus

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089558B2 (en) 2001-03-08 2006-08-08 International Business Machines Corporation Inter-partition message passing method, system and program product for throughput measurement in a partitioned processing environment
US7263593B2 (en) 2002-11-25 2007-08-28 Hitachi, Ltd. Virtualization controller and data transfer control method
TWI312965B (en) 2003-02-26 2009-08-01 Novatek Microelectronics Corp Micro-system for burn-in system program from a plug-able subsystem to main memory and method thereof
US8145470B2 (en) 2007-06-27 2012-03-27 Microsoft Corporation Accelerated access device emulator access scheme in a hypervisor environment with child and root partitions
US7870174B2 (en) 2007-10-11 2011-01-11 Oracle International Corporation Reference partitioned tables
US7958293B2 (en) 2008-05-07 2011-06-07 International Business Machines Corporation Virtualized serial attached SCSI adapter
US8312230B2 (en) 2008-06-06 2012-11-13 International Business Machines Corporation Dynamic control of partition memory affinity in a shared memory partition data processing system
CN101763328B (en) 2008-12-25 2014-01-15 鸿富锦精密工业(深圳)有限公司 Data transmitting system and method thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1497469A (en) * 2002-10-24 2004-05-19 国际商业机器公司 System and method for transmitting data between virtual machine or other computer entity
EP1722301A2 (en) * 2005-05-12 2006-11-15 Microsoft Corporation Partition bus

Also Published As

Publication number Publication date
WO2012050724A3 (en) 2012-07-05
CN102707986A (en) 2012-10-03
US20120084517A1 (en) 2012-04-05
HK1175002A1 (en) 2016-08-19
WO2012050724A2 (en) 2012-04-19
US8463980B2 (en) 2013-06-11
EP2622461A4 (en) 2014-06-11
EP2622461A2 (en) 2013-08-07

Similar Documents

Publication Publication Date Title
US9060006B2 (en) Application mirroring using multiple graphics contexts
CN100527085C (en) Systems and methods for initializing multiple virtual processors within a single virtual machine
US9110702B2 (en) Virtual machine migration techniques
US9389895B2 (en) Virtual storage target offload techniques
CN101924693B (en) Method and system for migrating processes between virtual machines
US8819705B2 (en) User interaction support across cross-environment applications
JP5599804B2 (en) The method of allocation virtual storage
KR101527991B1 (en) Graphics remoting architecture
US7899864B2 (en) Multi-user terminal services accelerator
US20060184938A1 (en) Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
US20120254862A1 (en) Efficent migration of virtual functions to enable high availability and resource rebalance
CN101849224B (en) Method for remote processing system and a three-dimensional image data
US8933949B2 (en) User interaction across cross-environment applications through an extended graphics context
US9047102B2 (en) Instant remote rendering
EP1722301B1 (en) Partition bus
JP4764345B2 (en) System and method for unified composition engine in a graphics processing system
US8665265B2 (en) Methods and systems for remoting three dimensional graphics
US7650603B2 (en) Resource management for virtualization of graphics adapters
US6044408A (en) Multimedia device interface for retrieving and exploiting software and hardware capabilities
US8773443B2 (en) Compression for co-processing techniques on heterogeneous graphics processing units
CN103270492B (en) Method for network-enabled application can be accelerated graphics hardware and system
US20110153715A1 (en) Lightweight service migration
US9146762B2 (en) Specialized virtual machine to virtualize hardware resource for guest virtual machines
US20120042252A1 (en) Cloning Or Extending A Computer Desktop On A Wireless Display Surface
US10217444B2 (en) Method and system for fast cloning of virtual machines

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1175002

Country of ref document: HK

C41 Transfer of patent application or patent right or utility model
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C14 Grant of patent or utility model
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1175002

Country of ref document: HK