CN114041119A - 跨越信任边界的存储器解除分配 - Google Patents
跨越信任边界的存储器解除分配 Download PDFInfo
- Publication number
- CN114041119A CN114041119A CN202080048164.5A CN202080048164A CN114041119A CN 114041119 A CN114041119 A CN 114041119A CN 202080048164 A CN202080048164 A CN 202080048164A CN 114041119 A CN114041119 A CN 114041119A
- Authority
- CN
- China
- Prior art keywords
- memory
- software component
- allocation
- thread
- allocator
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 97
- 230000007246 mechanism Effects 0.000 claims abstract description 20
- 238000012795 verification Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 235000001975 Thelesperma gracile Nutrition 0.000 description 1
- 244000283375 Thelesperma megapotamicum Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- 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
-
- 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]
-
- 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
-
- 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
- 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/5022—Mechanisms to release resources
-
- 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/54—Interprogram communication
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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
- 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/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
描述了一种跨越第一软件组件与第二软件组件之间的信任边界的存储器解除分配方法。一些存储器在第一软件组件与第二软件组件之间共享。存储器中的消息传递设施是使用共享存储器实现的。第一软件组件被用于从共享存储器中解除分配存储器,该存储器已由第二软件组件分配。解除分配是通过以下操作完成的:使至少一个分配从消息传递设施释放;以及使用本地解除分配机制释放至少一个分配,同时验证对与共享存储器内的存储器分配相关的数据结构所拥有的存储器的存储器访问在共享存储器内。
Description
背景技术
信任边界是在两个软件组件之间找到的,其中单独软件组件彼此信任的程度不同。在示例中,这两个软件组件都被第三方信任,但是这两个软件组件彼此不信任。在另一示例中,第一软件组件被第三方信任,并且第二软件组件不被同一第三方信任。
通常,在两个软件组件之间存在信任边界的情况下,跨域通信机制被用于在两个软件组件之间进行通信,并且跨域通信机制在计算周期方面是昂贵的和/或引入时延。在示例中,在信任边界涉及从可信执行环境状态过渡到不安全状态同时部署侧信道缓解的情况下,跨域通信机制引入了大约40,000个计算周期。在信任边界跨越两个虚拟机的另一示例中,跨域通信机制涉及使用调度器,这引入了大约10毫秒的时延。
下面描述的实施例不被限于解决用于跨越信任边界的存储器解除分配(deallocation)的已知方法的任何或所有缺点的实现。
发明内容
下面呈现了本公开的简化发明内容,以便为读者提供基础的理解。该发明内容不旨在标识所要求保护的主题的关键特征或者必要特征,也不旨在被用于限制所要求保护的主题的范围。其唯一目的是以简化的形式呈现对本文公开的概念的选择,作为稍后呈现的更详细描述的序言。
描述了一种跨越第一软件组件与第二软件组件之间的信任边界的存储器解除分配的方法。一些存储器在第一软件组件与第二软件组件之间共享。存储器中的消息传递设施是使用共享存储器实现的。第一软件组件被用于从共享存储器中解除分配存储器,该存储器已由第二软件组件分配。解除分配是通过以下操作完成的:使至少一个分配从消息传递设施释放;以及使用本地解除分配机制释放至少一个分配,同时验证对由与共享存储器内的存储器分配相关的数据结构所拥有的存储器的存储器访问在共享存储器内。
许多伴随特征将更容易了解,因为通过参照结合附图考虑的以下详细描述,这些特征变得更好理解。
附图说明
本描述将通过鉴于附图阅读的以下详细描述更好地理解,其中:
图1是各种不同类型的计算设备的示意图,其中存在由信任边界分隔的软件组件并且本公开的技术是可部署的;
图2A是飞地和飞地外的程序的示意图;
图2B是更安全的虚拟机和不太安全的虚拟机的示意图;
图2C是高权限库和低权限库的示意图;
图2D是第一软件组件和第二软件组件的示意图;
图3是一种存储器分配方法的流程图,其中信任边界一侧的线程将存储器分配到信任边界的另一侧;
图4是由信任边界另一侧的线程解除分配存储器执行的方法的流程图;
图5是由信任边界一侧的线程解除分配存储器并且执行验证执行的方法的流程图;
图6是消息传递机制的一个示例中使用的数据结构的示意图;
图7图示了示例性的基于计算的设备,其中跨越信任边界的存储器解除分配的实施例被实现。
在附图中,相同的附图标记被用于指定相同的部分。
具体实施方式
下面结合所附附图提供的详细描述旨在作为本示例的描述,并且不旨在表示本示例被构建或利用的唯一形式。该描述陈述了该示例的功能以及用于构建和操作该示例的操作序列。然而,相同或等效的功能和序列可以通过不同的示例来实现。
通常,在两个软件组件之间存在信任边界的情况下,跨域通信机制被用于在两个软件组件之间进行通信,并且跨域通信机制在计算周期方面是昂贵的和/或引入时延。跨域通信机制也强加了同步。因此,跨越信任边界解除分配存储器是有问题的,即,使用第一软件组件来解除分配第二软件组件已分配的存储器,其中两个软件组件之间存在信任边界。由于强加了同步,因此两个软件组件很难在不需要同步存储器分配事件的情况下并发运行。
信任边界出现在许多类型的计算设备(诸如图1所图示的)中的软件组件之间,这些计算设备是最终用户设备,诸如智能手机110、膝上型计算机112、智能手表120、平板计算机114、头戴式增强现实计算设备122;以及企业计算设备和云计算设备,诸如数据中心中的计算节点116。要注意的是,图1所图示的计算设备是示例,并且不旨在限制本技术的范围。
图1的计算设备中的每个计算设备包括参照图7详细描述的各种组件。为了清晰起见,图1示出了单个计算设备的这些组件中的一些但非全部。图1示出了计算设备中的每个计算设备具有存储软件组件102的存储器100,这些软件组件102共享共享存储器118并且由信任边界分隔。共享存储器118存储消息传递设施104。每个计算设备还具有一个或多个处理器106和一个或多个接口108,诸如通信接口,以使计算设备能够与外部存储器、其他计算设备、通信网络等通信。
本公开的技术具有由信任边界分隔的至少两个软件组件102,并且这些软件组件的非限制性示例在下面参照图2A至图2D给出。每个软件组件执行一个或多个线程。线程是在信任边界的一侧连续执行指令,并且不流过信任边界。
软件组件102共享图1中的118所示的一些存储器。每个软件组件102能够分配和解除分配共享存储器118中的存储器块。每个软件组件102具有用于共享存储器的至少一个分配器。如果软件组件在共享存储器之外具有存储器,那么该软件组件具有至少一个分配器用于共享存储器外的存储器。分配器是一个软件组件,负责将存储器分区为可以由其他组件使用的对象,并且在返回后重用它们。
共享存储器118被用于实现消息传递设施104。消息传递设施使得消息能够在信任边界任一侧的线程之间发送,而不使用常规的跨域通信机制。它使用存储器中的操作,因此与使用常规的跨域通信机制相比,消息传递设施非常高效。通过使用本文描述的消息传递设施,可以以安全的方式跨越信任边界高效地分配和解除分配存储器。该技术被有用地部署在多种场景中,其中一些参照图2A至图2D进行描述。
软件组件102由信任边界分隔。软件组件102可见的一些存储器在两个或更多个软件组件之间被共享(共享存储器118,它是存储器100的区域)。在共享存储器118区域中存在消息传递设施。分配由共享共享存储器118的任何软件组件102在共享存储器118内执行。共享存储器118内的分配由共享共享存储器118的任何软件组件102解除分配,而不管是哪个软件组件释放它(通过使用消息传递设施104将它传递回拥有软件组件)。
解除分配包括至少两个操作,它们是:将存储器片段标记为不再使用;并且使存储器片段可供重用。在典型的C风格编程环境中,这两个操作通常是合并的(对free()的调用通常都将对象标记为未使用的,并且立即使其可供重用)。本公开的技术将这些拆分为两个步骤,其中第一步骤立即触发第二步骤以用于本地分配,或者将其添加到消息队列以用于远程分配,因此远程分配器将使它可供稍后重用。
图2A示出了第一软件组件在飞地200中并且第二软件组件是飞地外的程序202的情况。飞地200可以访问一些私有存储器,其由图2A中描绘飞地200的矩形表示。飞地202外的程序可以访问一些但非全部存储器。即,飞地200和飞地外的程序共享一些存储器。在示例中,在飞地内执行的线程是可信的,而在飞地外的程序中执行的线程是不可信的。在示例中,本公开的技术使得飞地内的线程(为了清晰起见在本文中称为绿色线程G)通过使用分配器来分配共享存储器内的一些存储器。在示例中,本公开的技术使得飞地内的线程(G线程)能够解除分配已由飞地外的程序中的线程(R线程)分配的共享存储器内的一些存储器。该技术是对称的。因此,飞地外的程序中的线程(R线程)能够解除分配飞地中由G线程分配的一些存储器。
在诸如图2A所示的飞地系统中,在飞地内运行的代码可以查看和修改外部的存储器,并且外部的程序202负责所有不可信的通信(例如从磁盘或通过网络获取加密数据)。飞地外的程序202可以预先分配飞地200可以用于通信的存储器缓冲区和环,但是飞地200能够分配任意存储器对象通常更方便。
本公开的技术使飞地200能够廉价地分配飞地200外的存储器(其中便宜意味着具有更少的计算资源)。因此,分配器动态调整由飞地200用于通信的存储器数量也相对容易,而不是预先分配所有内容。为了这变得高效,在飞地200外运行的不可信代码能够以低开销释放存储器。本发明的技术使得飞地外的程序202能够以低开销释放存储器。
图2B是更安全的虚拟机204和不太安全的虚拟机206的示意图。更安全的虚拟机具有由较大矩形描绘的存储器,并且不太安全的虚拟机共享一些但非全部存储器,如图2B所指示的。这种类型的布置在一些众所周知的操作系统中找到,其中内核被拆分为由管理程序保护的两个部分。不太可信的虚拟机运行主要操作系统和正常应用。更安全的虚拟机运行完整性和安全性服务,并且能够查看由不太可信的虚拟机拥有的存储器。本公开的技术移除了对在更安全的虚拟机中运行的代码的一些约束,并且使得安全代码能够创建复杂的数据结构以供不太安全的代码消耗。
图2C是高权限库隔间208和低权限库隔间210的示意图。高权限库隔间208具有由较大矩形描绘的存储器,并且低权限库隔间210共享该存储器的一些但非全部,如图2C所指示的。
在软件区分布置中,程序的一些部分以较低的权限运行。通常希望将现有库移动到较低权限以最小化攻击面。例如,图像和视频译码库通常用不安全的语言编写,并且处置不可信的数据,因此是漏洞利用的常见载体。利用非常有限的权限集合运行这种库使这明显更安全。
有多种机制可以轻松实施强隔离,例如具有共享存储器的单独过程、基于软件的故障隔离(SFI)沙箱(诸如由WebAssembly(商标)实现使用的)以及硬件隔离特征。这些对在高权限库隔间和低权限库隔间之间的过渡施加了性能损失。每种技术都可以被用于使不可信组件的整个存储器对可信组件可见。
只要库接口是按照仅采用和返回简单(原始)类型的函数来实现的,这就足够了。不幸的是,这种情况很少发生,并且大多数库都预计用户构建或消耗复杂的数据结构。为了改进用于软件区分的编程模型,本公开的技术为高权限组件给出了一种轻量级的能力,能够在低权限库内分配存储器,并且低权限库和高权限库都能够释放该存储器。
图2D是一般情况的图,具有由信任边界(其中信任边界未在图2D中图示)划分的第一软件组件212和第二软件组件214。第一软件组件212具有由较大矩形描绘的存储器,并且第二软件组件214共享该存储器的一些但非全部,如图2D所指示的。使用位于共享存储器中的消息传递设施,本公开的技术使得线程能够高效且安全地解除分配存储器,其中存储器已由信任边界的另一侧的不同线程分配。
图3是由位于信任边界一侧的线程G执行的存储器分配方法的流程图,以便在信任边界的另一侧分配存储器。图3是针对线程G位于信任边界的更可信侧的情况描述的。但是,要注意的是,该方法是对称的,并且在执行该方法的线程位于信任边界的不太可信的一侧的情况下也适用。图3的方法还针对涉及互不信任的情况操作,其中执行该方法的线程在第一软件组件中并且在信任边界的另一侧是第二软件组件,其中第一软件组件和第二软件组件彼此互不信任。
线程G在信任边界的一侧执行300,诸如信任边界的更可信侧。线程G在其执行中到达请求302在共享存储器中创建对象的点,其中共享存储器与信任边界的另一侧共享。线程G检查304它是否已经具有本地分配器。本地分配器是一个分配器,它具有自己的区域(数据结构,包括映射到物理存储器的虚拟存储器空间)和元数据(记录当前在虚拟存储器空间中分配了哪些块)。在一些示例中,本地分配器的虚拟存储器空间映射到由信任边界的另一侧拥有的物理存储器。要注意的是,在没有虚拟存储器的系统中,诸如嵌入式设备,其中组件具有重叠的存储器保护单元(MPU)保护区域,那么本地分配器是由信任边界的另一侧拥有的物理存储器区域。在优选示例中,本地分配器的大部分状态在私有存储器中,而不是共享存储器中。
如果没有用于线程G的本地分配器,那么线程G在共享存储器中为消息队列保留306一些空间以供信任边界另一侧的软件使用。在一些示例中,保留是使用指向共享存储器中的区域开始的共享指针和原子操作来完成的。在其他示例中,保留是使用跨信任边界调用完成的,这在计算周期和/或时间方面是昂贵的,但并不经常执行。信任边界另一侧的软件接收跨信任边界调用,在共享存储器中保留一些空间并且通知线程G。
如果存在用于线程G的本地分配器,但是本地分配器太小而不能满足分配,那么进行跨信任边界同步操作以在共享区域中保留一些存储器。
线程G指示308本地分配器直接在共享存储器中构建对象。因为本地分配器已经具有一个区域,它能够直接在它保留的共享存储器的区域中构建对象。保留步骤保证没有其他分配器会尝试在该保留区域中分配对象。
在检查点304处,如果线程G已经具有本地分配器,那么该过程移动到操作308。
在操作308期间,当对象被构建时,线程G进行分配器状态检查310。即,线程G检查310本地分配器是否在与线程G相同的信任边界一侧损害了存储器。检查310包括检查基于共享存储器区域中的数据使用的每个地址本身在共享存储器区域中。检查是通过确保作为分配过程的一部分发生并且取决于不可信数据的任何存储器访问都在共享存储器区域内来完成的。如果检查发现共享区域外的存储器由于共享区域中的损坏或恶意数据而将被读取或写入,那么误差恢复路径被触发312。如果检查310发现没有问题,则该过程返回到操作300并且线程G继续执行。
如果本地分配器损害了与本地分配器在信任边界的同一侧的存储器,则没有问题,因为与本地分配器位于信任边界同一侧的软件是不可信的,并且预计它可能会损坏信任边界一侧的存储器。
图3的方法描述了由线程执行的存储器分配,以在信任边界的另一侧分配存储器。线程分配与线程在信任边界的同一侧的存储器的情况是常规的,因此在此处不再描述。
在示例中,每个线程具有用于本地分配的分配器,但是存在用于第一软件组件的单个分配器来分配由第二软件组件拥有的存储器。第一软件组件的单个分配器受锁保护,并且由多个线程访问。
在另一示例中,第一软件组件的每个线程具有本地分配器和远程分配器(因此是存储器分配器的两个实例)。
图4是由线程G的信任边界另一侧的线程R执行的方法的流程图。在示例中,线程R是不可信代码的一部分,但这只是示例,因为线程R可以是来自线程G的信任边界的另一侧的任何线程。
线程R执行400,并且在其执行中到达402请求从共享存储器解除分配存储器区域M的的点。存储器区域M是由线程G分配的。线程R标识404是哪个分配器分配了M。在该示例中,线程R发现线程G的本地分配器分配了M。标识是通过在数据结构中查找完成的(在本文中称为分配器索引)。在一些示例中,分配器索引由第一软件组件维护在第二软件组件有权访问的共享存储器区域中。在一些示例中,第一软件组件具有分配器索引的副本,并且第二软件组件具有分配器索引的副本,并且这些副本在图3的操作306期间同步。
线程R将释放M的请求添加到存储器中的消息传递设施中的记录。该请求是立即发出的,或者被放入一批中并且作为一批请求的一部分发出。关于批次处理和请求的批次处理不适当的情况的更多细节在下面给出。
该记录与分配了M的分配器相关联。在示例中,该记录是队列,并且每个分配器具有一个队列。释放M的请求被添加到分配M的分配器的队列。然后线程R继续执行400并且该过程重复。
图5是由最初分配M的线程执行的方法的流程图。在图4的示例中,最初分配M的线程是线程G。线程G在线程R的信任边界的另一侧。线程G正在执行500。它在存储器中的消息传递设施中查找记录,以找到释放存储器区域的哪些请求正在等待它。它找到了解除分配M的请求,它正在等待线程G,因为线程G先前分配了M。线程G接受请求,并且指示506线程G的本地分配器直接解除分配M。由于本地分配器直接执行解除分配,因此没有跨信任边界调用,并且解除分配是高效的。
当线程G通过进行在操作506期间执行的存储器访问在共享范围内的范围检查而验证504时,操作506被执行。如果共享存储器区域不连续,则有多个范围来检查共享存储器内的所有点。
如果验证失败,那么警报被触发510和/或存储器被清除。如果验证成功,那么过程返回到操作500,其中线程G执行。
在互不信任的情况下,其中第一软件组件和第二软件组件彼此不信任,与图4的方法一样,图5的方法是对称的。即,在线程G执行图4的方法的情况下,那么线程R执行图5的方法。如果存在分层信任关系,那么不可信的组件不需要执行验证(它信任其他组件),并且自由地进行更多的消息缓存。
本公开的技术使用在共享存储器中实现的消息传递设施。在示例中,消息传递设施仅使用共享存储器来实现。
消息传递设施的示例现在参照图6给出,并且要注意的是,这只是示例,并且其他示例也是可能的。
图6示出了与图2D一样的由信任边界分隔的第一软件组件212和第二软件组件214。第一软件组件212在存储器中被示意性地图示为矩形212,并且第二软件组件共享该存储器的一些,如矩形214所图示的,矩形214位于矩形212内。
第二软件组件包括多个存储器分配器,并且在图6中示出了一个存储器分配器604。为了清晰起见,其他存储器分配器从图6中省略。每个分配器都被分配有单独的区域。
消息传递设施在共享存储器中实现,并且包括多个队列,每个存储器分配器604有一个队列606。
分配器索引602被提供。分配器索引602是用于找到存储器分配器的数据结构,因为它存储关于哪个分配器分配了哪些存储器区域的信息。在示例中,分配器索引602是由分配的存储器区域的虚拟地址的最高有效位索引的阵列。最高有效位指示分配的种类,并且使用分配的种类可以找到指示分配器标识的元数据,作为块内的偏移。在另一示例中,分配器索引602是来自超级计算机的硬件消息传递设施的虚拟地址的高位的映射。
在一些示例中,诸如图2A的飞地示例,第二分配器索引600存在于信任边界另一侧的存储器中,并且与分配器索引602保持同步。
在其他示例中,诸如图2C的库区分示例,没有第二分配器索引,并且分配器索引602是单个规范分配器索引,其具有关于库隔间中的每个库隔间可用的存储器范围的信息。来自无权限库隔间对规范分配器索引的任何更新都被代理到有权限的代码,该代码更新规范分配器索引和库隔间的视图(在验证更新后)。分配器索引在新块被分配时更新,因此跨信任边界调用的成本被分摊。
在图4的方法中,来自第一软件组件212的线程G在共享存储器中分配存储器区域,线程G在共享存储器中具有本地分配器604。线程G能够使用本地分配器604直接在共享存储器中分配对象,而无需进行跨信任边界调用。
在图5的方法中,来自第二软件组件214的线程R想要解除分配由线程G分配的存储器区域M,那么线程R使用分配器索引602来标识哪个线程分配了存储器区域M。线程R查找对分配器索引602中的存储器区域M的参考,并且找到分配存储器区域M的分配器的标识。分配器索引602被填充有第二软件组件中可用的数据,而无需进行跨信任边界调用。
在一些但非所有示例中,在共享存储器之外存在第二分配器索引600。由于第二分配器索引的位置,第二分配器索引可能具有共享存储器区域中的分配器索引602不知道的信息。然而,同步方法被用于同步分配器索引。同步方法使用跨信任边界调用,但这些调用并不频繁,因此不会引入不适当的负担和/或延迟。在一些示例中,用于同步的跨信任边界调用是用于在图3的方法中为分配器保留共享存储器的区域的相同的跨信任边界调用的一部分。第二分配器索引在图2A的飞地示例中使用。当图5的方法由飞地外的程序202执行时,只有飞地外的分配器索引(分配器索引602)是可见的,因此它是唯一被检查的。在飞地外运行的程序202无法看到飞地200内的存储器,因此无法释放飞地200内的存储器。当从飞地200内释放存储器时,飞地中的线程执行图5的方法。如果存储器在飞地范围外,则它在第二分配器索引600中查找并且检查其他分配器索引602。
线程R(从分配器索引)标识分配M的是线程G。然后线程R将条目放入线程G的本地分配器604的队列606中。为了使线程R将条目放入线程G的本地分配器604的队列606中,原子操作在存储器中执行,但没有跨信任边界调用。因此,将条目放入队列中的过程非常具有成本效益。在优选示例中,将条目放入队列606中的多个请求被收集,并且被成批发送给队列606以提高效率。
在图2C的库区分示例中,批次处理将条目放入队列606中的请求会导致在库隔间退出时出现问题。当库隔间退出时,那么在存储器无法被映射之前,指向它拥有的存储器的指针将被释放。如果指向库隔间所拥有的存储器的指针被缓存在其他分配器中(在队列中),则释放指针需要无限量的时间。因此,针对从可信代码中解除分配不可信代码所拥有的存储器,条目会被立即添加到远程队列,以避免无限时间。
该条目包括释放存储器区域M的请求。在示例中,诸如队列606等每个队列是多生产者、单消费者无锁队列。队列是多生产者,因为多个不同的线程能够将条目放入队列中。队列是单消费者,因为单个分配器从队列中获取项目。队列是无锁的,因为在操作中时没有在队列上放置锁。
在图6的方法中,其中线程G从队列606中获取项目,线程G从队列606中获取作为它要解除分配的存储器区域的项目,并且它使用本地分配器604来解除分配那些存储器区域。从队列中取回消息是在单个原子操作中实现的,因此非常高效。由于本地解除分配器604被使用,因此不涉及跨信任边界调用。
在图6的方法中,线程G执行验证。线程G验证对与共享存储器内的存储器分配相关的数据结构所拥有的存储器的存储器访问在共享存储器内。验证通常是存储器访问在共享范围内的简单范围检查。如果共享存储器区域不连续,则需要检查多个范围。
支持多个线程的先前分配器通常使用锁来锁定数据结构,然后操纵它们以处理争用。然而,针对本公开的高度异步、跨信任边界情况的类型,锁的使用是有问题的。即使它是存储器中的自旋锁,也不一定能够信任锁的实现。恶意锁定数据结构并且永远不会解锁,或者在修改数据结构时解锁数据结构,或者在另一实体正在修改数据结构时解锁数据结构,这将是非常容易的。
本公开的存储器中的消息传递设施和验证过程以非常规方式操作,以高效方式实现跨越两个软件组件之间的信任边界的存储器解除分配。
通过实现跨越两个软件组件之间的信任边界的存储器的高效解除分配,存储器中的消息传递设施和验证过程改进底层计算设备的运作。
图7图示了示例性基于计算的设备700的各种组件,其被实现为任何形式的计算和/或电子设备,并且其中用于跨越信任边界的存储器解除分配的功能性的实施例在一些示例中实现。
基于计算的设备700包括一个或多个处理器708,这些处理器708是微处理器、控制器或任何其他合适类型的处理器,用于处理计算机可执行指令以控制设备的操作,以便跨越两个软件组件之间的信任边界解除分配存储器。在一些示例中,例如在片上系统架构被使用的情况下,处理器708包括一个或多个固定功能块(也称为加速器),其在硬件(而不是软件或固件)中实现图3至图5中任何一个的方法的一部分。.
计算机可执行指令使用由基于计算的设备700可访问的任何计算机可读介质来提供。计算机可读介质包括例如计算机存储介质,诸如存储器702和通信介质。存储器702存储由信任边界分隔的两个或多个软件组件704,并且存储器702还存储消息传递设施706。
计算机存储介质(诸如存储器702)包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块等)的任何方法或技术实现的易失性和非易失性介质、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、闪存或者其他存储器技术、光盘只读存储器(CD-ROM)、数字通用盘(DVD)或者其他光学存储装置、磁盒、磁带、磁盘存储装置或者其他磁性存储设备或者被用于存储信息以由计算设备访问的任何其他非传输介质。相比之下,通信介质将计算机可读指令、数据结构、程序模块等实施在调制数据信号(诸如载波)或其他输送机制中。如本文定义的,计算机存储介质不包括通信介质。因此,计算机存储介质不应被解释为传播信号本身。尽管计算机存储介质(存储器702)在基于计算的设备700内示出,但是要了解的是,在一些示例中,存储装置是分布式的或者位于远程的,并且经由网络或其他通信链路访问(例如使用通信接口712)。
基于计算的设备700还包括输入/输出接口710,其被布置为将显示信息输出到显示设备,该显示设备可以与基于计算的设备700分隔或者是基于计算的设备700必不可少的。显示信息可以提供图形用户界面。输入/输出控制器接口710还被布置为接收和处理来自一个或多个设备的输入,诸如用户输入设备(例如鼠标、键盘、相机、麦克风或其他传感器)。在一些示例中,用户输入设备检测语音输入、用户手势或其他用户动作,并且提供自然用户界面(NUI)。在实施例中,如果显示设备是触敏显示设备,则该显示设备还充当用户输入设备。在一些示例中,输入/输出接口710将数据输出到除显示设备之外的设备,例如本地连接的打印设备。
备选地或除本文描述的其他示例之外,示例包括以下的任何组合:
条款A.一种跨越第一软件组件与至少第二软件组件之间的信任边界的存储器解除分配方法,该方法包括:
在第一软件组件与第二软件组件之间共享一些存储器;
使用共享存储器实现存储器中的消息传递设施;
通过以下操作使用第一软件组件来从共享存储器中解除分配存储器,该存储器已由第二软件组件分配:
使至少一个分配从消息传递设施被释放;
使用本地解除分配机制释放至少一个分配,同时验证对由与共享存储器内的存储器分配相关的数据结构所拥有的存储器的存储器访问在共享存储器内。通过使用存储器中的消息传递设施和验证,可以跨越信任边界高效且安全地解除分配存储器。在计算周期和/或时间上代价高昂的跨信任边界调用被最小化。通过使用存储器中的消息传递设施和验证,两个软件组件能够并发地运行,而无需同步存储器分配事件。
条款B.根据条款A的方法,其中第一软件组件中的线程使至少一个分配从消息传递设施被释放,并且线程使用本地解除分配机制释放至少一个分配,该本地解除分配机制是线程的分配器,该分配器在共享存储器中拥有存储器块。通过使用本地分配器,不需要跨信任边界调用。
条款C.根据条款A或条款B的方法,该方法是在第一软件组件与第二软件组件之间没有跨信任边界调用的情况下被执行的。
条款D.根据任何前述条款的方法,包括:使至少一个分配从消息传递设施中的队列被释放,该队列与分配要被释放的分配的分配器相关联。由于队列以这种方式相关联,因此安全且高效的存储器解除分配被支持。
条款E.根据任何前述条款的方法,该方法由线程执行,并且其中要被释放的分配已被标识为先前由线程进行的分配。
条款F.根据任何前述条款的方法,其中验证被完成。
条款G.根据任何前述条款的方法,其中要被释放的分配已经由第二软件组件的线程添加到消息传递设施。
条款H.根据条款G的方法,其中要被释放的分配被添加到消息传递设施,作为要被释放的一批分配的一部分。
条款I.根据条款G的方法,其中要被释放的分配已经被添加到从消息传递设施处的多个队列中选择的队列,该队列与分配要被释放的分配的分配器相关联。
条款J.根据条款I的方法,其中队列已经通过使用分配器索引标识分配要被释放的分配的分配器来选择。
条款K.根据任何前述条款的方法,其中存储器中的消息传递设施是无锁的。使用锁是有问题的,因为锁可能会被恶意方利用。如果由可信组件中的锁管理器实现,则使用锁会带来高开销。
条款L.根据任何前述条款的方法,其中存储器中的消息传递设施包括多生产者、单消费者队列。使用这种类型的队列提高了效率。在另一示例中,存储器中的消息传递设施包括多生产者、多消费者队列。
条款M.根据任何前述条款的方法,其中存储器中的消息传递设施包括共享存储器中的分配器索引和第一软件组件的存储器中的第二分配器索引,该第二分配器索引不是共享存储器的一部分。
条款N.根据条款A至L中任一项的方法,其中存储器中的消息传递设施包括将不同范围的存储器区域映射到软件组件中的每个软件组件的单个规范分配器索引。
条款O.根据条款A至L中任一项的方法,其中第一软件组件是飞地,并且第二软件组件是飞地外的程序,并且其中该方法包括:维护两个分配器索引,一个在飞地中并且一个在飞地外,并且同步分配器索引。
在一些示例中,存在多于两个软件组件。至少两个软件组件共享分配器索引,并且至少两个软件组件分别具有自己的同步分配器索引。
在一些示例中,存在三个软件组件,这些软件组件都在互不信任的设置中共享相同的共享存储器区域,并且都具有自己的分配器索引的私有部分加上分配器私有的共享部分。
条款P.根据条款A至L中任一项的方法,其中软件组件是库隔间,并且其中要被释放的分配被立即添加到消息传递设施。
条款Q.根据条款A至L中任一项的方法,其中第一软件组件是虚拟机,并且第二软件组件是比第一软件组件更不安全的虚拟机。
条款R.一种装置,包括:
由信任边界分隔的第一软件组件和第二软件组件:
存储器,该存储器中的至少一些存储器在第一软件组件与第二软件组件之间被共享;
存储器中的消息传递设施,使用共享存储器实现;并且
其中第一软件组件被配置为通过进行在释放至少一个分配期间执行的存储器访问在共享存储器内的范围检查,从共享存储器解除分配已由第二软件组件分配的存储器。
使至少一个分配从消息传递设施被释放;以及
使用本地解除分配机制释放至少一个分配,同时验证对由与共享存储器内的存储器分配相关的数据结构所拥有的存储器的存储器访问在共享存储器内。
条款S.根据条款R的装置,其中第一软件组件是飞地,并且第二软件组件在飞地外。
条款T.一种由操作系统执行的方法,该操作系统包括第一库隔间和第二库隔间,该方法包括:
在第一库隔间与第二库隔间之间共享一些存储器;
使用共享存储器实现存储器中的消息传递设施;
通过以下操作使用第一库隔间来从共享存储器中解除分配存储器,该存储器已由第二库隔间分配:
使至少一个分配从消息传递设施被释放;
使用本地解除分配机制释放至少一个分配,同时验证对由与共享存储器内的存储器分配相关的数据结构所拥有的存储器的存储器访问在共享存储器内。
术语‘计算机’或‘基于计算的设备’在本文中被用于指代具有处理能力以使它执行指令的任何设备。本领域技术人员将认识到,这种处理能力被并入许多不同的设备中,因此术语‘计算机’和‘基于计算的设备’分别包括个人计算机(PC)、服务器、移动电话(包括智能手机)、平板计算机、机顶盒、媒体播放器、游戏控制台、个人数字助理、可穿戴计算机和许多其他设备。
在一些示例中,本文描述的方法通过在有形存储介质上的机器可读形式的软件执行,例如以计算机程序的形式,包括计算机程序代码部件,当程序在计算机上运行时并且在计算机程序可以被实施在计算机可读介质上的情况下,适用于执行本文描述的一种或多种方法的所有操作。该软件适合于在并行处理器或串行处理器上执行,使得方法操作可以以任何合适的顺序或同时执行。
这承认软件是有价值的、可单独交易的商品。它旨在涵盖在“哑”或标准硬件上运行或者控制“哑”或标准硬件以执行期望功能的软件。它还旨在涵盖“描述”或定义硬件配置的软件,诸如被用于设计硅芯片或用于配置通用可编程芯片以执行期望功能的HDL(硬件描述语言)软件。
本领域技术人员将认识到,用于存储程序指令的存储设备被可选地分布在网络上。例如,远程计算机能够存储被描述为软件的过程示例。本地或终端计算机能够访问远程计算机,并且下载部分或全部软件以运行该程序。备选地,本地计算机可以根据需要下载该软件的片段,或者在本地终端处执行一些软件指令,并且在远程计算机(或计算机网络)处执行一些软件指令。本领域技术人员还将认识到,通过利用本领域技术人员已知的常规技术,所有或部分软件指令可以由专用电路执行,诸如数字信号处理器(DSP)、可编程逻辑阵列等。
本文给出的任何范围或设备值都可以被扩展或更改,而不会失去所寻求的效果,这对于技术人员来说是明显的。
尽管主题已经用特定于结构特征和/或方法行动的语言描述,但是要理解的是,在所附权利要求中限定的主题并不一定被限于上述具体特征或行动。相反,上述具体特征和行动被公开为实现权利要求的示例形式。
要理解的是,上述益处和优点可能与一个实施例相关,或者可能与多个实施例相关。实施例不被限于解决任何或所有已说明问题的那些实施例或者具有任何或所有已说明益处和优点的那些实施例。还要理解的是,对‘一个’项目的引用是指这些项目中的一个或多个。
本文描述的方法的操作可以以任何合适的顺序执行,或者在适当的情况下同时执行。附加地,单独框可以从任何方法中删除,而不脱离本文描述的主题的范围。上述任何示例的各个方面可以与所描述的任何其他示例的各个方面组合,以形成其他示例而不会失去所寻求的效果。
术语‘包括’在本文中被用于表示包括所标识的方法框或元素,但是这种框或元素不包括排他性列表,并且方法或装置可以包含附加的框或元素。
术语‘子集’在本文中被用于指适当的子集,使得集合的子集不包括该集合的所有元素(即,该子集中缺少该集合的至少一个元素)。
要理解的是,以上描述仅通过示例给出,并且各种修改可以由本领域技术人员进行。以上说明书、示例和数据提供了示例性实施例的结构和使用的完整描述。尽管各种实施例在上面已经以一定程度的特殊性或者参照一个或多个单独实施例描述,但是本领域技术人员能够在不脱离本说明书的范围的情况下对所公开的实施例做出许多更改。
Claims (15)
1.一种跨越第一软件组件与至少第二软件组件之间的信任边界的存储器解除分配方法,所述方法包括:
在所述第一软件组件与所述第二软件组件之间共享一些存储器;
使用共享存储器实现存储器中的消息传递设施;
通过以下操作使用所述第一软件组件来从所述共享存储器中解除分配存储器,所述存储器已由所述第二软件组件分配:
使至少一个分配从所述消息传递设施被释放;
使用本地解除分配机制释放所述至少一个分配,同时验证对由与所述共享存储器内的存储器分配相关的数据结构所拥有的存储器的存储器访问在所述共享存储器内。
2.根据权利要求1所述的方法,其中所述第一软件组件中的线程使所述至少一个分配从所述消息传递设施被释放,并且所述线程使用本地解除分配机制释放所述至少一个分配,所述本地解除分配机制是所述线程的分配器,所述分配器在所述共享存储器中拥有存储器块。
3.根据权利要求2所述的方法,所述方法是在所述第一软件组件与所述第二软件组件之间没有跨信任边界调用的情况下被执行的。
4.根据权利要求1或权利要求2所述的方法,包括:使所述至少一个分配从所述消息传递设施中的队列被释放,所述队列与分配要被释放的所述分配的分配器相关联。
5.根据前述权利要求中任一项所述的方法,所述方法由线程执行,并且其中要被释放的所述分配已被标识为先前由所述线程进行的分配。
6.根据前述权利要求中任一项所述的方法,其中所述验证是通过以下来完成的:进行在所述至少一个分配的所述释放期间执行的所述存储器访问在共享范围内的范围检查。
7.根据前述权利要求中任一项所述的方法,其中要被释放的所述分配已经由所述第二软件组件的线程添加到所述消息传递设施。
8.根据权利要求7所述的方法,其中要被释放的所述分配被添加到所述消息传递设施,作为要被释放的一批分配的一部分。
9.根据权利要求7所述的方法,其中要被释放的所述分配已经被添加到从所述消息传递设施处的多个队列中选择的队列,所述队列与分配要被释放的所述分配的分配器相关联。
10.根据权利要求9所述的方法,其中所述队列已经通过使用分配器索引标识分配要被释放的所述分配的所述分配器来选择。
11.根据前述权利要求中任一项所述的方法,其中所述存储器中的消息传递设施是无锁的。
12.根据前述权利要求中任一项所述的方法,其中所述存储器中的消息传递设施包括多生产者、单消费者队列。
13.根据前述权利要求中任一项所述的方法,其中所述存储器中的消息传递设施包括所述共享存储器中的分配器索引和所述第一软件组件的存储器中的第二分配器索引,所述第二分配器索引不是所述共享存储器的一部分。
14.根据前述权利要求中任一项所述的方法,其中所述存储器中的消息传递设施包括将不同范围的存储器区域映射到所述软件组件中的每个软件组件的单个规范分配器索引。
15.一种装置,包括:
由信任边界分隔的第一软件组件和第二软件组件:
存储器,所述存储器中的至少一些存储器在所述第一软件组件与所述第二软件组件之间被共享;
存储器中的消息传递设施,使用所述共享存储器实现;并且
其中所述第一软件组件被配置为通过以下操作从所述共享存储器中解除分配存储器,所述存储器已由所述第二软件组件分配:
使至少一个分配从所述消息传递设施被释放;以及
使用本地解除分配机制释放所述至少一个分配,同时验证对由与所述共享存储器内的存储器分配相关的数据结构所拥有的存储器的存储器访问在所述共享存储器内。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/503,449 US11593169B2 (en) | 2019-07-03 | 2019-07-03 | Memory deallocation across a trust boundary |
US16/503,449 | 2019-07-03 | ||
PCT/US2020/036723 WO2021003002A1 (en) | 2019-07-03 | 2020-06-09 | Memory deallocation across a trust boundary |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114041119A true CN114041119A (zh) | 2022-02-11 |
Family
ID=71899911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080048164.5A Pending CN114041119A (zh) | 2019-07-03 | 2020-06-09 | 跨越信任边界的存储器解除分配 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11593169B2 (zh) |
EP (1) | EP3994578A1 (zh) |
CN (1) | CN114041119A (zh) |
WO (1) | WO2021003002A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240054015A1 (en) * | 2022-08-11 | 2024-02-15 | Next Silicon Ltd | Memory management in a multi-processor environment |
US11947802B1 (en) * | 2022-09-13 | 2024-04-02 | Microsoft Technology Licensing, Llc | Memory buffer management on hardware devices utilizing distributed decentralized memory buffer monitoring |
US11977496B1 (en) * | 2022-09-29 | 2024-05-07 | Amazon Technologies, Inc. | Security vulnerability mitigation using hardware-supported context-dependent address space hiding |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823472B1 (en) * | 2000-05-11 | 2004-11-23 | Lsi Logic Corporation | Shared resource manager for multiprocessor computer system |
US7748037B2 (en) * | 2005-09-22 | 2010-06-29 | Intel Corporation | Validating a memory type modification attempt |
US20150288659A1 (en) * | 2014-04-03 | 2015-10-08 | Bitdefender IPR Management Ltd. | Systems and Methods for Mutual Integrity Attestation Between A Network Endpoint And A Network Appliance |
US9639654B2 (en) * | 2014-12-11 | 2017-05-02 | International Business Machines Corporation | Managing virtual boundaries to enable lock-free concurrent region optimization of an integrated circuit |
US20160285970A1 (en) * | 2015-03-27 | 2016-09-29 | International Business Machines Corporation | Network communication between virtual machine applications via direct memory access |
US10725963B2 (en) | 2015-09-12 | 2020-07-28 | Microsoft Technology Licensing, Llc | Distributed lock-free RDMA-based memory allocation and de-allocation |
WO2017142525A1 (en) | 2016-02-17 | 2017-08-24 | Hewlett Packard Enterprise Development Lp | Allocating a zone of a shared memory region |
US9846645B1 (en) * | 2016-05-27 | 2017-12-19 | Hewlett Packard Enterprise Development Lp | Managing objects stored in memory |
US10452287B2 (en) * | 2016-06-24 | 2019-10-22 | Futurewei Technologies, Inc. | System and method for shared memory ownership using context |
US11074179B2 (en) * | 2017-11-02 | 2021-07-27 | Hewlett Packard Enterprise Development Lp | Managing objects stored in memory |
US10474382B2 (en) * | 2017-12-01 | 2019-11-12 | Red Hat, Inc. | Fast virtual machine storage allocation with encrypted storage |
-
2019
- 2019-07-03 US US16/503,449 patent/US11593169B2/en active Active
-
2020
- 2020-06-09 CN CN202080048164.5A patent/CN114041119A/zh active Pending
- 2020-06-09 WO PCT/US2020/036723 patent/WO2021003002A1/en unknown
- 2020-06-09 EP EP20750491.1A patent/EP3994578A1/en active Pending
-
2023
- 2023-01-31 US US18/162,704 patent/US20230168933A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3994578A1 (en) | 2022-05-11 |
US20230168933A1 (en) | 2023-06-01 |
WO2021003002A1 (en) | 2021-01-07 |
US11593169B2 (en) | 2023-02-28 |
US20210004271A1 (en) | 2021-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836276B2 (en) | Peripheral device with resource isolation | |
EP3201820B1 (en) | Protecting application secrets from operating system attacks | |
US8966464B1 (en) | Isolating tenants executing in multi-tenant software containers | |
US11842217B1 (en) | Isolating tenants executing in multi-tenant software containers | |
US9471353B1 (en) | Isolating tenants executing in multi-tenant software containers | |
US20230168933A1 (en) | Memory deallocation across a trust boundary | |
US8397245B2 (en) | Managing loading and unloading of shared kernel extensions in isolated virtual space | |
US7926086B1 (en) | Access control mechanism for shareable interface communication access control | |
US9754122B1 (en) | Isolating tenants executing in multi-tenant software containers | |
US8527989B2 (en) | Tracking loading and unloading of kernel extensions in isolated virtual space | |
US9270703B1 (en) | Enhanced control-plane security for network-accessible services | |
CN106575245B (zh) | 随通信故障的分布式工作负载重新分配 | |
WO2015085826A1 (zh) | 一种访问共享资源的方法及装置 | |
Brandenburg | A synchronous IPC protocol for predictable access to shared resources in mixed-criticality systems | |
US8448169B2 (en) | Managing unique electronic identification for kernel extensions in isolated virtual space | |
CN113094700A (zh) | 执行安全操作的系统以及系统执行安全操作的方法 | |
WO2023016414A1 (zh) | 凭据的轮转方法、计算设备及存储介质 | |
Zheng et al. | A multi-tenant framework for cloud container services | |
US11347712B2 (en) | Preventing long running transactions from holding record locks | |
US11429412B2 (en) | Guest protection from application code execution in kernel mode | |
US20230236906A1 (en) | Information processing device, information processing method, and program | |
WO2023216776A1 (en) | Providing system services | |
EP4086793A1 (en) | Safe user interface distribution method for heterogeneous multi-device interaction | |
Lemerre et al. | A communication mechanism for resource isolation | |
CN113760524A (zh) | 任务执行方法和装置 |
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 |