CN110383255B - 用于管理对物理设备的客户分区访问的方法和计算设备 - Google Patents
用于管理对物理设备的客户分区访问的方法和计算设备 Download PDFInfo
- Publication number
- CN110383255B CN110383255B CN201880016697.8A CN201880016697A CN110383255B CN 110383255 B CN110383255 B CN 110383255B CN 201880016697 A CN201880016697 A CN 201880016697A CN 110383255 B CN110383255 B CN 110383255B
- Authority
- CN
- China
- Prior art keywords
- physical device
- control plane
- access
- physical
- computing device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/206—Memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种计算设备包括主机、一个或多个客户分区、以及一个或多个物理设备。物理设备可以至少部分由主机虚拟化并且可用于客户分区。物理设备包括控制平面和数据平面两者。主机提供客户分区对物理设备的数据平面的至少一部分的直接访问。但是,主机虚拟化物理设备的控制平面,以向客户分区暴露不是物理设备的实际控制平面的物理设备的控制平面。访问(例如,读取、写入、修改等)物理设备的控制平面的请求由主机从客户分区接收,并且适当地转换到物理设备的控制平面。
Description
背景技术
随着计算技术的进步,设计者不断发现改进计算设备的性能的新方法。这导致计算设备运行得更快,以降低的功耗运行,具有更小的形状因子等等。虽然这些改进对用户有益,但是它们并非没有其问题。一个这样的问题是,可能难以设计提供期望功能同时以安全的方式操作以保护计算设备免受恶意用户或程序的攻击的计算设备。无法提供这样的保护可能导致计算设备的性能不良和/或使计算设备易受恶意用户或程序的攻击,从而导致用户对其设备的不满。
发明内容
提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
根据一个或多个方面,在计算设备的主机中,标识将被使得对计算设备的客户分区可访问的物理设备。虚拟化物理设备的第一部分以用于由客户分区访问物理设备,第一部分包括物理设备的控制平面的至少一部分。管理客户分区对物理设备的第一部分的访问。允许客户分区直接访问物理设备的第二部分,第二部分包括物理设备的数据平面的至少一部分。
附图说明
参考附图描述详细描述。在附图中,附图标记的最左边的(多个)数字标识首次出现附图标记的图。在说明书和附图中的不同实例中使用相同的附图标记可以指示相似或相同的项目。附图中表示的实体可以指示一个或多个实体,并且因此可以在讨论中将单数或复数形式的实体可互换地引用。
图1是示出根据一个或多个实施例的实现管理对物理设备的客户分区访问的示例计算设备的框图。
图2是示出根据一个或多个实施例的对物理设备的客户分区访问的示例的框图。
图3示出了根据一个或多个实施例的将物理设备数据和控制平面的页映射到暴露的物理设备数据和控制平面的页的示例。
图4是示出根据一个或多个实施例的用于管理对物理设备的客户分区访问的示例过程的流程图。
图5示出了包括示例计算设备的示例系统,该示例计算设备表示可以实现本文中描述的各种技术的一个或多个系统和/或设备。
具体实施方式
本文中讨论管理对物理设备的客户分区访问。计算设备包括一个或多个客户分区和主机。每个客户分区与其他客户分区隔离,以通过阻止在一个客户分区中运行的程序访问其他客户分区中的存储器或程序来提供安全性。计算设备中的主机管理客户分区,包括客户分区的创建。
计算设备还包括一个或多个物理设备。物理设备可以至少部分由主机虚拟化并且可用于客户分区。这允许每个客户分区访问其自己的物理设备版本。
物理设备包括控制平面和数据平面两者。控制平面是指程序与物理设备交互以配置或控制物理设备的方式,诸如收集关于物理设备的信息,设置物理设备的控制或配置值,等等。不同的存储器地址或地址范围可以与控制平面相关联。数据平面是指程序使用物理设备以向物理设备发送数据和/或从物理设备接收数据的方式。不同的存储器地址或地址范围可以与数据平面相关联。应当注意,数据平面和控制平面不需要是物理构造,并且可以是交织的并且是存储器的相同区域的全部部分。例如,控制平面可以包含数据位置,并且数据平面可以包含控制位置。
使用本文中讨论的技术,主机向客户分区提供对物理设备的数据平面的至少一部分的直接访问。这种直接访问允许在客户分区中运行的程序直接写入物理设备和/或从物理设备读取。主机不需要虚拟化提供直接访问的数据平面的部分,从而提高了客户分区中的程序可以访问数据平面的该部分的速度,因为不需要花费时间或计算工作量在虚拟化数据平面的该部分中。
然而,主机确实虚拟化物理设备的至少一些控制平面。该虚拟化是指主机向客户分区暴露不是物理设备的实际控制平面的物理设备的至少一些控制平面。访问(例如,读取、写入、修改等)物理设备的暴露的控制平面的请求由主机从客户分区接收,并且适当地转换到物理设备的控制平面。因此,客户分区不能直接访问物理设备的至少一些控制平面。
本文中讨论的技术通过限制客户分区对物理设备的控制平面的访问来提高计算设备的安全性。该技术通过允许客户分区直接访问物理设备的数据平面来进一步改善计算设备的性能。因此,在客户分区中运行的程序可以直接(并且因此快速)在物理设备的数据平面上向物理设备发送数据和/或从物理设备接收数据,但是被阻止直接访问物理设备的控制平面(并且因而可能干扰物理设备的操作)。
图1是示出根据一个或多个实施例的实现管理对物理设备的客户分区访问的示例计算设备100的框图。计算设备100可以是各种不同类型的设备,诸如台式计算机、服务器计算机、膝上型计算机或上网本计算机、移动设备(例如,平板计算机或平板设备、蜂窝或其他无线电话(例如,智能电话)、笔记本计算机、移动台)、可穿戴设备(例如,眼镜、头戴式显示器、手表、手镯、增强现实(AR)设备、虚拟现实(VR)设备)、娱乐设备(例如,娱乐设施、可通信地耦合到显示设备的机顶盒、游戏控制台)、物联网(IoT)设备(例如,具有软件、固件和/或硬件以允许与其他设备通信的对象或物品)、电视或其他显示设备、汽车计算机等。因此,计算设备100的范围可以从具有大量存储器和处理器资源的完整资源设备(例如,个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏控制台)。
计算设备100包括主机102、一个或多个(x个)客户分区104(1)、……、104(x)、以及一个或多个(y个)物理设备106(1)、……、106(y)。每个客户分区104是指包括一个或多个组件的隔离会话。这些组件包括例如虚拟设备(例如,一个或多个处理器、存储器、存储设备)、基本操作系统(例如,操作系统内核)、用户模式环境、应用等。基本操作系统组件向客户机中的组件提供各种不同的低级系统服务,诸如会话管理、程序执行、输入/输出服务、资源分配等。基本操作系统组件可以是完整操作系统,或者替代地仅是完整操作系统的一部分(例如,如果客户机与主机共享大部分操作系统(特别地是内核),则基本操作系统组件可以是非常小的组件)。用户模式环境组件为客户机中的应用提供运行时环境(例如,Java运行时环境、.NET框架等)。应用组件是(例如,由用户、管理员、其他程序等)期望在客户机中运行的应用(例如,web服务、计算引擎等)。
客户分区104可以被实现为的一种类型的分区被称为进程容器。对于进程容器,客户机内的应用进程运行,就像它们在它们自己的单独系统(例如,计算设备)上操作一样,这是使用命名空间隔离来完成的。主机102实现命名空间隔离。命名空间隔离为客户分区中的进程提供组合视图,该组合视图包括主机102的共享部分和每个容器特定的主机的隔离部分,诸如文件系统、配置、网络等。
客户分区104可以被实现为的另一种类型的客户机被称为虚拟化容器。对于虚拟化容器,虚拟化容器在轻量级虚拟机中运行,该虚拟机不具有分配给虚拟机的计算设备100的特定物理存储器,而是具有虚拟地址支持的存储器页。因此,分配给虚拟机的存储器页可以换出到页文件。轻量级虚拟机的使用在客户机中运行的进程之间提供附加的安全性和隔离。因此,虽然进程容器使用进程隔离或基于筒仓(silo)的进程隔离来实现其包容(containment),但虚拟化容器使用基于虚拟机的保护来实现超出正常进程边界所能提供的更高级别的隔离。客户分区104还可以使用计算设备100的物理存储器在虚拟机中运行,并且本文中讨论的技术与虚拟机一起使用。这种使用物理存储器的虚拟机实现了更高的隔离,例如,在由于性能或安全性考虑而不期望使用虚拟机的虚拟存储器的情况下。
主机102包括客户分区管理器112、控制平面接口114和可选的数据平面接口116。主机102还管理一个或多个容器或虚拟机,示出为客户分区104。客户分区管理器112通过“克隆”客户分区模板(其是指将客户分区模板复制到计算设备100的存储器中以创建新的客户分区104)等以各种方式中的任何一种创建客户分区,诸如从头构建或生成客户分区。当新创建的客户分区104正在运行时,主机102管理客户分区104,例如确定客户分区104何时运行(即,执行)。当计算设备100中不再需要或不再期望客户分区104时,客户分区管理器112还管理客户分区104的拆除或删除。
主机102可以以各种不同的方式实现。在一个或多个实施例中,主机102被实现为管理程序。附加地或替代地,主机102被实现为主机操作系统(例如,主机102可以被实现为被称为主机分区的分区)。
每个物理设备106是至少部分虚拟化到客户分区104的硬件设备。虽然被示出为计算设备100的一部分,但是物理设备106可以替代地与计算设备100分离但是耦合到计算设备100。物理设备106可以是在客户分区104中运行的程序可以将数据传送到其和/或从其接收数据的各种不同类型的设备中的任何一种。物理设备106的示例包括网络接口卡、存储控制器、打印机、图形处理器或芯片、现场可编程门阵列(FPGA)等。
在一个或多个实施例中,物理设备106是存储器映射的输入/输出(I/O)设备。存储器映射的I/O设备是指包括与计算设备100的物理存储器相关联(也称为映射到计算设备100的物理存储器)的一个或多个区域(例如,存储器、寄存器等)的设备。在计算设备100上运行的程序可以通过访问与那些一个或多个区域相关联的计算设备100的物理存储器来访问物理设备106的一个或多个区域。例如,物理设备106可以监测计算设备100的地址总线并且响应于以那些一个或多个区域中的地址为目标的任何请求(例如,返回请求被读取的数据,存储请求被写入的数据)。
每个物理设备106包括控制平面和数据平面两者。控制平面是指在计算设备100上运行的程序(包括在客户分区104中运行的程序)与物理设备106交互以控制物理设备106的方式,诸如收集关于物理设备106的信息,设置物理设备106的控制或配置值,等等。在一个或多个实施例中,控制平面被包括在与计算设备100的物理存储器相关联(也称为映射到计算设备100的物理存储器)的一个或多个区域中。
数据平面是指在计算设备100上运行的程序(包括在客户分区104中运行的程序)使用物理设备106的方式。物理设备106的这种使用包括将数据发送到物理设备106(例如,将数据写入物理设备106)和/或从物理设备106接收数据(例如,从物理设备106读取数据)。在一个或多个实施例中,数据平面被包括在与计算设备100的物理存储器相关联(也称为映射到计算设备100的物理存储器)的一个或多个区域中。
使用本文中讨论的技术,主机102虚拟化物理设备106的控制平面的至少一部分。可以虚拟化全部物理设备106的控制平面,或者替代地,可以虚拟化仅一些物理设备106的控制平面。该虚拟化是指主机102向客户分区104暴露不是物理设备116的实际控制平面的物理设备106的控制平面。控制平面接口114管理将物理设备116的控制平面暴露给客户分区104,并且管理从客户分区104(包括在客户分区104中运行的程序)接收的对控制平面的访问请求。访问(例如,读取、写入、修改等)物理设备106的控制平面的请求由控制平面接口116从客户分区104接收,并且适当地转换到物理设备的控制平面。该转换可以以各种方式执行,如下面更详细地讨论的。因此,客户分区104不能直接访问物理设备106的控制平面的至少一部分。
主机102可选地允许客户分区104直接访问物理设备106的控制平面的至少一部分。这种直接访问允许客户分区104(以及在客户分区104中运行的程序)直接写入物理设备106和/或从物理设备106读取。可以允许直接访问全部物理设备106的至少部分控制平面,或者替代地,可以允许直接访问仅一些物理设备106的至少部分控制平面。因此,主机102可以允许客户分区104直接访问全部物理设备控制平面204,仅直接访问物理设备控制平面204的一部分,或者不允许直接访问任何物理设备控制平面204。可以虚拟化客户分区202不可以直接访问的物理设备控制平面204的部分(一些或全部)。
类似地,主机102允许客户分区104直接访问物理设备106的数据平面的至少一部分。这种直接访问允许客户分区104(以及在客户分区104中运行的程序)直接写入物理设备106和/或从物理设备106读取。可以允许直接访问全部物理设备106的数据平面的至少一部分,或者替代地,可以允许直接访问仅一些物理设备106的数据平面的至少一部分。因此,主机102可以允许客户分区104直接访问全部物理设备数据平面206,仅直接访问物理设备数据平面206的一部分,或者不允许直接访问任何物理设备数据平面206。可以虚拟化客户分区202不可以直接访问的物理设备控制数据平面206的部分(一些或全部)。
主机102可选地虚拟化至少一个物理设备106的数据平面的一部分。可以虚拟化全部物理设备106的数据平面的部分,或者替代地,可以虚拟化仅一些物理设备106的数据平面的部分。该虚拟化是指主机102向客户分区104暴露不是物理设备116的数据平面的实际部分的物理设备106的数据平面的一部分。数据平面接口116管理向客户分区104暴露物理设备116的数据平面的一部分,并且管理对从客户分区104(包括在客户分区104中运行的程序)接收的数据平面的一部分的访问请求。访问(例如,读取、写入、修改等)物理设备106的数据平面的一部分的请求由数据平面接口116从客户分区104接收,并且适当地转换到物理设备的数据平面。该转换可以以各种方式执行,如下面更详细地讨论的。
图2是示出根据一个或多个实施例的对物理设备的客户分区访问的示例的框图。图2的示例包括客户分区202、物理设备控制平面204和物理设备数据平面206。客户分区202可以是图1的任何客户分区104。物理设备控制平面204是图1的物理设备106的控制平面,并且物理设备数据平面206是图1的物理设备106的数据平面。图2的示例还包括控制平面接口114和数据平面接口116。
客户分区202可以直接访问物理设备数据平面206的至少一部分,如箭头208所示。应当注意,本文中对直接访问物理设备数据平面206的一部分的客户分区202的引用包括在直接访问物理设备数据平面的一部分的客户分区202中运行的程序。可选地,客户分区202可以直接访问物理设备控制平面204的至少一部分,如箭头210所示。应当注意,本文中对直接访问物理设备控制平面204的一部分的客户分区202的引用包括在直接访问物理设备数据平面的一部分的客户分区202中运行的程序。
客户分区对物理设备的直接访问使得物理设备对客户分区可见。客户分区202对物理设备数据平面206和/或物理设备控制平面204的至少一部分的直接访问可以以各种不同的方式完成。在一个或多个实施例中,实现客户分区202、控制平面接口114和数据平面接口116的计算设备100包括支持客户分区对物理设备的直接访问的处理器。例如,计算设备100可以包括支持用于定向I/O(VT-d)技术的虚拟化技术的处理器,其提供客户分区对物理设备的直接访问。
控制平面接口114包括控制模块212和暴露的物理设备控制平面214。在一个或多个实施例中,物理设备控制平面204的至少一部分由控制平面接口114虚拟化,从而形成客户分区202可访问的暴露的物理设备控制平面214。暴露的物理设备控制平面214对于客户分区202看起来好像它是物理设备控制平面204,并且客户分区202不需要知道(并且通常不知道)暴露的物理设备控制平面214实际上不是物理设备控制平面204。
由客户分区202对暴露的物理设备控制平面214的访问请求(例如,读取和/或写入请求)由控制模块212分析并且适当地处理。这些访问请求可以以各种不同的方式分析和处理。在一个或多个实施例中,控制模块212保持暴露的物理设备控制平面214中的地址到物理设备控制平面204中的地址的映射。控制模块212使用该映射来将从客户分区202接收的地址请求中的地址转换为物理设备控制平面204的适当地址。
在一个或多个实施例中,控制模块212还对从客户分区202接收的访问请求应用一个或多个规则、标准和/或算法,以确定是否允许将这些访问请求应用于物理设备控制平面204。这些规则、标准和/或算法可以考虑各种因素,诸如访问请求的地址、发出请求的程序、物理设备等。例如,控制模块212可以应用指定一个特定程序不能访问物理设备控制平面204但是其他程序可以访问控制平面204的一个或多个规则。
应当注意,不需要将全部物理设备控制平面204映射到暴露的物理设备控制平面214。控制平面接口114可以确定客户分区202不能访问物理设备控制平面204的一部分,并且从暴露的物理设备控制平面214中排除物理设备控制平面204的该部分。控制平面接口114可以以各种不同的方式确定客户分区202不能访问物理设备控制平面204的哪些部分,诸如预先配置有客户分区202不能访问物理设备控制平面204的哪些部分的指示,从远程服务(例如,与物理设备的制造商、计算设备100的制造商等相关联的服务)获取客户分区202不能访问物理设备控制平面204的哪些部分的指示。
作为示例,物理设备控制平面204可以由四页存储器(例如,四个4千字节存储器块)组成。虽然本文中参考存储器页讨论示例,但是应当注意,本文中讨论的技术可以应用于存储器的任何块、区域、段等。控制平面接口114可以确定物理设备控制平面204的页1、3和4包含客户分区202可访问的信息,但是物理设备控制平面204的页2包含客户分区202不可访问的信息。在这种情况下,暴露的物理设备控制平面214包括映射到物理设备控制平面204的页1、3和4的三个页,但是没有映射到物理设备控制平面204的页2的页。因此,暴露的物理设备控制平面214可以简单地不包括映射到客户分区202不可访问的地址的地址,而不是简单地忽略访问请求或者不将访问请求映射到客户分区202不可访问的地址。
还应当注意,暴露的物理设备控制平面214中的存储器页可以以非连续顺序映射到物理设备控制平面204的页。暴露的物理设备控制平面214中的存储器页被映射到物理设备控制平面204的页的顺序可以以各种不同的方式确定,诸如在控制平面接口114中预先配置,从远程服务(例如,与物理设备的制造商、计算设备100的制造商等相关联的服务)获取,等等。
例如,物理设备控制平面204可以包括存储器页1、2、3和4。然而,暴露的物理设备控制平面214可以将那些存储器页分别映射到存储器页3、2、4和1。作为另一示例,物理设备控制平面204可以包括存储页1、3和4。然而,暴露的物理设备控制平面214可以将那些存储页分别映射到存储页3、1和4。
客户分区202可以直接访问物理设备控制平面204的哪些部分以及物理设备控制平面204的哪些部分被虚拟化可以以各种不同方式确定。例如,控制平面接口114可以预先配置有客户分区202可以直接访问物理设备控制平面204的哪些部分以及哪些部分被虚拟化的指示。作为另一示例,控制平面接口114可以从远程服务(例如,与物理设备的制造商、计算设备100的制造商等相关联的服务)获取客户分区202可以直接访问物理设备控制平面204的哪些部分以及哪些部分被虚拟化的指示。
如上所述,客户分区202可以直接访问物理设备数据平面206的至少一部分。在一个或多个实施例中,可以虚拟化物理设备数据平面206的至少一部分。在这样的实施例中,数据平面接口116包括控制模块216和暴露的物理设备数据平面218。物理设备数据平面206由控制平面接口114虚拟化,以使得暴露的物理设备数据平面218可用于客户分区202。暴露的物理设备数据平面218对于客户分区202看起来好像它是物理设备数据平面206,并且客户分区202不需要知道(并且通常不知道)暴露的物理设备数据平面218实际上不是物理设备数据平面206。
由客户分区202对暴露的物理设备数据平面218的访问请求(例如,读取和/或写入请求)由控制模块216分析并且适当地处理。这些访问请求可以以各种不同的方式分析和处理,类似于上面讨论的由控制模块212执行的分析和处理。在一个或多个实施例中,控制模块216保持暴露的物理设备数据平面218中的地址到物理设备数据平面206中的地址的映射。控制模块216使用该映射来将从客户分区202接收的地址请求中的地址转换为物理设备数据平面206的适当地址。
客户分区202可以直接访问物理设备数据平面206的哪些部分以及物理设备数据平面206的哪些部分被虚拟化可以以各种不同方式确定。例如,数据平面接口116可以预先配置有客户分区202可以直接访问物理设备数据平面206的哪些部分以及哪些部分被虚拟化的指示。作为另一示例,数据平面接口116可以从远程服务(例如,与物理设备的制造商、计算设备100的制造商等相关联的服务)获取客户分区202可以直接访问物理设备数据平面206的哪些部分以及哪些部分被虚拟化的指示。
还应当注意,类似于上面关于暴露的物理设备控制平面214中的存储器页的讨论,暴露的物理设备数据平面218中的存储器页可以以非连续顺序映射到物理设备数据平面206的页。暴露的物理设备数据平面218中的存储器页被映射到物理设备数据平面206的页的顺序可以以各种不同的方式确定,诸如在数据平面接口116中预先配置,从远程服务(例如,与物理设备的制造商、计算设备100的制造商等相关联的服务)获取,等等。
图3示出了根据一个或多个实施例的将物理设备数据和控制平面的页映射到暴露的物理设备数据和控制平面的页的示例。在图3的示例中示出的是物理设备302和虚拟设备304。物理设备302可以是图1的任何物理设备106。虚拟设备304是暴露给客户分区(例如,图1的任何客户分区104)的虚拟化设备。还示出了控制平面接口114和数据平面接口116。
物理设备302包括物理设备控制平面204和物理设备数据平面206。物理设备数据平面206包括多个区域,示出为区域1、区域2、区域3、区域4和区域5。物理设备302是存储器映射的I/O设备,并且物理设备数据平面206的每个区域是与实现控制平面接口114和数据平面接口116的计算设备100的物理存储器相关联的存储器地址范围。
虚拟设备304包括映射的物理设备控制平面306和映射的物理设备数据平面308。映射的物理设备控制平面306由控制平面接口114暴露给客户分区作为暴露的物理设备控制平面。类似地,映射的物理设备数据平面308由数据平面接口116暴露作为暴露的物理设备数据平面。
映射的物理设备控制平面306由控制平面接口114映射到与物理设备302相关联的物理设备控制平面204的存储器地址。映射的物理设备数据平面308由数据平面映射接口116到物理设备数据平面206的与物理设备302相关联的存储器地址。映射的物理设备数据平面308包括多个区域,示出为区域1、区域2、区域3、区域4和区域5。然而,数据平面接口116以非连续顺序将映射的物理设备数据平面308的区域映射到物理设备数据平面206的区域。如图3所示,映射的物理设备数据平面308的区域1由数据平面接口116映射到物理设备数据平面206的区域1,映射的物理设备数据平面308的区域2由数据平面接口116映射到物理设备数据平面206的区域4,映射的物理设备数据平面308的区域3由数据平面接口116映射到物理设备数据平面206的区域5,映射的物理设备数据平面308的区域4由数据平面接口116映射到物理设备数据平面206的区域3,并且映射的物理设备数据平面308的区域5由数据平面接口116映射到物理设备数据平面206的区域2。
图4是示出根据一个或多个实施例的用于管理对物理设备的客户分区访问的示例过程400的流程图。过程400由诸如图1的计算设备100等设备执行,并且可以用软件、固件、硬件或其组合来实现。过程400被示出为一组动作,并且不限于所示的用于执行各种动作的操作的顺序。过程400是用于管理对物理设备的客户分区访问的示例过程;本文中参考不同附图包括管理对物理设备的客户分区访问的附加讨论。
在过程400中,标识将被使得对计算设备的客户分区可访问的物理设备(动作402)。物理设备可以以各种方式标识,诸如在计算设备的主机中预先配置,从远程服务获取,等等。可以使客户分区可以访问计算设备中的全部物理设备,或者替代地可以使客户分区可以访问少于全部物理设备。
虚拟化包括物理设备的控制平面的至少一部分的物理设备的一部分(动作404)。该虚拟化可以包括将暴露给客户分区的物理设备控制平面的不同部分映射到物理设备的控制平面。
管理客户分区对物理设备的虚拟化部分的访问(动作406)。该管理包括将来自暴露的物理设备控制平面的访问请求映射到物理设备控制平面。如上所述,还可以实现各种附加规则或标准,以确定是否在物理设备上执行所接收的访问请求。
允许客户分区直接访问包括物理设备的数据平面的至少一部分的物理设备的附加部分(动作408)。该附加部分未虚拟化,以允许客户分区更快地访问物理设备的附加部分。
返回图1,应当注意,保持在控制平面接口114和/或数据平面接口116中的映射可以随时间改变。这些改变可以在计算设备100的操作期间进行,并且可以在启动计算设备100与关闭计算设备100之间的时间跨度中进行多个这样的改变。例如,当计算设备100启动时,可以允许第一客户分区直接访问物理设备数据平面的一部分。在稍后的某个时间或响应于某个事件(诸如切换到执行第二客户分区),可以虚拟化第一客户分区可以直接访问的物理设备数据平面的一部分。在稍后的某个另外的时间或响应于某个其他事件(诸如再次切换到执行第一客户分区),可以再次使第一客户分区能够直接访问第一客户分区先前能够直接访问的物理设备数据平面的一部分。
本文中讨论的技术允许通过虚拟化物理设备的部分同时仅直接访问物理设备的其他部分来将单个物理设备分成多个虚拟设备。客户分区无需完全直接访问全部物理设备。通过虚拟化物理设备的控制平面的至少一部分,由客户分区访问的控制平面的部分以软件或固件实现,减少了对支持多个客户分区的控制平面的附加硬件的需要。
尽管本文中参考特定模块讨论特定功能,但是应当注意,本文中讨论的各个模块的功能可以分成多个模块,和/或多个模块的至少一些功能可以组合成单个模块。另外,本文中讨论为执行动作的特定模块包括执行该动作的特定模块本身,或者替代地,该特定模块调用或以其他方式访问执行该动作(或者结合该特定模块执行该动作)的另一组件或模块。因此,执行动作的特定模块包括执行该动作的特定模块本身和/或由执行该动作的特定模块调用或以其他方式访问的另一模块。
图5总体上在500处示出了包括示例计算设备502的示例系统,该示例计算设备502表示可以实现本文中描述的各种技术的一个或多个系统和/或设备。计算设备502可以是例如服务提供器的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统和/或任何其他合适的计算设备或计算系统。
如图所示的示例计算设备502包括处理系统504、一个或多个计算机可读介质506、以及彼此通信地耦合的一个或多个I/O接口508。虽然未示出,但是计算设备502还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传输系统。系统总线可以包括利用各种总线架构中的任何总线架构的不同总线结构中的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或处理器或本地总线。还构想了各种其他示例,诸如控制和数据线。
处理系统504表示使用硬件执行一个或多个操作的功能。因此,处理系统504被示出为包括可以被配置为处理器、功能块等的硬件元件510。这可以包括用硬件实现为专用集成电路或使用一个或多个半导体形成的其他逻辑器件。硬件元件510不受形成它们的材料或其中采用的处理机制的限制。例如,处理器可以包括(多个)半导体和/或晶体管(例如,电子集成电路(IC))。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质506被示出为包括存储器/存储设备512。存储器/存储设备512表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储设备512可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、电阻RAM(ReRAM)、闪存、光盘、磁盘等)。存储器/存储设备512可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移除介质(例如,闪存、可移除硬盘驱动器、光盘等)。计算机可读介质506可以以下面进一步描述的各种其他方式配置。
一个或多个输入/输出接口508表示允许用户向计算设备502输入命令和信息并且还允许使用各种输入/输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的电容或其他传感器)、相机(例如,其可以采用诸如红外频率等可见或不可见波长来检测不涉及作为手势的触摸的移动)等。输出设备的示例包括显示设备(例如,显示器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备502可以以下面进一步描述的各种方式配置以支持用户交互。
计算设备502还包括控制和/或数据平面接口514。控制和/或数据平面接口514提供对客户分区对物理设备的访问请求的各种管理,并且可以是如上所述的图1、2或3的控制平面接口114和/或数据平面接口116。
本文中可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。通常,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文中使用的术语“模块”、“功能”和“组件”通常表示软件、固件、硬件或其组合。本文中描述的技术的特征是平台无关的,这表示这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或通过其传输。计算机可读介质可以包括可以由计算设备502访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
“计算机可读存储介质”是指能够持久存储信息和/或与仅仅信号传输、载波或信号本身相反的有形存储的介质和/或设备。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括以适于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据等信息的方法或技术实现的硬件,诸如易失性和非易失性、可移除和不可移除介质和/或存储设备。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或者适于存储期望的信息并且可以由计算机访问的其他存储设备、有形介质或制品。
“计算机可读信号介质”是指被配置为诸如经由网络向计算设备502的硬件传输指令的信号承载介质。信号介质通常可以包含计算机可读指令、数据结构、程序模块或者诸如载波、数据信号或其他传输机制等调制数据信号中的其他数据。信号介质还包括任何信息传递介质。术语“调制数据信号”表示以使得能够在信号中对信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质以及诸如声学、RF、红外和其他无线介质等无线介质。
如前所述,硬件元件510和计算机可读介质506表示在一些实施例中可以用于实现本文中描述的技术的至少一些方面的以硬件形式实现的指令、模块、可编程设备逻辑和/或固定设备逻辑。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅或其他硬件设备的其他实现的组件。在这个上下文中,硬件元件可以作为执行由硬件元件实现的指令、模块和/或逻辑定义的程序任务的处理设备以及用于存储用于执行的指令的硬件设备(例如,先前描述的计算机可读存储介质)进行操作。
还可以采用前述的组合来实现本文中描述的各种技术和模块。因此,软件、硬件或程序模块、以及其他程序模块可以实现为包含在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件510实现的一个或多个指令和/或逻辑。计算设备502可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,作为由计算设备502作为软件可执行的模块的模块的实现可以至少部分以硬件实现,例如,通过使用处理系统的计算机可读存储介质和/或硬件元件510。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备502和/或处理系统504)执行/操作以实现本文中描述的技术、模块和示例。
如图5中进一步所示,示例系统500使得无处不在的环境能够在个人计算机(PC)、电视设备和/或移动设备上运行应用时获取无缝的用户体验。服务和应用在所有三种环境中基本上相似地运行,以便在使用应用,玩视频游戏,观看视频等时从一个设备转换到下一设备时获取共同的用户体验。
在示例系统500中,多个设备通过中央计算设备互连。中央计算设备可以是多个设备的本地设备,或者可以远离多个设备。在一个或多个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路连接到多个设备的一个或多个服务器计算机的云。
在一个或多个实施例中,该互连架构使得能够跨多个设备递送功能以向多个设备的用户提供共同且无缝的体验。多个设备中的每个可以具有不同的物理要求和能力,并且中央计算设备使用平台来实现向设备传递体验,该体验既是针对设备定制的又是所有设备共有的。在一个或多个实施例中,创建一类目标设备,并且为通用的一类设备定制体验。可以通过物理特征、使用类型或设备的其他共同特性来定义一类设备。
在各种实现中,计算设备502可以采用各种不同的配置,诸如用于计算机516、移动设备518和电视520使用。这些配置中的每个包括可以具有通常不同的构造和能力的设备,并且因此计算设备502可以根据一个或多个不同的设备类来配置。例如,计算设备502可以实现为计算机516类设备,其包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本计算机等。
计算设备502还可以实现为包括移动设备的移动设备518类设备,诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等。计算设备502还可以实现为电视520类设备,其包括在休闲观看环境中具有或连接到通常更大的屏幕的设备。这些设备包括电视机、机顶盒、游戏控制台等。
本文中描述的技术可以由计算设备502的这些各种配置支持,并且不限于本文中描述的技术的特定示例。该功能也可以全部或部分地通过使用分布式系统来实现,诸如经由平台524通过“云”522来实现,如下所述。
云522包括和/或表示用于资源526的平台524。平台524抽象云522的硬件(例如,服务器)和软件资源的基础功能。资源526可以包括在远离计算设备502的服务器上执行计算机处理时可以使用的应用和/或数据。资源526还可以包括通过因特网和/或通过订户网络(诸如蜂窝或Wi-Fi网络)提供的服务。
平台524可以抽象资源和功能以将计算设备502与其他计算设备连接。平台524还可以用于抽象资源的缩放以提供与经由平台524实现的资源526的遭遇的需求对应的规模级别。因此,在互连的设备实施例中,本文中描述的功能的实现可以分布在整个系统500中。例如,功能可以部分地在计算设备502上以及经由抽象云522的功能的平台524来实现。
在本文中的讨论中,描述了各种不同的实施例。应当了解和理解,本文中描述的每个实施例可以单独使用或与本文中描述的一个或多个其他实施例结合使用。本文中讨论的技术的其他方面涉及以下实施例中的一个或多个。
一种在计算设备中实现的方法,该方法包括:在计算设备的主机中标识将被使得对计算设备的客户分区可访问的物理设备;虚拟化物理设备的第一部分以用于由客户分区访问物理设备,第一部分包括物理设备的控制平面的至少一部分;管理客户分区对物理设备的第一部分的访问;以及允许客户分区直接访问物理设备的第二部分,第二部分包括物理设备的数据平面的至少一部分。
作为任何上述方法的替代或补充,还包括以下中的任何一个或组合:第一部分包括物理设备的数据平面的至少一部分;被包括在第一部分中的物理设备的数据平面的一个或多个部分在计算设备的操作期间改变;管理客户分区对物理设备的第一部分的访问包括接收以第一地址为目标的访问请求,第一地址是暴露的物理设备控制平面中的存储器地址,将第一地址映射到第二地址,第二地址是物理设备控制平面中的存储器地址,并且使访问请求以第二地址为目标;该方法还包括确定控制平面的要被包括在第一部分中的一部分,控制平面的一部分包括少于全部控制平面,在暴露的物理设备控制平面中包括控制平面的一部分,但是在暴露的物理设备控制平面中不包括控制平面的其他部分;该方法还包括在暴露的物理设备控制平面中包括以非连续顺序映射到控制平面的一部分的区域;第一部分包括物理设备的全部控制平面;该方法还包括允许客户分区直接访问物理设备的控制平面的附加部分,控制平面的附加部分是与物理设备的第一部分不同的部分;客户分区管理器包括管理程序;客户分区管理器包括主机操作系统。
一种计算设备,包括:被配置为虚拟化物理设备的第一部分以用于由客户分区访问物理设备的控制平面接口,第一部分包括物理设备的控制平面的至少一部分,控制平面接口还被配置为管理客户分区对物理设备的第一部分的访问;以及被配置为虚拟化物理设备的第二部分以用于由客户分区访问物理设备的数据平面接口,第二部分包括物理设备的数据平面的一部分,数据平面接口还被配置为管理客户分区对物理设备的第二部分的访问,并且允许客户分区直接访问未被包括在第二部分中的数据平面的部分。
作为任何上述计算设备的替代或补充,还包括以下中的任何一个或组合:被包括在第二部分中的物理设备的数据平面的一个或多个部分在计算设备的操作期间改变;控制平面接口还被配置为向客户分区暴露暴露的物理设备控制平面,暴露的物理设备控制平面映射到小于物理设备的全部控制平面的物理设备的控制平面的一部分;暴露的物理设备控制平面包括以非连续顺序映射到物理设备的控制平面的一部分的区域。
一种计算设备,包括:处理器;物理设备;以及计算机可读存储介质,其上存储有多个指令,这些指令响应于处理器的执行而引起处理器:虚拟化物理设备的第一部分以用于由客户分区访问物理设备,第一部分包括物理设备的控制平面的至少一部分;管理客户分区对物理设备的第一部分的访问;并且允许客户分区直接访问物理设备的第二部分,第二部分包括物理设备的数据平面的至少一部分。
作为任何上述计算设备的替代或补充,还包括以下中任何一个或组合:第一部分包括物理设备的数据平面的至少一部分;被包括在第一部分中的物理设备的数据平面的一个或多个部分在计算设备的操作期间改变;其中管理客户分区对物理设备的第一部分的访问是接收以第一地址为目标的访问请求,第一地址是暴露的物理设备控制平面中的存储器地址,将第一地址映射到第二地址,第二地址是物理设备控制平面中的存储器地址,并且使访问请求以第二地址为目标;多个指令还引起处理器确定控制平面的要被包括在第一部分中的一部分,控制平面的一部分包括少于全部控制平面,并且在暴露的物理设备控制平面中包括控制平面的一部分,但是在暴露的物理设备控制平面中不包括控制平面的其他部分;多个指令还引起处理器在暴露的物理设备控制平面中包括以非连续顺序映射到控制平面的一部分的区域。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但是应当理解,所附权利要求书中限定的主题不必限于上述具体特征或动作。而是,上述具体特征和动作被公开作为实现权利要求的示例形式。
Claims (20)
1.一种在包括存储器空间的计算设备中实现的方法,所述方法包括:
在所述计算设备的主机中标识将被使得对所述计算设备的客户分区可访问的物理设备,所述物理设备包括存储器映射的I/O设备,在所述存储器映射的I/O设备处,所述物理设备的第一部分和第二部分分别被映射到所述存储器空间的第一区域和第二区域;
由所述计算设备的所述主机虚拟化所述物理设备的所述第一部分以用于由所述客户分区对所述物理设备的间接访问,所述第一部分包括针对所述物理设备的控制平面的至少一部分,所述虚拟化提供通过所述主机对客户分区可用的暴露的控制平面;
所述虚拟化包括由所述计算设备的所述主机对由所述客户分区对所述物理设备的所述第一部分的访问进行中介,其中所述客户分区与所述暴露的控制平面对接,并且其中所述主机通过在所述第一部分和第一存储器区域之间映射所述访问来虚拟化对所述控制平面的访问;以及
允许所述客户分区直接访问所述物理设备的非虚拟化的所述第二部分,非虚拟化的所述第二部分包括针对所述物理设备的数据平面的至少一部分,其中所述客户分区通过直接访问第二存储器区域来直接访问所述第二部分。
2.根据权利要求1所述的方法,所述第一部分包括针对所述物理设备的所述数据平面的至少一部分。
3.根据权利要求2所述的方法,其中被包括在所述第一部分中的针对所述物理设备的所述数据平面的一个或多个部分在所述计算设备的操作期间改变。
4.根据权利要求1所述的方法,虚拟化由所述客户分区对所述物理设备的所述第一部分的访问包括:
接收以第一地址为目标的访问请求,所述第一地址是暴露的物理设备控制平面中的存储器地址;
将所述第一地址映射到第二地址,所述第二地址是所述物理设备控制平面中的存储器地址;以及
实现以所述第二地址为目标的所述访问请求。
5.根据权利要求1所述的方法,还包括:
确定所述控制平面的要包括在所述第一部分中的一部分,所述控制平面的所述一部分包括少于全部所述控制平面;
在暴露的物理设备控制平面中包括所述控制平面的所述一部分,但是不在所述暴露的物理设备控制平面中包括所述控制平面的10其他部分。
6.根据权利要求5所述的方法,还包括在所述暴露的物理设备控制平面中包括以非连续顺序被映射到所述控制平面的所述一部分的区域。
7.根据权利要求1所述的方法,所述第一部分包括针对所述物理设备的全部所述控制平面。
8.根据权利要求1所述的方法,还包括允许所述客户分区直接访问针对所述物理设备的所述控制平面的附加部分,所述控制平面的所述附加部分是与所述物理设备的所述第一部分不同的部分。
9.根据权利要求1所述的方法,所述客户分区管理器包括管理程序。
10.根据权利要求1所述的方法,所述客户分区管理器包括主机操作系统。
11.一种计算设备,包括:
总线;
处理器;
经由所述总线与存储器通信的物理设备;
所述存储器,存储:
主机层,被配置为管理客户分区的执行和虚拟化由所述客户分区对所述处理器和存储器的访问;
所述主机层包括控制平面接口,所述控制平面接口被暴露给所述客户分区并且被配置为虚拟化物理设备的第一部分以用于由客户分区对所述物理设备的所述第一部分的间接虚拟化访问,所述第一部分包括针对所述物理设备的控制平面的至少一部分,所述控制平面接口还被配置为管理由所述客户分区对所述物理设备的所述第一部分的访问;以及
所述主机层还包括数据平面接口,所述数据平面接口被暴露给所述客户分区并且被配置为虚拟化所述物理设备的第二部分以用于由所述客户分区对所述物理设备的所述第二部分的间接虚拟化访问,所述第二部分包括针对所述物理设备的数据平面的一部分,所述数据平面接口还被配置为管理由所述客户分区对所述物理设备的所述第二部分的间接访问,其中所述主机层还被配置为允许所述客户分区直接访问未被包括在所述第二部分中的所述数据平面的非虚拟化部分。
12.根据权利要求11所述的计算设备,被包括在所述第二部分中的针对所述物理设备的所述数据平面的一个或多个部分在所述计算设备的操作期间改变。
13.根据权利要求11所述的计算设备,所述控制平面接口还被配置为将暴露的物理设备控制平面暴露给所述客户分区,所述暴露的物理设备控制平面映射到所述物理设备的所述控制平面的一部分,所述物理设备的所述控制平面的所述一部分小于所述物理设备的全部所述控制平面。
14.根据权利要求13所述的计算设备,所述暴露的物理设备控制平面包括以非连续顺序被映射到所述物理设备的所述控制平面的25所述一部分的区域。
15.一种计算设备,包括:
处理器;
物理设备;以及
计算机可读存储介质,其上存储有多个指令,所述多个指令响应于由所述处理器执行而引起所述处理器:
执行管理客户分区的执行的主机;
由所述主机虚拟化所述物理设备的第一部分以用于由所述客户分区对所述物理设备的所述第一部分的间接虚拟化访问,所5述第一部分包括针对所述物理设备的控制平面的至少一部分;
由所述主机管理由所述客户分区对所述物理设备的所述第一部分的间接虚拟化访问;以及
允许所述客户分区直接访问所述物理设备的非虚拟化的第二部分,所述非虚拟化的第二部分包括针对所述物理设备的数据平面的至少一部分。
16.根据权利要求15所述的计算设备,所述第一部分包括针对所述物理设备的所述数据平面的至少一部分。
17.根据权利要求16所述的计算设备,其中被包括在所述第一部分中的针对所述物理设备的所述数据平面的一个或多个部分在所述计算设备的操作期间改变。
18.根据权利要求15所述的计算设备,其中管理由所述客户分区对所述物理设备的所述第一部分的访问包括:
接收以第一地址为目标的访问请求,所述第一地址是暴露的物理设备控制平面中的存储器地址;
将所述第一地址映射到第二地址,所述第二地址是所述物理设备控制平面中的存储器地址;以及
实现以所述第二地址为目标的所述访问请求。
19.根据权利要求15所述的计算设备,所述多个指令还引起所述处理器:
确定所述控制平面的要包括在所述第一部分中的一部分,所述控制平面的所述一部分包括少于全部所述控制平面;以及
在暴露的物理设备控制平面中包括所述控制平面的所述一部分,但是在所述暴露的物理设备控制平面中不包括所述控制平面的其他部分。
20.根据权利要求19所述的计算设备,所述多个指令还引起所述处理器在所述暴露的物理设备控制平面中包括以非连续顺序被映射到所述控制平面的所述一部分的区域。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/451,943 US10394585B2 (en) | 2017-03-07 | 2017-03-07 | Managing guest partition access to physical devices |
US15/451,943 | 2017-03-07 | ||
PCT/US2018/020063 WO2018164889A1 (en) | 2017-03-07 | 2018-02-28 | Managing guest partition access to physical devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110383255A CN110383255A (zh) | 2019-10-25 |
CN110383255B true CN110383255B (zh) | 2023-08-29 |
Family
ID=61627189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880016697.8A Active CN110383255B (zh) | 2017-03-07 | 2018-02-28 | 用于管理对物理设备的客户分区访问的方法和计算设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10394585B2 (zh) |
EP (1) | EP3593252A1 (zh) |
CN (1) | CN110383255B (zh) |
WO (1) | WO2018164889A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099789B2 (en) | 2018-02-05 | 2021-08-24 | Micron Technology, Inc. | Remote direct memory access in multi-tier memory systems |
US11157289B2 (en) * | 2019-05-13 | 2021-10-26 | Intel Corporation | Power management method and apparatus for virtualized I/O devices |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1831790A (zh) * | 2005-03-08 | 2006-09-13 | 微软公司 | 虚拟机环境中的客机物理地址虚拟化方法和系统 |
CN101253481A (zh) * | 2005-08-30 | 2008-08-27 | 微软公司 | 具有多层虚拟化机制的分层虚拟化 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7467381B2 (en) | 2003-12-16 | 2008-12-16 | Intel Corporation | Resource partitioning and direct access utilizing hardware support for virtualization |
US7613847B2 (en) * | 2006-05-16 | 2009-11-03 | Hewlett-Packard Development Company, L.P. | Partially virtualizing an I/O device for use by virtual machines |
US9189265B2 (en) * | 2006-12-21 | 2015-11-17 | Vmware, Inc. | Storage architecture for virtual machines |
US7752360B2 (en) | 2007-05-16 | 2010-07-06 | Nuova Systems, Inc. | Method and system to map virtual PCIe I/O devices and resources to a standard I/O bus |
US8473947B2 (en) | 2010-01-18 | 2013-06-25 | Vmware, Inc. | Method for configuring a physical adapter with virtual function (VF) and physical function (PF) for controlling address translation between virtual disks and physical storage regions |
EP2601776B1 (en) | 2010-08-06 | 2015-10-28 | Citrix Systems, Inc. | Systems and methods for a para-virtualized driver in a multi-core virtual packet engine device |
US8666723B2 (en) | 2011-08-31 | 2014-03-04 | Oregon State Board Of Higher Education On Behalf Of Portland State University | System and methods for generating and managing a virtual device |
CA2867302A1 (en) | 2012-03-14 | 2013-09-19 | Convergent .Io Technologies Inc. | Systems, methods and devices for management of virtual memory systems |
US9135052B2 (en) | 2012-11-06 | 2015-09-15 | Red Hat Israel, Ltd. | Distributed multiple monitor display split using multiple client devices in a virtualization system |
US9384024B2 (en) | 2012-12-18 | 2016-07-05 | Dynavisor, Inc. | Dynamic device virtualization |
US8954788B2 (en) | 2013-02-13 | 2015-02-10 | Lsi Corporation | Methods and structure for single root input/output virtualization enhancement in peripheral component interconnect express systems |
US9910689B2 (en) | 2013-11-26 | 2018-03-06 | Dynavisor, Inc. | Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host |
US9411765B2 (en) | 2013-12-20 | 2016-08-09 | Qualcomm Incorporated | Methods of using a peripheral component interconnect express (PCIE) device in a virtual environment |
US9501245B2 (en) | 2014-05-02 | 2016-11-22 | Cavium, Inc. | Systems and methods for NVMe controller virtualization to support multiple virtual machines running on a host |
US9898430B2 (en) * | 2014-11-12 | 2018-02-20 | Vmware, Inc. | Tracking virtual machine memory modified by a single root I/O virtualization (SR-IOV) device |
-
2017
- 2017-03-07 US US15/451,943 patent/US10394585B2/en active Active
-
2018
- 2018-02-28 EP EP18710972.3A patent/EP3593252A1/en active Pending
- 2018-02-28 WO PCT/US2018/020063 patent/WO2018164889A1/en unknown
- 2018-02-28 CN CN201880016697.8A patent/CN110383255B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1831790A (zh) * | 2005-03-08 | 2006-09-13 | 微软公司 | 虚拟机环境中的客机物理地址虚拟化方法和系统 |
CN101253481A (zh) * | 2005-08-30 | 2008-08-27 | 微软公司 | 具有多层虚拟化机制的分层虚拟化 |
Non-Patent Citations (1)
Title |
---|
郝继锋 ; 任晓瑞 ; 胡宁 ; .一种基于微核架构的虚拟化设备高效访问模型.电子技术.(第07期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110383255A (zh) | 2019-10-25 |
EP3593252A1 (en) | 2020-01-15 |
US20180260235A1 (en) | 2018-09-13 |
US10394585B2 (en) | 2019-08-27 |
WO2018164889A1 (en) | 2018-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170322824A1 (en) | Cloning Computing Device Containers | |
EP3047419B1 (en) | Virtual secure mode for virtual machines | |
CN110199271B (zh) | 用于现场可编程门阵列虚拟化的方法和设备 | |
US10296454B2 (en) | Granular unmapping with variable addressing in a data store | |
US10768827B2 (en) | Performance throttling of virtual drives | |
US20100115510A1 (en) | Virtual graphics device and methods thereof | |
US8132167B2 (en) | Context based virtualization | |
US20190004841A1 (en) | Memory Sharing For Virtual Machines | |
US9460009B1 (en) | Logical unit creation in data storage system | |
WO2012162420A2 (en) | Managing data input/output operations | |
US11768783B2 (en) | Local non-volatile memory express virtualization device | |
US9262337B2 (en) | Dynamically determining a translation lookaside buffer flush promotion threshold value | |
US20180165133A1 (en) | Shared Memory Using Memory Mapped Files Between Host And Guest On A Computing Device | |
US10346065B2 (en) | Method for performing hot-swap of a storage device in a virtualization environment | |
US9424205B2 (en) | System and method for SATA virtualization and domain protection | |
US20190391835A1 (en) | Systems and methods for migration of computing resources based on input/output device proximity | |
CN110383255B (zh) | 用于管理对物理设备的客户分区访问的方法和计算设备 | |
US10908958B2 (en) | Shared memory in memory isolated partitions | |
US9766918B2 (en) | Virtual system device identification using GPU to host bridge mapping | |
US20230281135A1 (en) | Method for configuring address translation relationship, and computer system | |
US20230185593A1 (en) | Virtual device translation for nested virtual machines | |
US11635970B2 (en) | Integrated network boot operating system installation leveraging hyperconverged storage | |
US20160026567A1 (en) | Direct memory access method, system and host module for virtual machine | |
US12020053B2 (en) | Exposing untrusted devices to virtual machines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |