CN107818054A - 分配连续物理内存空间到设备的方法及系统 - Google Patents
分配连续物理内存空间到设备的方法及系统 Download PDFInfo
- Publication number
- CN107818054A CN107818054A CN201710177522.2A CN201710177522A CN107818054A CN 107818054 A CN107818054 A CN 107818054A CN 201710177522 A CN201710177522 A CN 201710177522A CN 107818054 A CN107818054 A CN 107818054A
- Authority
- CN
- China
- Prior art keywords
- frame
- memory
- page
- physical memory
- virtualization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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
-
- 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/023—Free address space management
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0662—Virtualisation 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/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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/45583—Memory management, e.g. access or allocation
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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
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)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开一种分配连续物理内存空间到设备的方法及系统。该方法包括:将物理内存的给定区域标记为可迁移的;从操作系统内核接收分配内存给设备的请求,该请求指示在虚拟化内存中的可用虚拟化页面的第一集合;确定将要分配给该设备的该物理内存中的连续帧的集合,该连续帧的集合被映射到虚拟化页面的第二集合;通过管理程序禁能该可用虚拟化页面的第一集合和该虚拟化页面的第二集合的映射;以及在禁能该映射后,将该连续帧的集合中的一个或多个被占用的帧迁移出该给定区域,以允许将该连续帧的集合分配给该设备。本发明所公开的分配连续物理内存空间到设备的方法及系统,即使当请求较大的内存大小时,分配也就可很快速并且稳定。
Description
技术领域
本发明有关于一种计算系统中的内存分配(memory allocation)。
背景技术
现代计算机系统通常使用内存管理单元(memory management unit,MMU)来将虚拟地址转换为用于中央处理单元(CPU)的物理地址。当应用程序请求连续范围的虚拟内存(virtual memory)时,MMU可以将虚拟地址的范围映射到可以配置的分散的物理内存地址。现代的计算机系统一般包括需要在设备地址空间(device address space)中用以操作的连续范围内存的多个装置。例如,相机需要用以操作的内存缓冲区。一些系统使用分散收集器(scatter-gatherer)或输入输出内存管理单元(input-output MMU,IOMMU)来收集碎片物理内存块,使其成为设备地址空间的连续内存块。因此,在设备地址空间中的大的内存区域可供分配,而不需要在物理内存中是连续的。
嵌入式系统的各种设备并不支持分散收集器以及IOMMU。因此,这些设备需要连续的物理内存块来供操作。这样的设备的例子包括,但不限于,相机、硬件视频解码器和编码器等。这些设备中的一些需要具有大的连续物理内存的缓冲区。例如,全高清(full high-definition)帧的大小超过2百万像素,这需要超过6MB的内存来存储。由于内存碎片,在系统执行一段时间后,这样大块的连续物理内存块是非常不可能可供使用的。
一些嵌入式设备对缓冲区有额外的要求,例如,它们只能采用分配在特定位置或存储体(memory bank)的缓冲区来操作(如果系统有一个以上的存储体),或采用对齐到特定内存边界的缓冲区来操作。这额外增加了操作系统中的内存分配算法的复杂性。
一些操作系统为应用程序或驱动程序提供内存分配函数,以获得连续物理内存区域(contiguous physical memory region)。例如,连续内存分配器(ContiguousMemory Allocator,CMA),在操作系统内核中运行,以允许连续物理内存块的分配。
CMA的问题是可扩展性。多个内核子系统或多个虚拟化环境(例如,虚拟机)可以同时在系统中运行。当通过CMA的API要求物理连续内存区域时,CMA开始将在这个区域内的所有占用的内存页迁移至其他空闲存储空间。然而,一些内存页面可能被锁定或被其他进程使用,以及CMA在执行页面迁移过程时需要维护和跟踪页面状态。因此,在不同的子系统或虚拟机之间的高度的页面同步可能是必要的。由于这样一个通过CMA执行的复杂的同步机制,当所要求的内存区域大小增长时,CMA分配时间变得越来越低效以及不稳定。因此,CMA可能有时不能满足某些应用的时延要求,如视频播放。
发明内容
有鉴于此,本发明提供一种分配连续物理内存空间到设备的方法及系统。
依据本发明一实施方式,提供一种分配连续物理内存空间到设备的方法,包括:将物理内存的给定区域标记为可迁移的;从操作系统内核接收分配内存给设备的请求,该请求指示在虚拟化内存中的可用虚拟化页面的第一集合;确定将要分配给该设备的该物理内存中的连续帧的集合,该连续帧的集合被映射到虚拟化页面的第二集合;通过管理程序禁能该可用虚拟化页面的第一集合和该虚拟化页面的第二集合的映射;以及在禁能该映射后,将该连续帧的集合中的一个或多个被占用的帧迁移出该给定区域,以允许将该连续帧的集合分配给该设备。
依据本发明另一实施方式,提供一种分配连续物理内存空间到设备的系统,包括:一个或多个处理器,承载由管理程序管理的一个或多个虚拟机;物理内存;以及一个或多个设备,耦接至该一个或多个处理器和该物理内存;其中,该管理程序执行以下步骤:将该物理内存的给定区域标记为可迁移的;从操作系统内核接收分配内存给设备的请求,该请求指示在虚拟化内存中的可用虚拟化页面的第一集合;确定将要分配给该设备的该物理内存中的连续帧的集合,该连续帧的集合被映射到虚拟化页面的第二集合;禁能该可用虚拟化页面的第一集合和该虚拟化页面的第二集合的映射;以及在禁能该映射后,将该连续帧的集合中的一个或多个被占用的帧迁移出该给定区域,以允许将该连续帧的集合分配给该设备。
本发明所提供的分配连续物理内存空间到设备的方法及系统,即使当请求较大的内存大小时,分配也就可很快速并且稳定。
对于已经阅读后续由各附图及内容所显示的较佳实施方式的本领域的技术人员来说,本发明的各目的是明显的。
附图说明
图1为根据本发明一实施例的操作在虚拟化环境中的系统的示意图。
图2为根据本发明一实施例的两阶段(two-stage)地址转换的示意图。
图3为根据本发明一实施例的系统的初始化进程的示意图。
图4为根据本发明一实施例的连续物理内存区域的分配过程的示意图。
图5为根据本发明一实施例的释放过程的示意图。
图6为根据本发明一实施例的安全内存区域(secure memory region)和正常内存区域(normal memory region)为相互独立(isolated)的系统的示意图。
图7为根据本发明一实施例的安全内存区域的分配过程的示意图。
图8为根据本发明一实施例的安全内存区域的释放过程的示意图。
图9为根据本发明一实施例的分配连续物理内存空间给设备的方法的流程图。
具体实施方式
现在,将详细说明本发明的优选实施方式,在附图中示出了这些实施方式的示例。虽然将结合这些优选实施方式描述本发明,但是应当理解的是,这些实施方式不旨在将本发明限于这些实施方式。相反,本发明旨在覆盖可以包括在由所附权利要求书限定的本发明的精神和范围内的替代形式、修改形式和等价形式。另外,在以下对本发明的具体描述中,提出多个具体的细节以提供对本发明的完整理解。然而,本领域的技术人员容易理解,没有这些具体的细节,也可以实践本发明。另外,没有详细描述已知的方法、过程、组件和电路,从而不会不必要地掩盖本发明的各个方面。
术语“内存”和“系统内存,除非另有特定说明,是指两个具有物理地址(PA)空间的物理内存。术语“虚拟化内存(virtualized memory)”是指虚拟机(virtual machines,VMs)操作于其中的地址空间(即,中间物理地址(intermediate physical address,IPA)空间)。术语“虚拟内存(virtual memory)”是指进程(processes)(例如,应用程序)操作于其中的地址空间(例如,虚拟地址(virtual address,VA)空间)。另外,术语“映射”,除非另有特定说明,是指数据结构的使用,如页面表(page table),以将一个地址空间的内存块与另一个地址空间相关。
本发明的实施例提供了一种内存分配机制,其利用内存虚拟化(memoryvirtualization)和两个阶段的地址转换(address translation)。即使当请求较大的内存大小时,分配也可很快速并且稳定。在一实施例中,管理程序(hypervisor),也称为虚拟机监视器,执行来自内存的可迁移区域(migratable zone)的物理内存的连续区域的分配。如果在连续区域中的一个或多个帧被占用(即,此前已经被分配),管理程序将这些被占用的帧迁移出可迁移区域,以使该连续区域可分配。如此一来,客户操作系统(例如,VMs的操作系统)避免了在不同内核子系统间的复杂的页面同步任务。
图1为根据本发明一实施例的操作在虚拟化环境中的系统100。系统100包括一个或多个处理器110(例如,中央处理单元(CPU)),其通过互连(interconnect)130耦接至系统内存170(例如,动态随机存取存储器(DRAM)或其他易失性或非易失性随机存取存储器)。该系统100还包括一个或多个设备150(也被称为“物理设备”)。设备150的例子包括,但不限于:音频/视频设备、网络接口设备、打印机、图形模块、摄像机、视频解码器、加密引擎等。在一个实施例中,该设备150通过直接存储器存取(direct memory access,DMA)引擎140耦接至互连130。应当理解的是,为了简洁起见,此处省略了许多其他的系统组件。
在一个实施例中,系统100可以是移动计算机和/或通信设备(例如,智能手机、平板电脑、笔记本电脑等)的一部分。在另一个实施例中,系统100可以是服务器计算机的一部分。
系统100运行多个软件模块,其中的一个例子如虚线椭圆160中所示的。在一个实施例中,处理器110中的一个或多个可承载(host)多个虚拟机111。每个虚拟机111运行一个客户操作系统(OS)112;不同的虚拟机111可运行相同或不同的客户操作系统112。客户操作系统112也被称为操作系统内核。处理器110还承载管理程序180,管理程序180模拟虚拟机111的底层硬件(underlying hardware)以及管理系统资源。管理程序180也可称为虚拟机监视器(virtual machine monitor,VMM)。在一个实施例中,管理程序180可以是在系统100上运行的主机操作系统的一部分。
在一个实施例中,直接存储器存取引擎140为设备150执行直接存储器存取事务(DMA transactions)。在一个实施例中,可分配系统内存170的一地址范围给每个设备150,其指定作为设备150的DMA缓冲区的内存区域,以直接与给定的虚拟机111传送数据。DMA缓冲区包含在物理地址空间中的连续内存区域,其中还包括一个或多个固定大小的内存块(例如,每块4K字节)。
图2为根据本发明一实施例的两阶段地址转换(two-stage addresstranslation)的示意图。第一阶段地址转换是在虚拟地址(virtual address,VA)空间和中间物理地址(Intermediate Physical Address,IPA)空间之间。请参照图1,在图1的虚拟机111上运行的每个进程都被分配了一个称为VA空间的私有地址空间。VA空间被划分成小的块,每个块被称为页面(page)。IPA空间也被划分成小的块,每个块被称为IPA页面(IPApage)。每个虚拟机111分配一组IPA页面以作为虚拟化内存(virtualized memory)。根据客户操作系统112的第一页面表210,客户操作系统112执行进程的VA空间和IPA空间之间的地址转换,其中进程在客户操作系统112上运行。第一页面表210,也被称为第一级页面表,具有多个条目,其中每个条目描述一页面和一对应的IPA页面之间的映射。在一个实施例中,在第一页面表210中的一个或多个条目可以设置为“不映射(no_map)”,这意味着任何进程都不能访问对应的页面。在一个实施例中,客户操作系统112可以为不同的进程使用不同的第一页面表210,以独立(isolate)这些进程之间的内存空间。
第二阶段地址转换延伸了不同的虚拟机之间的内存独立。根据第二页面表220,第二阶段地址转换是在IPA空间和物理地址(physical address,PA)空间之间。第二页面表220,也被称为第二级页面表,由管理程序180管理。在一个实施例中,在第二页面表220中的一个或多个条目可以被设置为“不映射,”这意味着管理程序180禁止虚拟机访问IPA页面中的一些。通过将不同的虚拟机IPA页面映射到PA空间的不同帧,管理程序180实施不同虚拟机之间的内存独立。在一个实施例中,IPA空间和PA空间之间的地址映射是相同的映射(identical mapping);即,IPA页面的数目与帧的数目相同。在另一个实施例中,IPA空间和PA空间之间的地址映射是在IPA空间中的相邻页面映射到在PA空间中的相邻页面。在另一个实施例中,IPA空间和PA空间之间的地址映射是按照预定的一对一映射函数来进行的。虽然在下面的实施例中之描述和展示了相同的映射,应当理解的是,IPA空间和PA空间之间的映射并不限于此。
图2的实施例展示了可迁移区域250,其为物理内存的一连续部分,其中所有的帧可以被迁移到物理内存的其他部分。迁移是指将帧的内容复制到内存中的其他部分、并更新对该帧的所有引用的过程。当该帧的内容被迁移后,旧的帧被释放以供再利用。图2的实施例表明,PA空间中的可迁移区域250映射到IPA空间中的连续可迁移区域252。在另一个实施例中,如果使用IPA空间和PA空间之间的另一种映射函数,则IPA空间中的对应的可迁移区域252不需要是连续的。
图2也说明了两级映射的一个例子,其中VA空间中的三个被占用的页面230映射到IPA空间中的可迁移区域252(如IPA页面231),以及,由于相同的映射,也映射到PA空间中的可迁移区域250(如帧251)。当图1的设备150中之一请求物理内存的连续区域的分配时,管理程序180可以识别可迁移区域250中的连续内存260。假设除了三个帧251,在连续内存260中的所有帧均为空闲的,可供分配。在管理程序180可以分配连续内存260之前,管理程序180将帧251迁移至PA空间的另一部分,例如,帧253。然后,连续内存260可被分配给提出请求的设备150。
图3为根据本发明一实施例的系统100的初始化进程的示意图。请再参照图1所示的系统100,在系统初始化时管理程序180在客户操作系统112之前启动。管理程序180确定分配多少帧给客户操作系统112;例如,N帧。在步骤31中,管理程序180为客户操作系统112初始化相同映射的第二页面表320,以将IPA空间的地址映射到PA空间。这个IPA空间称为虚拟化内存,客户操作系统112使用并管理该IPA空间。
在客户操作系统112启动后,在步骤32中,客户操作系统112中的DMA内存分配服务器(DMAMemory Allocation Service,DMAS)310将虚拟化内存中的一区域标记(mark)为可迁移的,并通知管理程序180中的页面迁移服务器(Page Migration Service,PMS)330可迁移区域的位置;例如,通过传递可迁移区域的IPA地址。在步骤33中,PMS 330将物理内存中对应的区域标记为可迁移区域352,其将被作为物理内存池,以供分配连续物理内存(在图3中显示为虚线矩形)。可迁移区域352不是由DMAS 310保留的(reserved);在客户操作系统112上的其他服务器和应用程序也可以使用可迁移区域352。在系统初始化完成后,设备驱动程序可以从DMAS 310请求连续物理内存区域以作为DMA缓冲区。
在图3所示的实施例中,可迁移区域352的位置是根据客户操作系统112发来的信息来确定的。在另一个实施例中,管理程序180或其他系统软件(如引导装载程序(bootloader))可以产生信息,这样一来,可迁移区域352的位置也可以确定。
图4为根据本发明一实施例的连续物理内存区域的分配过程的示意图。在该实施例中,连续物理内存区域用作为DMA缓冲区;应当理解的是,连续物理内存区域可以用于不同的目的,而不限于DMA缓冲区。在步骤41中,设备驱动程序(Device Driver,DRV)440请求DMAS 310分配连续内存区域以作为DMA缓冲区,并等待响应。该请求指定了DMA缓冲区的大小(例如,三个页面)。在步骤42中,DMAS 310发送请求到客户操作系统112中的内存分配器(Memory Allocator,MEMS)450,以分配虚拟化内存中的可用页面。MEMS 450从其内存池(例如,P1、P70和PN)中分配请求数量的可用页面。在步骤43中,MEMS 450将分配的页面回报(return)给DMAS 310。在步骤44中,DMAS 310将分配的页面放置(place)到页面列表(pagelist)中,并发送迁移请求至管理程序180中的PMS 330,该迁移请求具有请求的DMA缓冲区大小和页面列表作为参数(argument)。然后DMAS 310等待响应。
在步骤45中,PMS 330从其物理内存池352选择连续目标内存区域(如,FN-2、FN-1和FN),这足以满足请求的DMA缓冲区大小。PMS 330将来自DMAS 310的页面列表放置到目标列表(destination list)中,并将在目标内存区域中的所有帧增加到源列表(sourcelist)中。在图4的实施例中,在每个列表的初始值是:源列表=[FN-2,FN-1,FN],目标列表=[F1,F70,FN],和不迁移(no_migration)列表=[]。
PMS 330执行步骤45的子步骤451以准备页面迁移。在子步骤451中,通过设置对应的条目至不映射以将第二页面表320更新为第二页面表421,PMS330移除源列表、目标列表和不迁移列表中所有帧的所有IPA至PA映射。此外,对于源列表和目标列表中的每一帧,PMS330从源列表和目标列表中移除帧,然后将该移除的帧添加到不迁移列表。
在上述操作之后,源列表变为[FN-2,FN-1],目的列表变为[F1,F70]以及不迁移列表变为[FN]。客户操作系统112被禁止访问源列表、目标列表和不迁移列表中的帧;更具体地说,任何访问这些帧都会导致“页面错误”并将异常告知管理程序180。在页面迁移完成之前,PMS 330通过禁用第二页面表421中的这些帧的映射,来冻结这些帧的访问。在一个实施例中,通过设置页面表中的帧条目至不映射或其他禁用映射指标,帧的映射可以被禁能。PMS 330保持源列表、目标列表和不迁移列表供后续使用,因为当DMA缓冲区被释放后会使用这些列表。
此时PMS 330已准备好执行页面迁移。在步骤46中,PMS 330将源列表中的帧的内容复制到目标列表中对应的帧(例如,复制FN-2到F1,以及复制FN-1到F70)。迁移完成之后,F1具有FN-2的内容,以及F70具有FN-1内容。
步骤46包括子步骤461,在该步骤中,PMS 330将第二页面表421更新为第二页面表422,如此一来,目表列表中的帧(例如,F1与F70)映射到源列表中的对应帧的IPA页面(例如,FN-2和FN-1)。该映射允许客户操作系统112通过虚拟化内存重新访问这些帧(例如,F1与F70)。值得注意的是,在迁移之后,虚拟化内存的布局是不变的;因此,客户操作系统112是不知道帧的迁移的。
在步骤47中,目标内存区域现在可以使用;PMS 330标记分配的区域。PMS 330将源列表、目标列表、不迁移列表和目标内存区域打包(pack)到数据结构,并将数据结构填加(append)到分配的内存列表(allocated memory list)。最后,PMS 330将目标内存区域的物理地址返回到DMAS 310。在步骤48中,DMAS 310将DMA缓冲区物理地址转发给DRV 440。在步骤49中,在DRV 440接收到DMA缓冲区物理地址后,DRV 440可以使用该缓冲区作为与硬件设备的通信信道(例如,通过DMA引擎140)。
图5为根据本发明一实施例的图4中分配的DMA缓冲区的释放过程的示意图。在步骤51中,DRV 440发送DMA缓冲区物理地址至DMAS 310。在步骤52中,DMAS 310将DMA缓冲区物理地址转发给PMS 330。PMS 330在分配的内存列表中搜索地址,并在步骤53中确定(identify)目标内存区域作为匹配的请求地址。然后,PMS 330提取目标内存区域的源列表、目标列表和不迁移列表。在子步骤531中,PMS 330移除从第二页面表422到源列表、目标列表和不迁移列表的帧的映射,获取第二页面表421。在步骤54中,PMS 330将目标列表的帧的内容复制到源列表,并且在步骤55中,基于源列表目标列表和不迁移列表中的帧,重新构建IPA空间和PA空间之间的映射,以恢复第二页面表320。
在步骤56中,PMS 330向DMAS 310报告成功(report success),以及在步骤57中,DMAS 310向MEMS 450发送请求,以释放在虚拟化内存中的离散的帧(discrete frame)(例如,P1、P70和PN)。在步骤58中,MEMS 450释放这些帧以及向DMAS 310报告成功。在步骤59中,DMAS 310向DRV 440报告成功。
值得注意的是,图4和图5中的第二页面表320、421和422,是由管理程序180管理的相同的页面表数据结构的不同的实例(或快照)。
上面描述了获取和释放连续物理内存区域的过程。在一些实施例中,上述方法可用于安全内存的按需分配。如今,越来越多的智能手机或平板电脑的应用需要在孤立的和安全的环境中执行。例如,数字版权管理(Digital Right Management,DRM)使用访问控制技术来保护高级内容(premium content)不被未授权的用户访问。在安全环境中执行的应用程序通常有它自己的安全内存区域,安全内存区域被保护,并且系统中的其他应用程序无法访问。
图6为根据本发明一实施例的安全内存区域和正常内存区域为相互独立的系统600的示意图。系统600是如图1所示的系统100的一个例子。该系统600包括一个或多个处理器610,其中处理器610的每一个均为图1所示的处理器110的一个例子。每个处理器610可以运行在两个执行环境:正常领域(normal world)和安全领域(secure world)。当处理器610在正常领域中执行程序时,它会发出正常总线事务(normal bus transaction)来访问系统内存670或设备寄存器。当处理器610在安全领域中执行程序时,它可以发出正常或安全总线事务。
处理器610是总线主控(bus masters)的一个例子。总线主控是一种设备,它具有发出总线事务访问外部存储器的能力。总线主控的例子包括,但不限于,处理器610、加密引擎620和视频解码器630。在系统600中,总线主控通过通信总线680进行总线事务。在一般情况下,每个总线主控提供两种类型的设备寄存器:正常寄存器和安全寄存器。正常寄存器可以通过正常总线事务访问,而安全寄存器只可以通过安全总线事务访问。当总线主控从安全寄存器接收到任务时,它开始安全任务,并可能会发出一系列的安全总线事务。该系统600进一步包括存储器保护单元(Memory Protection Unit,MPU)640,其根据总线事务模式和内存区域过滤表650的配置负责过滤掉非法内存访问。由于成本的原因,滤波器表条目通常是非常有限的。在一些实施例中,内存区域过滤表650可能只包含8到16个条目,这意味着它只能描述8到16个连续内存区域的访问权限。
为防止未经授权的用户访问DRM应用的高级内容,系统610在独立的安全内存中放置解密视频流和解码帧。随着高级内容的密度的增加,独立的安全内存的大小也增加。对于具有4K视频流分辨率的超高密度(Ultra High Density,UHD),安全内存的大小通常大于512MB。为了提供如此大的独立的内存,一个常规方法是在系统启动时保留一内存区域,并通过内存区域过滤表650来保护该内存区域。然而,这样一个受保护的内存区域不能被其他应用程序使用,这会导致内存使用率低。
根据本发明的一个实施例,系统600可以按需分配来自正常内存区域的连续帧,并使用内存区域过滤表650来保护分配。图7为根据本发明一实施例的基于图4所描述的方法的安全内存区域的分配过程的示意图。
在步骤701中,正常领域应用程序(Normal World Application,NAP)720开始解码视频帧到独立的内存区域。正常领域应用程序720发送请求到安全内存分配服务器(SecureMemory Allocation Service,SMAS)730,该请求具有请求大小(例如,三个帧)作为参数。
在步骤702中,SMAS 730发送请求到DMAS 310,该请求具有请求大小作为参数。在步骤703中,SMAS 730经过图4的步骤42~47来分配包括帧FN-2、FN-1和FN的连续内存区域。连续内存区域可以被指定为DMA缓冲区。
在步骤704中,DMAS 310将DMA缓冲区的物理地址报告给SMAS 730。在步骤705中,SMAS 730将发送保护内存命令至内存保护服务器(Memory Protection Service,MPS)740,该保护内存命令具有DMA缓冲区的物理地址作为参数。
在步骤706中,MPS 740通过添加条目到内存区域过滤表650和将区域FN-2~FN标记为只能安全访问,来保护DMA缓冲区。步骤706包括子步骤76,在子步骤76中,MPS 740用0来清除DMA缓冲区,并通知安全领域的内存分配器(Memory Allocator in Secure World,SMEMS)750。SMEMS 750然后添加DMA缓冲区到其内存池。
在步骤707中,MPS 740向SMAS 730报告成功。在步骤708中,SMAS 730向NAP 720报告成功。在步骤709中,NAP 720发送解码命令到SAP(secure world application)760,以用于解码安全视频帧。在步骤710中,SAP 760从SMEMS750分配安全缓冲区。在步骤711中,SAP760通知解码器引擎770以解码帧到DMA缓冲区。
图8为根据本发明一实施例的基于图5和图7所描述的方法的安全内存区域的释放过程的示意图。在步骤801中,NAP 720发送停止命令到SAP 760,通知SAP 760停止其操作。在步骤802中,SAP 760停止操作并将安全内存区域释放回SMEMS 750的内存池。在步骤803中,SAP 760向NAP 720报告成功。在步骤804,NAP 720发送命令到SMAS 730以释放安全内存区域。在步骤805中,SMAS 730发送命令到MPS 740以对安全内存区域取消独立(de-isolate)。在步骤806中,MPS 740请求SMEMS 750从其内存池中移除安全内存区域,并清除在此内存区域中的安全内容。步骤806还包括子步骤86,在清除安全内容后,子步骤86从内存区域过滤表650中移除安全内存区域的条目。在步骤807中,MPS 740向SMAS 730报告成功。在步骤808中,SMAS 730发送命令到DMAS 310以释放DMA缓冲区。
在步骤809中,DMAS 310根据图5所示的步骤52~58释放DMA缓冲区。在步骤810中,DMAS 310向SMAS 730报告成功。在步骤811中,SMAS 730向NAP 720报告成功。
图9为根据本发明一实施例的分配连续物理内存空间给设备的方法900的流程图。方法900可以通过由系统承载的管理程序来执行(例如,图1所示的管理程序180),如图1所示的系统100或图6所示的系统600。方法900从步骤910开始,管理程序将物理内存的给定区域标记为可迁移的。在步骤920中,管理程序从操作系统内核接收分配内存给设备的请求,该请求指示虚拟化内存中的可用虚拟化页面的第一集合。在步骤930中,管理程序确定给定区域的连续帧的集合,以分配给设备,其中连续帧的集合映射到虚拟化页面的第二集合。在步骤940中,管理程序禁能可用虚拟化页面的第一集合和虚拟化页面的第二集合的映射。在步骤950中,在禁能映射后,管理程序将连续帧的集合中的一个或多个被占用帧迁移出该给定区域,以允许将连续帧的集合分配给该设备。
图9描述的流程图的操作是参照如图1和6所示的示例性实施例。然而,应当理解的是,图9的流程图的操作可以由除本发明的图1和图6之外的实施例来执行,并且图1和图6可以执行不同于图9的流程图所示的操作。图9所示的流程图显示了本发明的特定实施例进行的特定顺序的操作,应当理解的是,这种特定顺序是示范性的,而非用于限制本发明(例如,在另一实施例中,可以按不同的顺序来执行、合并某些操作步骤、重叠某些操作等)。
以上所述仅为本发明的较佳实施方式,凡依本发明权利要求所做的均等变化和修饰,均应属本发明的涵盖范围。
Claims (22)
1.一种分配连续物理内存空间到设备的方法,其特征在于,包括:
将物理内存的给定区域标记为可迁移的;
从操作系统内核接收分配内存给设备的请求,该请求指示在虚拟化内存中的可用虚拟化页面的第一集合;
确定将要分配给该设备的该物理内存中的连续帧的集合,该连续帧的集合被映射到虚拟化页面的第二集合;
通过管理程序禁能该可用虚拟化页面的第一集合和该虚拟化页面的第二集合的映射;以及
在禁能该映射后,将该连续帧的集合中的一个或多个被占用的帧迁移出该给定区域,以允许将该连续帧的集合分配给该设备。
2.如权利要求1所述的方法,其特征在于,所述将物理内存的给定区域标记为可迁移的步骤还包括:
接收指示该虚拟化内存的连续区域是可迁移的信息;以及
将该虚拟化内存的该连续区域映射到该物理内存的该给定区域。
3.如权利要求1所述的方法,其特征在于,还包括:
初始化页面表,以将该虚拟化内存中的每个虚拟化页面映射至该物理内存中的对应帧,其中该虚拟化内存中的相邻的虚拟化页面映射到该物理内存中的相邻的帧。
4.如权利要求1所述的方法,其特征在于,还包括:
根据预定的映射函数初始化页面表,以将映射该虚拟化内存中的每个虚拟化页面映射至该物理内存中的对应帧。
5.如权利要求1所述的方法,其特征在于,在迁移该一个或多个被占用的帧之后,该方法还包括:
将该连续帧的集合标记为已分配的;以及
发送指向该连续帧的集合的物理地址至该操作系统内核。
6.如权利要求1所述的方法,其特征在于,所述禁能映射的步骤进一步包括:
在该物理内存的该给定区域中创建帧的源列表,其中该帧的源列表匹配该请求指示的缓冲区大小;
创建对应于该可用虚拟化页面的第一集合的帧的目标列表;以及
删除该源列表和该目标列表的至少一个中的该帧的从该虚拟化内存至该物理内存的所有映射。
7.如权利要求6所述的方法,其特征在于,还包括:
创建帧的不迁移列表,该帧包括同时在该源列表和该目标列表中的一个或多个帧;以及
除了在该不迁移列表中的该一个或多个帧,将该源列表中的每一帧迁移为该目标列表中的帧。
8.如权利要求1所述的方法,其特征在于,该请求是由与该设备有关的设备驱动程序启动的,以及该操作系统内核在由该管理程序管理的虚拟机上操作。
9.如权利要求1所述的方法,其特征在于,还包括:
将该连续帧的集合标记为安全内存区域。
10.如权利要求9所述的方法,其特征在于,还包括:
添加条目到过滤表,该过滤表标记在该物理内存中的该安全内存区域,其中该条目包括指向该连续帧的集合的物理地址。
11.如权利要求9所述的方法,其特征在于,该请求是由虚拟机上执行的应用程序启动的,其中该应用程序使得该设备安全地访问该安全内存区域。
12.一种分配连续物理内存空间到设备的系统,其特征在于,包括:
一个或多个处理器,承载由管理程序管理的一个或多个虚拟机;
物理内存;以及
一个或多个设备,耦接至该一个或多个处理器和该物理内存;
其中,该管理程序执行以下步骤:
将该物理内存的给定区域标记为可迁移的;
从操作系统内核接收分配内存给设备的请求,该请求指示在虚拟化内存中的可用虚拟化页面的第一集合;
确定将要分配给该设备的该物理内存中的连续帧的集合,该连续帧的集合被映射到虚拟化页面的第二集合;
禁能该可用虚拟化页面的第一集合和该虚拟化页面的第二集合的映射;以及
在禁能该映射后,将该连续帧的集合中的一个或多个被占用的帧迁移出该给定区域,以允许将该连续帧的集合分配给该设备。
13.如权利要求12所述的系统,其特征在于,当将该物理内存的给定区域标记为可迁移的时,该管理程序进一步执行:
接收指示该虚拟化内存的连续区域是可迁移的信息;以及
将该虚拟化内存的该连续区域映射到该物理内存的该给定区域。
14.如权利要求12所述的系统,其特征在于,该管理程序进一步执行:
初始化页面表,以将该虚拟化内存中的每个虚拟化页面映射至该物理内存中的对应帧,其中该虚拟化内存中的相邻的虚拟化页面映射到该物理内存中的相邻的帧。
15.如权利要求12所述的系统,其特征在于,该管理程序进一步执行:
根据预定的映射函数初始化页面表,以将映射该虚拟化内存中的每个虚拟化页面映射至该物理内存中的对应帧。
16.如权利要求12所述的系统,其特征在于,在迁移该一个或多个被占用的帧之后,该管理程序进一步执行:
将该连续帧的集合标记为已分配的;以及
发送指向该连续帧的集合的物理地址至该操作系统内核。
17.如权利要求12所述的系统,其特征在于,当禁能该映射时,该管理程序进一步执行:
在该物理内存的该给定区域中创建帧的源列表,其中该帧的源列表匹配该请求指示的缓冲区大小;
创建对应于该可用虚拟化页面的第一集合的帧的目标列表;以及
删除该源列表和该目标列表的至少一个中的该帧的从该虚拟化内存至该物理内存的所有映射。
18.如权利要求17所述的系统,其特征在于,该管理程序进一步执行:
创建帧的不迁移列表,该帧包括同时在该源列表和该目标列表中的一个或多个帧;以及
除了在该不迁移列表中的该一个或多个帧,将该源列表中的每一帧迁移到该目标列表中的帧。
19.如权利要求12所述的系统,其特征在于,该请求是由与该设备有关的设备驱动程序启动的,以及该操作系统内核在由该管理程序管理的虚拟机上操作。
20.如权利要求12所述的系统,其特征在于,该管理程序进一步执行以将该连续帧的集合标记为安全内存区域。
21.如权利要求20所述的系统,其特征在于,该管理程序进一步执行以添加条目到过滤表,该过滤表标记在该物理内存中的该安全内存区域,其中该条目包括指向该连续帧的集合的物理地址。
22.如权利要求20所述的系统,其特征在于,该请求是由虚拟机上执行的应用程序启动的,其中该应用程序使得该设备安全地访问该安全内存区域。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/262,710 | 2016-09-12 | ||
US15/262,710 US10019288B2 (en) | 2016-09-12 | 2016-09-12 | Fast and stable mechanism for allocating contiguous memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107818054A true CN107818054A (zh) | 2018-03-20 |
CN107818054B CN107818054B (zh) | 2021-07-02 |
Family
ID=61560775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710177522.2A Active CN107818054B (zh) | 2016-09-12 | 2017-03-23 | 分配连续物理内存空间到设备的方法及系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10019288B2 (zh) |
CN (1) | CN107818054B (zh) |
TW (1) | TW201812588A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111222140A (zh) * | 2018-11-26 | 2020-06-02 | 中国电信股份有限公司 | 安全内存分配方法和装置 |
CN111444016A (zh) * | 2020-03-25 | 2020-07-24 | 福州瑞芯微电子股份有限公司 | 一种内存分配方法和装置 |
CN112783648A (zh) * | 2021-01-18 | 2021-05-11 | 上海壁仞智能科技有限公司 | 基于内存区域的内存分配方法和设备以及访问方法和设备 |
CN115714879A (zh) * | 2022-11-17 | 2023-02-24 | 展讯通信(上海)有限公司 | 数据解码方法、装置、设备及存储介质 |
CN117421118A (zh) * | 2023-10-27 | 2024-01-19 | 海光信息技术股份有限公司 | 安全内存分配、释放和相关配置方法、设备 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9396011B2 (en) * | 2013-03-12 | 2016-07-19 | Qualcomm Incorporated | Algorithm and apparatus to deploy virtual machine monitor on demand |
CN107818014B (zh) * | 2017-10-11 | 2020-06-09 | 晶晨半导体(上海)股份有限公司 | 一种内存分配方法以及多核并发的内存分配方法 |
US10664300B2 (en) * | 2017-12-01 | 2020-05-26 | Red Hat, Inc. | Resetting persistent balloon memory for fragmentation reduction |
US11640311B2 (en) * | 2019-08-27 | 2023-05-02 | EMC IP Holding Company LLC | Providing non-volatile storage for permanent data to virtual machines |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398768A (zh) * | 2008-10-28 | 2009-04-01 | 北京航空航天大学 | 一种分布式虚拟机监视器系统的构建方法 |
CN101561769A (zh) * | 2009-05-25 | 2009-10-21 | 北京航空航天大学 | 一种基于多核平台虚拟机的进程迁移跟踪方法 |
CN102103524A (zh) * | 2010-12-23 | 2011-06-22 | 北京航空航天大学 | 一种面向内存冗余的虚拟机迁移装置及其方法 |
CN102122268A (zh) * | 2010-01-07 | 2011-07-13 | 华为技术有限公司 | 一种虚拟机内存分配访问方法、装置和系统 |
CN102521054A (zh) * | 2011-12-15 | 2012-06-27 | 中国人民解放军国防科学技术大学 | 一种sun4v架构下的虚拟机DMA资源分配方法 |
CN102652305A (zh) * | 2009-12-17 | 2012-08-29 | 微软公司 | 虚拟存储目标卸载技术 |
CN104393973A (zh) * | 2008-03-26 | 2015-03-04 | 高通股份有限公司 | 用于在无线通信系统中将虚拟资源映射到物理资源的方法和装置 |
CN104636186A (zh) * | 2015-01-27 | 2015-05-20 | 华为技术有限公司 | 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备 |
US20150261590A1 (en) * | 2014-03-15 | 2015-09-17 | Zeev Sperber | Conditional memory fault assist suppression |
TW201621632A (zh) * | 2014-12-10 | 2016-06-16 | 晨星半導體股份有限公司 | 嵌入式裝置及其記憶體管理方法 |
US20160224496A1 (en) * | 2011-04-21 | 2016-08-04 | International Business Machines Corporation | Techniques for mapping device addresses to physical memory addresses |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804729B2 (en) * | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
-
2016
- 2016-09-12 US US15/262,710 patent/US10019288B2/en active Active
-
2017
- 2017-03-22 TW TW106109422A patent/TW201812588A/zh unknown
- 2017-03-23 CN CN201710177522.2A patent/CN107818054B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104393973A (zh) * | 2008-03-26 | 2015-03-04 | 高通股份有限公司 | 用于在无线通信系统中将虚拟资源映射到物理资源的方法和装置 |
CN101398768A (zh) * | 2008-10-28 | 2009-04-01 | 北京航空航天大学 | 一种分布式虚拟机监视器系统的构建方法 |
CN101561769A (zh) * | 2009-05-25 | 2009-10-21 | 北京航空航天大学 | 一种基于多核平台虚拟机的进程迁移跟踪方法 |
CN102652305A (zh) * | 2009-12-17 | 2012-08-29 | 微软公司 | 虚拟存储目标卸载技术 |
CN102122268A (zh) * | 2010-01-07 | 2011-07-13 | 华为技术有限公司 | 一种虚拟机内存分配访问方法、装置和系统 |
CN102103524A (zh) * | 2010-12-23 | 2011-06-22 | 北京航空航天大学 | 一种面向内存冗余的虚拟机迁移装置及其方法 |
US20160224496A1 (en) * | 2011-04-21 | 2016-08-04 | International Business Machines Corporation | Techniques for mapping device addresses to physical memory addresses |
CN102521054A (zh) * | 2011-12-15 | 2012-06-27 | 中国人民解放军国防科学技术大学 | 一种sun4v架构下的虚拟机DMA资源分配方法 |
US20150261590A1 (en) * | 2014-03-15 | 2015-09-17 | Zeev Sperber | Conditional memory fault assist suppression |
TW201546610A (zh) * | 2014-03-15 | 2015-12-16 | Intel Corp | 條件式記憶體錯誤輔助抑制 |
TW201621632A (zh) * | 2014-12-10 | 2016-06-16 | 晨星半導體股份有限公司 | 嵌入式裝置及其記憶體管理方法 |
CN104636186A (zh) * | 2015-01-27 | 2015-05-20 | 华为技术有限公司 | 虚拟机内存管理方法、物理主机、pcie设备及其配置方法以及迁移管理设备 |
Non-Patent Citations (1)
Title |
---|
姜力波: "Linux内存管理分析与研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111222140A (zh) * | 2018-11-26 | 2020-06-02 | 中国电信股份有限公司 | 安全内存分配方法和装置 |
CN111444016A (zh) * | 2020-03-25 | 2020-07-24 | 福州瑞芯微电子股份有限公司 | 一种内存分配方法和装置 |
CN111444016B (zh) * | 2020-03-25 | 2023-10-13 | 瑞芯微电子股份有限公司 | 一种内存分配方法和装置 |
CN112783648A (zh) * | 2021-01-18 | 2021-05-11 | 上海壁仞智能科技有限公司 | 基于内存区域的内存分配方法和设备以及访问方法和设备 |
CN115714879A (zh) * | 2022-11-17 | 2023-02-24 | 展讯通信(上海)有限公司 | 数据解码方法、装置、设备及存储介质 |
CN117421118A (zh) * | 2023-10-27 | 2024-01-19 | 海光信息技术股份有限公司 | 安全内存分配、释放和相关配置方法、设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107818054B (zh) | 2021-07-02 |
US10019288B2 (en) | 2018-07-10 |
TW201812588A (zh) | 2018-04-01 |
US20180074863A1 (en) | 2018-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107818054A (zh) | 分配连续物理内存空间到设备的方法及系统 | |
US12086292B2 (en) | Peripheral device with resource isolation | |
EP3629540A1 (en) | Apparatus and method for secure memory access using trust domains | |
US9183036B2 (en) | Virtual machine migration with swap pages | |
US8099568B2 (en) | Separate swap files corresponding to different virtual machines in a host computer system | |
US10671542B2 (en) | Application execution enclave memory method and apparatus | |
US20120017029A1 (en) | Sharing memory spaces for access by hardware and software in a virtual machine environment | |
US8904113B2 (en) | Virtual machine exclusive caching | |
KR101323858B1 (ko) | 가상화 시스템에서 메모리 접근을 제어하는 장치 및 방법 | |
CN102521054B (zh) | 一种sun4v架构下的虚拟机DMA资源分配方法 | |
KR101213572B1 (ko) | 하이퍼바이저를 활용한 사용자 어플리케이션 메모리 보호방법 | |
CN106778275A (zh) | 基于虚拟化环境下的安全防护方法及系统和物理主机 | |
US10049048B1 (en) | Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor | |
Peleg et al. | Utilizing the {IOMMU} scalably | |
KR20180041037A (ko) | 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법 | |
Kim et al. | Improving spatial locality in virtual machine for flash storage | |
US20060059323A1 (en) | Physical memory control using memory classes | |
Gutstein | Towards Efficient and Effective IOMMU-based Protection from DMA Attacks | |
US20230401081A1 (en) | Software isolation of virtual machine resources | |
US10579515B1 (en) | Recycling segment pages while preserving integrity of memory addressing | |
US20210049030A1 (en) | Graphics processing unit profiling tool virtualization | |
Chien et al. | An Adaptive Zero-Copy Strategy for Ubiquitous High Performance Computing |
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 |