CN115136133A - 按需代码执行的单次使用执行环境 - Google Patents
按需代码执行的单次使用执行环境 Download PDFInfo
- Publication number
- CN115136133A CN115136133A CN202180016163.7A CN202180016163A CN115136133A CN 115136133 A CN115136133 A CN 115136133A CN 202180016163 A CN202180016163 A CN 202180016163A CN 115136133 A CN115136133 A CN 115136133A
- Authority
- CN
- China
- Prior art keywords
- computing device
- host computing
- execution
- execution environment
- state
- 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
Images
Classifications
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/45562—Creating, deleting, cloning virtual machine instances
-
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
Abstract
提供了用于有效地为按需代码执行系统配置执行环境以处置单个用户的单个请求(或会话)的系统和方法。一旦会话或请求完成,就重置所述执行环境,诸如通过使所述硬件处理器状态、存储器和存储装置重置。特别地,在代码的执行之前,检索所述主机计算装置的所述执行环境的状态,诸如硬件处理器、存储器和/或存储装置状态。此外,在所述代码指令的执行期间,可收集中间状态。在代码的执行之后,基于与所述硬件处理器、存储器和/或存储装置有关的所保存的状态而重置所述执行环境。随后的代码执行在所述执行环境中安全地发生,并且再次重置所述执行环境,等等。
Description
通过引用并入任何优先权申请
本申请要求2020年2月5日提交的题为“SINGLE USE EXECU TION ENVIRONMENTFOR ON-DEMAND CODE EXECUTION”的美国专利申请序列号16/782,873的权益,所述美国专利申请特此以引用的方式整体并入本文。
背景技术
计算装置可利用通信网络来交换数据。公司和组织操作将若干计算装置互连的计算机网络以支持操作或向第三方提供服务。计算系统可位于单个地理位置或位于多个不同的地理位置(例如,经由专用通信网络或公共通信网络进行互连)。具体地,托管型计算环境或数据处理中心,本文一般称为“数据中心”,可包括若干互连的计算系统来向数据中心的用户提供计算资源。数据中心可以是代表组织运营的私有数据中心,或者可以是代表公众或为公众利益运营的公共数据中心。
要促进对数据中心资源的增加的利用率,虚拟化技术允许单个物理计算装置托管虚拟机的一个或多个实例,所述虚拟机的一个或多个实例相对于数据中心的用户显现且作为独立的计算装置操作。通过虚拟化,单个物理计算装置可以动态方式创建、维持、删除或以其他方式管理虚拟机。用户继而可向数据中心请求计算资源,诸如单个计算装置或联网的计算装置的配置,并且被供应不同数目的虚拟机资源。在一些虚拟化环境中,可拍摄虚拟机的快照,并且可将虚拟机恢复到快照。
在一些情境下,用户可请求数据中心提供计算资源以执行特定任务。所述任务可对应于计算机可执行指令的集合,所述数据中心随后可代表用户执行所述计算机可执行指令的集合。所述数据中心因此还可促进对数据中心资源的增加的利用率。
附图说明
这些和其他特征、方面和优点在下文参考附图进行描述,这些附图旨在用于说明性目的并且决不应被解释为限制实施方案的范围。此外,不同公开的实施方案的各种特征可组合以形成附加实施方案,所述实施方案是本公开的一部分。在附图中,相同的附图标记在相似的实施方案中可表示对应的特征。以下是各图的简要说明。
图1A是示出用于实现安全代码执行系统的说明性网络环境的框图。
图1B是示出说明性环境的框图,其中按需代码执行系统可执行对应于可由按需代码执行系统的用户提交的代码的任务。
图2示出了图1B中示出的主机计算装置的一般架构。
图3A至图3B是示出用于供应安全执行环境的说明性交互的流程图。
图4示出了用于主机计算装置的另一架构。
图5是示出用于安全地处理代码执行请求的示例方法的流程图。
图6是示出用于提供多个安全执行环境的说明性交互的流程图。
图7是示出用于在多个主机计算装置上安全地处理代码执行请求的示例方法的流程图。
具体实施方式
本公开的各方面涉及在“无服务器”或“云计算”环境中执行过程。本公开的各方面还涉及按需代码执行系统。按需代码执行系统支持快速执行可由按需代码执行系统的用户供应的代码,所述按需代码执行系统可在无服务器环境中实现。如本文所用,术语“无服务器”或“云计算”环境是指管理底层执行环境的生成、配置和状态的责任从用户抽象出来的环境。例如,用户无需创建执行环境、安装操作系统或管理环境状态以便在该环境中执行期望的代码。在现有的按需代码执行系统中,单个执行环境可负责处置跨许多用户的许多请求。这可能会引入安全性缺陷,例如诸如:(i)有能力破坏服务器的状态或代码以使其执行意外动作的恶意请求;或(ii)允许恶意攻击者从可重用的执行环境中辨别敏感信息。
如上所述,在一些现有的虚拟机系统中,可创建虚拟机的快照,并且可从快照中恢复虚拟机。例如,快照可能是虚拟机的当前状态的图像。然而,现有虚拟机系统中的快照过程可能相对较慢,诸如需要几秒钟才能创建快照和/或从快照中恢复。
一般地描述,本公开的各方面涉及被配置成处置单个用户的单个请求(或会话)的按需代码执行系统的执行环境。一旦会话或请求完成,就可重置执行环境,诸如通过重置硬件处理器状态、存储器和存储装置。特别地,在执行代码之前,可保存主机计算装置的执行环境的状态,诸如与硬件处理器、存储器和/或存储装置有关的状态。此外,在代码指令的执行期间,可收集中间状态。在执行代码之后,可基于与硬件处理器、存储器和/或存储装置有关的保存的状态以及中间状态而重置执行环境。后续的代码执行可安全地在执行环境中发生,并且可再次重置执行环境。因此,可以有效的方式在多次代码执行上重用和重置执行环境。
如本文所用,除了其普通和习惯含义外,“执行环境”可能是指在主机计算装置上(诸如,在虚拟机实例内)创建的逻辑单元,该逻辑单元使用该实例或装置上可用的资源。基于执行用户代码的请求,可创建或刷新新的执行环境以处置用户代码的执行。每个执行环境都可提供与其他执行环境的一定程度的隔离。例如,每个执行环境可提供与装置上的其他文件系统隔离的文件系统,并且在执行环境中执行的代码可能具有对与在执行环境之外执行的代码相关联的其他文件系统或存储器空间的有限访问权或没有访问权。示例执行环境可以是虚拟机实例内的容器。
本文描述的系统和方法可提高无服务器环境内的安全性,诸如按需代码执行系统内的安全性。如本文所描述的,在一些现有的按需代码执行系统中,单个执行环境可负责处置跨许多用户的许多请求。通过在每个请求或会话之后重置执行环境,可解决安全性问题,诸如侧信道攻击和持久性恶意软件。如本文所使用的,术语“侧信道攻击”通常是指涉及收集关于计算装置在执行代码时做什么的信息并使用该信息对装置进行逆向工程的安全漏洞。术语“侧信道攻击”通常也可能是指多租户环境的情形,其中多个工作者同时运行,并且工作者能够推断关于当前物理上共同位于同一计算装置上的其他工作负荷的信息。因此,本文描述的系统和方法可改进现有的无服务器技术。
本文描述的系统和方法可改进虚拟化技术。如上所述,现有虚拟机系统中的快照过程可能相对较慢,诸如需要几秒钟才能创建快照和/或从快照中恢复。例如,在现有虚拟机系统中创建快照可能需要创建处理器、存储器和存储装置状态的全部内容的图像。同样地,从快照恢复可能需要加载保存的图像。创建快照和/或从快照恢复可能需要许多秒。因此,当前描述的技术不是完全依赖于现有的快照技术,而是可以比现有虚拟机技术更轻量和更快的方式保存和/或恢复执行环境中的处理器、存储器和存储装置状态。
转到图1A,示出了说明性网络环境100,其中安全代码执行系统105可快速为用户代码执行提供执行环境。网络环境100可包括用户计算装置102、网络104和安全代码执行系统105。安全代码执行系统105可包括网关服务112、提供服务114、凭证服务、按需代码执行系统110、辅助服务106和数据存储服务108。网络环境100的组成部分可在本地或通过网络104彼此通信。用户计算装置102可包括能够通过网络104与安全代码执行系统通信的任何计算装置,诸如客户端计算装置。示例计算装置包括膝上型计算机或平板计算机、个人计算机、个人数字助理(PDA)、混合PDA/移动电话、移动电话和/或智能电话。
虽然网络环境100的某些组成部分被描述为彼此通信,但在一些实施方案中,网络环境100的任何组成部分都可与网络环境100的任何其他组成部分通信。例如,网关服务112可与网络环境100的任何组成部分进行通信;然而,并非所有这些通信线路都在图1A中示出。
用户计算装置102可将执行代码指令的请求传输到安全代码执行系统105。网关服务112可接收该请求。响应于接收到请求,提供服务114可致使新的执行环境在按需代码执行系统110中被实例化。如果执行环境已经存在,则提供服务114可致使执行环境在按需代码执行系统110中被重置。在一些实施方案中,如果执行环境被用于具有多个请求的会话,则执行环境可能已经存在并且被重用。可在执行环境内的按需代码执行系统110上执行用户代码。例如,按需代码执行系统110上的执行代码可与辅助服务106或数据存储服务108通信以实施任务。
此外,用户可借助于用户计算装置102与按需代码执行系统110交互以提供可执行代码,并且确立限定应何时以及如何在按需代码执行系统110上执行此类代码的规则或逻辑,从而确立“任务”。例如,用户可能希望运行用户已经开发的一条代码。运行所述代码的一种方式将是:从提供基础设施作为服务的服务提供商获取虚拟机实例;配置所述虚拟机实例以适合用户的需要;以及使用所配置的虚拟机实例来运行所述代码。为了避免该过程的复杂性,用户可替代地向按需代码执行系统110提供代码,并请求按需代码执行系统110执行代码。按需代码执行系统110可基于代码执行请求而处置计算容量(例如,在下文更详细地描述的执行环境、容器、实例等)的获取和配置,并且使用所述计算容量来执行所述代码。按需代码执行系统110可基于量而进行自动放大和缩小,由此减轻用户不得不担忧过度利用(例如,获取太少计算资源并遭受性能问题)或利用不足(例如,获取比运行代码所需的计算资源多的计算资源,并且因此付出过多)的负担。
说明性环境100还包括一个或多个基于网络的数据存储服务108,所述一个或多个基于网络的数据存储服务被配置成使按需代码执行系统110能够存储数据以及从一个或多个持久或基本上持久的数据源检索数据。说明性地,基于网络的数据存储服务108可使按需代码执行系统110能够:存储对应于任务的信息,诸如代码或元数据;存储表示任务的相依性的额外的代码对象;检索将要在执行任务期间处理的数据;以及存储关于该执行的信息(例如,结果)。基于网络的数据存储服务108可表示(例如)关系或非关系数据库。在另一示例中,基于网络的数据存储服务108可表示网络附接存储装置(NAS),所述网络附接存储装置被配置为提供对被布置成文件系统的数据的访问。基于网络的数据存储服务108可进一步使按需代码执行系统110能够诸如通过以下操作来查询和检索关于存储在按需代码执行系统110内的数据的信息:查询许多相关文件或记录、那些文件或记录的大小、文件或记录名称、文件或记录创建时间等。在一些实例中,基于网络的数据存储服务108可提供额外的功能性,诸如将数据分隔为逻辑组(例如,与单独的账户相关联的组等)的能力。虽然示出为不同于辅助服务106,但基于网络的数据存储服务108在一些情况下也可表示一种类型的辅助服务106。
基于网络的数据存储服务108可包括数据存储库。如本文所用,除了其普通和习惯含义之外,“数据存储库”可以是指用于存储和/或组织数据的任何数据结构(和/或多个数据结构的组合),包括但不限于,关系数据库(例如,Oracle数据库、MySQL数据库等)、非关系数据库(例如,NoSQL数据库等)、键值数据库、存储器中数据库、数据库中的表、逗号分隔值(CSV)文件、可扩展标记语言(XML)文件、TeXT(TXT)文件、平面文件、电子表格文件和/或任何其他广泛使用或专有的数据存储格式。
网络104可以是任何有线网络、无线网络或它们的组合。另外,网络104可以是个域网、局域网、广域网、电缆网络、卫星网络、蜂窝电话网络或它们的组合。此外,网络104可以是空中广播网络(例如,用于收音机或电视)或可能由各个不同方操作的链接网络的可公开访问网络,诸如互联网。在一些实施方案中,网络104可以是专用或半专用网络,诸如公司或大学内联网。网络104可包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其他类型的无线网络。网络104可使用用于经由互联网或其他前述类型的网络中的任何一种进行通信的协议和部件,诸如HTTP。用于经由互联网或其他前述类型的通信网络中的任何一种进行通信的协议和部件对于计算机通信领域的技术人员来说是已知的,并且因此本文不需要更详细地进行描述。
用户计算装置102和安全代码执行系统105可各自体现在一个或多个装置中。例如,用户计算装置102和安全代码执行系统105可包括网络接口、存储器、硬件处理器和非暂时性计算机可读介质驱动器,所有这些都可借助于通信总线彼此通信。网络接口可通过网络104和/或其他网络或计算机系统提供连接性。硬件处理器可往返包含程序指令的存储器进行通信,该程序指令由硬件处理器执行以操作用户计算装置102和安全代码执行系统105。存储器一般包括RAM、ROM和/或其他持久性和/或辅助的非暂时性计算机可读存储介质。
另外,在一些实施方案中,安全代码执行系统105以及其部件由在托管的计算环境中实现的一个或多个虚拟机实现。托管的计算环境可包括一个或多个快速提供和/或释放的计算资源。计算资源可包括配置有具体配置的计算机可执行指令的硬件计算、联网和/或存储装置。托管的计算环境也可称为“无服务器”、“云”或分布式计算环境。
转向图1B,按需代码执行系统110被示出为在分布式计算环境中操作,所述分布式计算环境包括使用一个或多个计算机网络(图1B中未示出)进行互连的几个计算机系统。按需代码执行系统110也可在具有比图1B中示出的更少或更多数量的装置的计算环境中操作。因此,图1B中的按需代码执行系统110的描述应被视为说明性的,且不限于本公开。
为了实现与按需代码执行系统110的交互,系统110包括实现与按需代码执行系统110的交互的一个或多个前端120。在说明性实施方案中,前端120用作由按需代码执行系统110提供的其他服务的“前门”,从而使用户能够(经由用户计算装置102)提供计算机可执行代码、请求执行计算机可执行代码并且查看计算机可执行代码的结果。前端120包括用以实现在按需代码执行系统110与其他计算装置之间的交互的多种部件。例如,每个前端120可包括请求接口,所述请求接口向用户计算装置102提供以下能力:将用户指定的代码上传或以其他方式传送到按需代码执行系统110并且其后请求执行那个代码。在一个实施方案中,所述请求接口经由图形用户接口(GUI)、CLI或API与外部计算装置(例如,用户计算装置102、辅助服务106等)通信。前端120处理所述请求并且确保所述请求被恰当地授权。例如,前端120可确定与所述请求相关联的用户是否被授权访问在所述请求中指定的用户代码。前端120的请求接口可从用户接收调用以执行作为超文本传输协议安全(HTTPS)请求的任务。而且,在执行任务时,也可处理和利用HTTPS请求中包括的任何信息(例如,报头和参数)。如上文所论述的,可使用任何其它协议(包括例如HTTP、MQTT及CoAP)将包含任务调用的消息传递到请求接口。
对本文使用的用户代码的引用可指通过具体程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“代码指令”、“用户代码”和“程序代码”可以可互换地使用。例如,可结合用户开发的特定Web应用或移动应用执行此类用户代码以实现具体功能。如上文所述,用户代码的单独集合(例如,用以实现具体功能)在本文称为“任务”,而对该代码的具体执行(包括(例如)编译代码、解译代码或以其他方式使代码能够执行)称为“任务执行”或简称为“执行”。任务可用编程语言编写,所述编程语言诸如但不限于JavaScript、Java、Python或Ruby。可以多种方式“触发”任务以在按需代码执行系统110上执行。在实施方案中,用户或其它计算装置可传输执行任务的请求,所述请求通常可称为执行所述任务的“调用”。此类调用可包括将要执行的用户代码(或其位置)以及要用于执行用户代码的一个或多个自变量。例如,调用可提供任务的用户代码以及执行任务的请求。在另一示例中,可通过先前上传的任务的名称或标识符来识别调用。在另一示例中,对应于任务的代码可包括在对所述任务的调用中,并且在按需代码执行系统110接收所述请求之前上传在单独的位置(例如,辅助服务106的存储装置或在按需代码执行系统110内部的存储系统)。用于任务的代码可通过使用这些代码对象的标识符来引用在按需代码执行系统110处维持的额外代码对象,使得代码对象在执行任务之前与执行环境中的任务的代码组合。按需代码执行系统110可基于在处理对任务的调用时任务的代码在哪里可用而改变其对任务的执行策略。
执行任务的调用可指定将要与对应于所述任务的用户代码一起使用的一个或多个第三方库(包括本地库)。在一个实施方案中,所述调用可向按需代码执行系统110提供文件,所述文件包含与请求执行的任务相对应的用户代码和任何库(和/或其存储位置的识别)。在一些实施方案中,所述调用包括元数据,所述元数据指示将要执行的任务的程序代码、编写所述程序代码的语言、与所述调用相关联的用户和/或被保留用于执行所述程序代码的计算资源(例如,存储器等)。例如,任务的程序代码可通过所述调用提供、先前由用户上传、由按需代码执行系统110提供(例如,标准例程)和/或由第三方提供。说明性地,通过使用与代码相关联的URI,可在任务的元数据内引用不包括于调用内或先前由用户上传的代码。在一些实施方案中,此类资源层级约束(例如,将要分配多少存储器来执行特定用户代码)针对特定任务指定,并且在任务的每次执行期间可不变。在此类情况下,按需代码执行系统110可在接收每个单独的调用之前具有对此类资源层级约束的访问权,并且单独的调用可能未指定此类资源层级约束。在一些实施方案中,所述调用可指定其他约束,诸如许可数据,所述许可数据指示所述调用叫用什么种类的许可或权限来执行所述任务。此类许可数据可由按需代码执行系统110使用以访问专用资源(例如,在专用网络上)。在一些实施方案中,单独的代码对象还可与许可或授权相关联。例如,第三方可提交代码对象并将所述对象指定为仅用户的子集可读。按需代码执行系统110可包括用以实施关于代码对象的这些许可或授权的功能性。
为了管理对代码执行的请求,前端120可包括执行队列(图1B中未示出),所述执行队列可维持所请求的任务执行的记录。说明性地,按需代码执行系统110同时执行的任务的数目是有限的,并且因此,可将在按需代码执行系统110处发起(例如,经由API调用、经由从被执行或正在执行的任务的调用等)的新任务执行放置在执行队列上并例如以先进先出次序进行处理。在一些实施方案中,按需代码执行系统110可包括多个执行队列,诸如用于每个用户账户的单独的执行队列。例如,按需代码执行系统110的用户可能想要限制按需代码执行系统110上的任务执行的速率(例如,出于成本原因)。因此,按需代码执行系统110可利用账户专有的执行队列来节制特定用户账户进行的同时的任务执行的速率。在一些情况下,按需代码执行系统110可区分任务执行的优先级,使得特定账户或指定优先级的任务执行绕过或者在执行队列内优先。在其他情况下,按需代码执行系统110可在接收到对任务的调用之后立即或基本上立即执行任务,并且因此,可省略执行队列。
前端120还可包括输出接口(图1中未示出),所述输出接口被配置成输出关于在按需代码执行系统110上的任务的执行的信息。说明性地,所述输出接口可将关于任务执行的数据(例如,任务的结果、与任务执行相关的错误或任务执行的细节,诸如完成所述执行所需的总时间、经由所述执行所处理的总数据等)传输到用户计算装置102或辅助服务106,所述辅助服务可包括(例如)计费或记录服务。所述输出接口还可实现将诸如服务调用的数据传输到辅助服务106。例如,可在任务执行期间利用所述输出接口以将API请求传输到外部服务106(例如,以存储在任务执行期间所生成的数据)。
为了执行任务,按需代码执行系统110包括一个或多个工作者管理器140,所述一个或多个工作者管理器管理用于服务于传入的调用以执行任务的实例。在图1B中示出的示例中,每个工作者管理器140管理虚拟机实例154A-154C的活动池,所述虚拟机实例当前被指派给一个或多个用户,并且由一个或多个物理主机计算装置150A-150B实现。物理主机计算装置150A-150B和虚拟机实例154A-154C还可实现一个或多个执行环境158A-158F,所述一个或多个执行环境可包含和执行一个或多个用户提交的代码指令160A-160G。如本文所描述的,执行环境可以是使用在该虚拟机实例或主机计算装置上可用的资源在该实例内或装置上创建的逻辑单元。例如,每个工作者管理器140可基于在执行任务的调用中指定的信息而创建新的执行环境或者定位现有的执行环境158A-158F并且指派所述执行环境以处置任务的执行。每个执行环境可对应于任务的执行环境,从而提供与其他执行环境的至少一定程度的隔离。例如,每个执行环境可提供与装置上的其他文件系统隔离的文件系统,并且在执行环境中执行的代码可能具有对与在执行环境之外执行的代码相关联的其他文件系统或存储器空间的有限访问权或没有访问权。如本文所述,提供服务114和/或主机计算装置150A、150B可创建、管理和/或重置执行环境158A-158F。
执行环境156A-156F、虚拟机实例154A-154C和主机计算装置150A-150B还可包括语言运行时、代码库或促进用户提交的代码160A-160G的执行的其他支持功能(图1B中未示出)。物理计算装置150A-150B和虚拟机实例154A-154C还可包括操作系统152A-152B和156A-156C。在各种实施方案中,操作系统152A-152B和156A-156C可以是相同的操作系统、相同的操作系统的变体、不同的操作系统或它们的组合。
一旦前端120已成功地处理了用以执行任务的触发事件,前端120就将请求传送到工作器管理器140以执行所述任务。在一个实施方案中,每个前端120可与对应的工作者管理器140(例如,共位或地理上在前端120附近的工作者管理器140)相关联,并且因此,前端120可将大多数或所有请求传送到该工作者管理器140。在另一实施方案中,前端120可包括位置选择器,所述位置选择器被配置成确定将执行请求传送到的工作者管理器140。在一个实施方案中,所述位置选择器可基于将调用散列来确定接收所述调用的工作者管理器140,并且将所述调用分发到基于散列值(例如,经由散列环)而选择的工作者管理器140。用于在工作者管理器140之间分发调用的各种其他机制对于本领域技术人员将是显而易见的。
如图1B中所示,主机计算装置150A-150B、虚拟机实例154A-154C和执行环境158A-158F的各种组合和配置可用于促进用户提交的代码160A-160G的执行。在示出的示例中,主机计算装置150A实现两个虚拟机实例154A和154B。虚拟机实例154A继而实现两个执行环境158A和158B,所述两个执行环境分别包含用户提交的代码160A和160B。虚拟机实例154B实现单个执行环境158C,所述单个执行环境包含用户提交的代码160C。主机计算装置150B还实现虚拟机实例154C并且直接实现执行环境158E和158F,所述执行环境包含用户提交的代码160F和160G。虚拟机实例154C继而实现执行环境158D,所述执行环境包含用户提交的代码指令160D和160E。将理解,出于示例的目的而说明这些实施方案,并且许多其他实施方案也在本公开的范围内。
图2是可在图1A中的环境100中使用的说明性主机计算装置150的示意图。主机计算装置150包括可用于快速提供执行环境的计算机硬件和软件部件的布置。虽然关于图2示出和描述了主机计算装置150的一般架构,但图2的一般架构可用于实现本文描述的其他服务和/或应用。本领域技术人员将理解,主机计算装置150可包括比图2中示出的部件更多(或更少)的部件。此外,本文描述的其他计算系统可包括计算机硬件部件和软件部件的相似实现方式布置。
主机计算装置150可包括硬件处理器202、主存储器210、存储器管理单元(MMU)230、网络接口204、非暂时性计算机可读介质206和输入/输出装置接口208,所有这些都可借助于通信总线224彼此通信。计算机可读介质206在本文中也可称为存储装置。主存储器210和/或存储器管理单元230在本文中也可称为存储器装置。如图所示,主机计算装置150与任选显示器218和任选输入装置220相关联或与之通信。在其他实施方案中,显示器218和输入装置220可包括在图1A中示出的用户计算装置102中。网络接口204可提供具有与一个或多个网络或计算系统的连接性的主机计算装置150。硬件处理器202因此可经由网络104从其他计算系统(诸如,用户计算装置102)或服务接收信息和指令。硬件处理器202还可往返存储器210通信,并且还经由输入/输出装置接口208提供用于任选显示器218的输出信息。输入/输出装置接口208可以接受来自任选输入装置220诸如键盘、鼠标、数字笔、触摸屏、加速度计、陀螺仪或经由运动捕捉和/或图像识别(例如,眼睛、手、头部和/或身体部位的放置和/或识别)记录的姿势的输入。输入/输出装置接口220还可将音频数据输出到扬声器或耳机(未示出)。
主存储器210可包含硬件处理器202执行以便实现主机计算装置150的一个或多个实施方案的具体配置的计算机程序指令。存储器210一般包括RAM、ROM和/或其他持久性或非暂时性计算机可读存储介质。存储器210可存储操作系统214,该操作系统提供由处理单元202在主机计算装置150的一般管理和操作中使用的计算机程序指令。存储器210还可包括用于实现主机计算装置150的各方面的其他信息。
硬件处理器202也可称为中央处理单元(CPU)。硬件处理器202可包括处理器寄存器212和1级(L1)、2级(L2)和3级(L3)高速缓存216。在一些实施方案中,虽然未示出,但处理器202可包括更少或额外的高速缓存(诸如,L4高速缓存)。处理器寄存器212可以是快速可访问的位置并且可容纳指令、存储地址或任何类型的数据(诸如,位序列或单独的字符)。处理器高速缓存216是处理器202用来降低从主存储器210访问数据的平均成本的硬件高速缓存。存储器管理单元(MMU)230是与一个或多个页表222通信以将虚拟页号映射到主存储器210中的物理页号的计算机硬件装置。因此,MMU 230可执行虚拟存储器地址到物理地址的转换。
参考图3A,示出了用于提供安全执行环境的说明性交互。图3A的环境300可能与图1A或图1B的环境100相似。例如,图3A的用户计算装置102A可以是图1A的用户计算装置102的计算装置。相似地,图3A的主机计算装置150可以与图2的主机计算装置150相似。然而,为了便于讨论,可省略相关附图(诸如,图1A、图1B或图2)的一些部件在图3A的环境300中的描绘。图3A中的示出的交互是示例交互。此外,下面关于图3B更详细地描述了额外的示例交互。在其他实施方案中,根据本公开,其他交互(未示出)可能是可能的。与图1的通信描绘相似,并非每一个可能的通信都可在图3A中示出。
图3A的交互从步骤一(1)开始,其中提供服务114可从主机计算装置150接收状态。在主机计算装置150上调用用户代码之前,主机计算装置150的执行环境的状态可由提供服务114接收。可接收的示例状态可包括但不限于硬件处理器状态、存储装置状态和/或操作系统状态。硬件处理器状态可包括硬件处理器寄存器212的状态。示例存储装置状态可包括计算机可读介质206的图像数据。示例操作系统状态可包括操作系统214的套接字、文件描述符、管道和/或队列。在一些实施方案中,基本执行环境可能是最初加载在主机计算装置150上的图像。图像可包括主机计算装置150的硬件处理器202、计算机可读介质206、主存储器210和/或其他部件的状态。
在步骤二(2),用户计算装置102A的用户代码指令可在主机计算装置150上的执行环境中执行。特别地,用户代码指令可在主机计算装置150的虚拟机实例上的执行环境中执行。虽然未示出,但主机计算装置150可以是按需代码执行系统110的许多计算装置中的一个。
在步骤二’(2’),当用户代码指令在主机计算装置150上的执行环境中执行时,提供服务114可从主机计算装置150接收状态改变和/或状态改变的指示。关于主存储器210,如果代码的执行致使对任何存储器页面的读取或写入,则提供服务114可接收到此类操作发生的指示。相似地,关于计算机可读介质206,如果代码的执行致使对计算机可读介质206的任何存储单元(例如,页、块或段)的读取或写入,则提供服务114可接收此类操作发生的指示。有关状态改变和/或跟踪状态改变的额外细节将在下面关于图5更详细地描述。
在步骤三(3),在主机计算装置150上的代码执行(诸如,在虚拟机实例内)完成之后,提供服务114可致使以高效的方式重置主机计算装置150上的执行环境。如用数字三标记的,硬件处理器202中的每个,包括寄存器212和硬件处理器高速缓存216、计算机可读介质206、页表222和/或主存储器210,可被重置或修改以恢复到初始执行状态。例如,可将包括寄存器212的硬件处理器202重置为在步骤一(1)接收到的初始硬件处理器状态。可刷新硬件处理器高速缓存216(诸如,L1、L2、L3等)。可将计算机可读介质206重置为在步骤一(1)接收到的初始存储装置状态。例如,可加载图像数据以重置计算机可读介质206。另外地或替代地,如果在步骤二’(2’)的执行期间使用一种机制来跟踪对计算机可读介质206的改变,则可能只需要恢复对计算机可读介质206的改变。相似地,关于主存储器210,如果在步骤二’(2’)的执行期间使用一种机制来跟踪对主存储器210的访问或改变,则可能只需要恢复对主存储器210的改变。特别地,可修改页表222以重置执行环境。如图所示,可在步骤三(3)重置主机计算装置150的部件,诸如硬件处理器202(包括寄存器212和/或硬件处理器高速缓存216)、页表222、计算机可读介质206和/或主存储器210(包括操作系统214)。下面关于图5更详细地描述了有关重置执行环境的额外细节。因此,可以有效的方式重置主机计算装置150上的执行环境(诸如,主机计算装置150的虚拟机实例上的执行环境),并且执行环境可准备好安全地处理额外的代码执行请求。
参考图3B,示出了用于提供安全执行环境的额外说明性交互。图3B的环境350可能与图3A的环境300相似。例如,图3B的主机计算装置150可能与图2和/或图3A的主机计算装置150相似。然而,图3B的环境350与图3A的环境300之间的差异可能在于,前一个环境350的主机计算装置150可在不接收来自提供服务114的重置指令的情况下重置其执行环境。特别地,图3B的主机计算装置150可被配置成识别状态,跟踪状态,并在用户代码完成之后重置其执行环境。图3B中的示出的交互是示例交互。在其他实施方案中,根据本公开,其他交互(未示出)可能是可能的。与图1A的通信描述相似,并非每一个可能的通信都可在图3B中描述。
图3B的交互开始于步骤一(1),其中主机计算装置150可识别其自身的状态。在主机计算装置150上调用用户代码之前,主机计算装置150可确定其执行状态。如本文所述,执行环境状态可包括但不限于硬件处理器状态(诸如,硬件处理器寄存器212的状态)、存储装置状态(诸如,计算机可读介质206的页面、块、段或图像数据)和/或操作系统状态(诸如,操作系统214的套接字、文件描述符、管道和/或队列)。在一些实施方案中,基本执行环境可能是最初加载在主机计算装置150上的图像。图像可包括主机计算装置150的硬件处理器202、计算机可读介质206、主存储器210和/或其他部件的状态。
在步骤二(2),用户计算装置102A的用户代码指令可在主机计算装置150上的执行环境中执行。特别地,用户代码指令可在主机计算装置150的虚拟机实例上的执行环境中执行。
在步骤二’(2’),当用户代码指令在主机计算装置150上的执行环境中执行时,主机计算装置150可从主机计算装置150识别状态改变和/或状态改变的指示。关于主存储器210,如果代码的执行致使对任何存储器页面的读取或写入,则主机计算装置150可识别这些操作。相似地,对于计算机可读介质206,如果代码的执行致使对计算机可读介质206的任何存储单元(例如,页、块或段)的读取或写入,则主机计算装置150可识别这些操作。有关识别状态改变(诸如,跟踪这些状态改变)的额外细节将在下面关于图5更详细地描述。
在步骤三(3),在主机计算装置150上的代码执行(诸如,在虚拟机实例内)完成之后,主机计算装置150可被配置成以高效的方式重置主机计算装置150上的执行环境。如用数字三标记的,主机计算装置150可重置或修改硬件处理器202中的每个,包括寄存器212和硬件处理器高速缓存216、计算机可读介质206、页表222和/或主存储器210,以恢复到初始执行状态。例如,如本文所述,主机计算装置150可将其自身的硬件处理器202(包括寄存器212)重置为在步骤一(1)识别的初始硬件处理器状态。主机计算装置150还可刷新硬件处理器高速缓存216(诸如,L1、L2、L3等)。主机计算装置150可将计算机可读介质206重置为在步骤一(1)识别的初始存储装置状态。关于主存储器210,如果在步骤二’(2’)的执行期间使用一种机制来跟踪对主存储器210的访问或改变,则可能只需要恢复对主存储器210的改变。特别地,可修改页表222以重置执行环境。在上文和下文关于图3A和图5更详细地描述了有关重置执行环境的额外细节。
特别地,硬件处理器202可致使计算机可读介质206、页表222和/或主存储器210恢复到初始执行状态。此外,硬件处理器202可自行重置。例如,如下面所讨论的,硬件处理器202可使用“big.LITTLE”架构或相似的东西。因此,硬件处理器中的一个或多个可负责重置,这可包括重置其他硬件处理器以及计算机可读介质206、页表222和/或主存储器210。
图4示出了用于主机计算装置150C的另一架构。图4的主机计算装置150C可与图2的主机计算装置150相似。然而,图4的主机计算装置150C可包括重置装置402。重置装置402可以是主机计算装置150C上的硬件,该硬件被配置成执行本文描述的重置操作中的一些。例如,代替硬件处理器202重置其自身状态或重置计算机可读介质206和/或主存储器210,重置装置402可负责此类操作。重置装置402可能是用于重置的专用硬件。示例重置装置402可包括总线224上的卡(诸如,外围部件互联网(PCI)卡)和/或复杂可编程逻辑装置(CPLD)或现场可编程门阵列(FPGA),它们可驻留在主机计算装置150C的母板上。
在其他实施方案(未示出)中,主机计算装置150C可包括多个硬件处理器202或核心。在这些实施方案中,硬件处理器202或核心中的一者或多者可被配置用于重置具体任务,而其他硬件处理器202或核心可负责一般计算任务。例如,如果硬件处理器202使用“big.LITTLE”架构或相似的架构,则被配置用于具体重置任务的硬件处理器202或核心中的一者或多者可能是较小的核心,并且其余硬件处理器202可能是可被保留用于更复杂的重置任务的更大的核心。
图5是示出由安全代码执行系统105实现的用于安全地处理代码执行请求的示例方法500的流程图。如本文所述,安全代码执行系统105可包括提供服务114。在一些实施方案中,提供服务114和/或主机计算装置150可实现方法500的各方面。
在框501处,可初始化执行环境。例如,如果在主机计算装置150上不存在执行环境,诸如在虚拟机实例中,则提供服务114和/或主机计算装置150最初可创建执行环境。如本文所述,基本执行环境可能是最初加载在主机计算装置150上的图像。因此,多个虚拟机实例和/或主机计算装置最初可使用和/或共享同一基本执行环境。
在一些实施方案中,可基于请求、会话和/或与代码执行请求相关联的用户配置文件而可定制主机计算装置150的初始化。如本文所述,提供服务114可将执行环境初始化为主机计算装置的虚拟机实例上的基本执行环境。除了基本初始化之外,提供服务114可将用于代码指令的定制数据插入基本执行环境中,以产生第一执行环境。示例定制数据可包括代码指令可使用的机器学习数据模型。因此,代码指令的执行可能致使定制数据的访问。
在框502,可接收初始执行环境状态。例如,提供服务114可从主机计算装置150接收初始执行环境状态。特别地,提供服务114可从主机计算装置150的硬件处理器202接收硬件处理器状态。硬件处理器状态可包括处理器寄存器212的状态。提供服务114可从主机计算装置150的计算机可读介质206接收存储装置状态。存储装置状态可包括计算机可读介质206的图像数据。提供服务114可从主机计算装置150的操作系统214接收操作系统状态(诸如,来自Linux或Unix kernel的状态)。如本文所述,示例操作系统状态可包括操作系统214的套接字、文件描述符、管道和/或队列。初始执行环境状态的目的可以是告知在主机计算装置150上的代码执行任务完成之后应重置回到哪个执行环境。在一些实施方案中,可高速缓存初始执行环境状态。例如,如果预定的执行环境被加载(诸如,从图像加载)到主机计算装置150上,则初始执行环境可能是已知的并且被预先高速缓存。因此,接收初始执行环境可包括从高速缓存中检索状态。
如本文所述,在一些实施方案中,提供服务114的一些方面可由主机计算装置150实现,诸如识别初始状态。例如,主机计算装置150可维持来自主机计算装置150的初始执行环境状态。在一些实施方案中,如果初始执行环境在多个加载和/或装置中保持相同,则可高速缓存初始执行环境状态。
在框504,可接收代码执行请求。例如,网关服务112可从用户计算装置102A接收代码执行请求。该请求可部分地由提供服务114和/或如本文所述的按需代码执行系统110处理。
在框506,可执行用户代码。例如,可在主机计算装置150的执行环境内执行用户代码。更具体地,可致使代码指令在按需代码执行系统110中的主机计算装置150上的虚拟机实例上的执行环境中执行。用户代码指令可执行请求的任务。用户代码处理的结果或与该结果相关联的消息(诸如,成功消息)可被传输到用户计算装置102A。
同样在框506处,在用户代码指令在执行环境中执行时,可维持和/或接收来自主机计算装置的状态。例如,提供服务114可从主机计算装置接收状态。特别地,用户代码指令在主机计算装置150上的执行环境中执行,主机计算装置150的状态可更新。例如,主机计算装置150的硬件处理器202(包括处理器寄存器212和/或处理器高速缓存216)可改变状态。主机计算装置150的计算机可读介质206可改变状态,诸如响应于对装置206的读取、写入、删除或更新而被更新的计算机可读介质206的块、位、段或页。主机计算装置150的主存储器210和/或相关联部件(诸如,页表222)可改变状态。提供服务114可接收来自主机计算装置150的状态改变和/或状态改变的指示。与接收执行环境的初始状态的目的非常相似,接收对执行环境的改变的目的可能是进一步告知如何在主机计算装置150上的代码执行任务完成后以有效的方式重置执行环境。在一些实施方案中,提供服务114的一些方面可由主机计算装置150实现,诸如在用户代码执行时维持状态。特别地,在用户代码执行时,可在内部维持状态(诸如,存储器装置状态和/或下面描述的存储装置状态),而不必与提供服务114通信。
在代码指令执行时,提供服务114可从主机计算装置的存储器装置(诸如,主存储器210)接收存储器装置状态。示例存储器装置状态可包括存储器页面被访问和/或修改的指示。例如,如果代码的执行致使对任何存储器页面的读取或写入,则提供服务114可接收到此类操作发生的指示。特别地,在代码指令执行时,可致使主机计算装置150在主机计算装置中记录指示被访问或修改的存储器页面的存储器装置状态。在主机计算装置中记录指示被访问的存储器页面的存储器装置状态可包括生成被访问的存储器页面的复制存储器页面,这也可被称为访问时副本。如本文所述,访问时副本可有利地防止一些侧信道攻击,因为它可防止后续执行代码指令确定先前访问了哪些存储器页面,这是一些恶意行为者可能会使用的信息。相似地,在主机计算装置中记录指示被修改的存储器页面的存储器装置状态可包括生成被修改的存储器页面的复制存储器页面,这也可被称为写时副本。提供服务114和/或主机计算装置150可跟踪对页面的每一次第一访问。在Linux环境中,提供服务114和/或主机计算装置150可使用userfaultfd来跟踪对存储器页面的访问。
在一些实施方案中,在代码指令执行时,主机计算装置150可创建位图,该位图指示什么已经被访问或修改以及什么还没有被访问或修改。示例存储器装置状态可包括如存储在位图中的存储器页面被访问和/或修改的指示,并且存储器装置状态可由提供服务114接收。在一些实施方案中,位图可能是为按需代码执行系统110中的重置目的而定制创建的。另外或替代地,位图可能是现有的位图(诸如,Linux kernel使用的脏位图),其可用于重置目的。位图可包括例如至少第一干净存储器页面和已被访问或修改的第二存储器页面的指示。在这些实施方案中的一些中,干净的存储器页面可存储在磁盘上并且用于恢复脏存储器页面,这在下面在框508C连同用于恢复脏存储器页面的其他机制一起进一步详细描述。如本文所述,主机计算装置150可维持位图,该位图指示什么已经被访问或修改以及没有被访问或修改,而不必与提供服务114通信。
在代码指令执行时,提供服务114可从主机计算装置的计算机可读介质206接收存储装置状态。特别地,如果代码的执行致使对计算机可读介质206的任何存储单元(例如,页、块或段)的读取或写入,则提供服务114可接收此类操作发生的指示。主机计算装置150可使用访问时副本和/或写时副本以分别跟踪已被访问或修改的计算机可读介质206的存储单元(例如,页、块或段)。如本文所述,主机计算装置150可维持存储装置状态而不必与提供服务114通信。
在一些实施方案中,安全代码执行系统105可允许某种状态在请求或会话之外持续存在。此类特征可能具有一些安全风险;然而,有效地建立高速缓存或分摊某些动作(诸如,创建连接)的成本可能是有利的。主机计算装置150的存储装置(诸如,计算机可读介质206)或存储器装置(诸如,主存储器210)可包括用于存储数据的可信区域。因此,在代码指令执行时,数据可存储在存储装置的可信存储装置扇区中,和/或存储器装置的可信存储器区域中。提供服务114可接收数据被存储在可信存储装置扇区或可信存储器区域中的指示,诸如存储装置状态或存储器装置状态。
在框508A处,可重置执行环境。在完成代码指令之后,可重置主机计算装置150的虚拟机实例上的执行环境。在一些实施方案中,主机计算装置150可在用户代码指令的执行完成时通知提供服务114。另外地或替代地,提供服务114可确定代码指令的执行何时完成。提供服务114可将执行环境重置为主机计算装置150的虚拟机实例上的执行环境。如本文所述,在一些实施方案中,主机计算装置150可自行重置,而不必与提供服务114通信。作为在该框508A处重置执行环境的一部分,在下面的框508B、508C、508D处,硬件处理器202、计算机可读介质206和/或主机计算装置150的存储器装置分别可被重置。用于重置硬件处理器202、计算机可读介质206和/或主机计算装置150的存储器装置的框508B、508C、508D可以与所示出的不同的次序发生,可以至少部分同时发生,和/或取决于实施方案,可不执行所有框508B、508C、508D。当重置已经完成时,主机计算装置150可通知提供服务114。
如本文所述,提供服务114的一些方面可由主机计算装置150实现,诸如重置执行环境。特别地,主机计算装置可执行以下块508B、508C、508D以重置执行环境,而不必与提供服务114通信。如所提及的,主机计算装置150可被配置成重置其自身。
在框508B处,可重置硬件处理器202。特别地,提供服务114可将重置指令传输到主机计算装置150的硬件处理器202。重置指令可被配置成致使主机计算装置150的硬件处理器202恢复到在前一框502处接收到的硬件处理器状态。将硬件处理器202恢复到前一硬件处理器状态可包括将处理器寄存器212恢复到前一硬件处理器状态中的某种。如本文所述,主机计算装置150可向硬件处理器202传输重置指令,而不必与提供服务114通信。例如,重置装置402可传输重置指令。
在一些实施方案中,重置指令可被进一步配置成刷新硬件处理器202的处理器高速缓存216(诸如,L1、L2、L3等)。刷新处理器高速缓存202还可防止侧通道攻击,诸如利用分支预测和现代硬件处理器上的推测执行来读取存储器的幽灵类侧通道攻击,该攻击可能会绕过访问控制。虽然刷新高速缓存以执行后续代码指令可能不是绝对必要的,但如果处理器高速缓存216未被刷新,则敏感处理器数据可能被后续恶意行为者捕获或被泄露给后续恶意行为者,诸如通过检查硬件处理器202的分支预测器或高速缓存216。在一些实施方案中,可刷新处理器高速缓存216和/或当主机计算装置150上发生两个并行调用(诸如,同一主机计算装置上的多个同时的虚拟机实例)并且主机计算装置150在不同时间片的调用之间切换时,可重置其他状态。
在框508C,可重置存储器装置。特别地,提供服务114可致使主机计算装置150的存储器装置至少部分地基于在前一框502处接收到的存储器装置状态而恢复到初始状态。例如,提供服务114可接收主存储器210中的存储器页面在代码执行期间何时被访问或修改的指示。在访问时副本或写时副本的情况下,可通过丢弃被访问或修改的复制存储器页面来完成重置主存储器210。通过丢弃复制存储器页面,初始存储器页面被加载并且在主存储器210中可用,从而将主存储器210恢复到初始状态。如本文所述,主机计算装置150可重置存储器装置而不必与提供服务114通信。
在主机计算装置150在位图中跟踪哪些存储器页面已被修改或访问的一些实施方案中,提供服务114可致使主机计算装置150的存储器装置至少部分地基于在前一框502处接收到的存储器装置状态而恢复到初始状态。例如,提供服务114可使用位图来识别哪些存储器页面是干净的以及哪些存储器页面是脏的,诸如已经访问或修改的第一干净存储器页面和第二存储器页面。因为第一存储器页面是干净的,所以不必更换,并且可维持。相反,因为第二存储器页面已被访问或修改,所以第二存储器页面可被替换为干净的存储器页面。干净的存储器页面可存储在磁盘上。从磁盘接收或检索的干净存储器页面可用于替换主存储器210中已访问或修改的存储器页面。另外地或替代地,提供服务114可致使主机计算装置150修改页表222,而不是替换干净的页面。提供服务114可通过改变哪些逻辑页指向哪些物理页来修改页表222。然而,修改页表222可能依赖于硬件处理器202和/或甚至硬件处理器202的版本。因此,在Linux内核环境中修改页表的另一个解决方案可包括在用户代码调用之前最初使用mmap,并且在代码指令完成之后,可将主存储器210重新映射到干净副本。可通过拦截对这些页面的写入并在磁盘上制作这些页面的副本来维持存储器页面的干净副本,这也可称为写时副本。相似地,可通过访问时副本来获得存储器页面的干净副本。在Linux内核环境的上下文中,可使用装置映射器和/或文件系统和用户空间(FUSE)来完成维持具有写时副本或访问时副本的存储器页面的干净副本。如本文所述,主机计算装置150可致使存储器装置恢复到初始状态,而不必与提供服务114通信。例如,主机计算装置150可替换存储器页面,和/或在不接收来自提供服务114的指令的情况下修改页表222。
在框508D,可重置计算机可读介质206。特别地,在一些实施方案中,提供服务114可致使计算机可读介质206被恢复回到在前一框502处接收到的初始存储装置状态。例如,可将图像数据加载到计算机可读介质206上。另外地或替代地,如果在执行期间使用一种机制来跟踪对计算机可读介质206的改变,则可能只需要恢复对计算机可读介质206的改变,这可通过访问时副本或写时副本方法来完成。因此,代替存储存储装置的整个快照,提供服务114仅需要存储或致使存储对存储装置的增量改变。如本文所述,主机计算装置150可致使计算机可读介质206被恢复回到初始存储装置状态,而不必与提供服务114通信。
在一些实施方案中,在框508A,可在执行环境中重置额外部件。例如,操作系统214或其各部分(诸如,套接字、文件描述符、管道和/或队列)可被重置到初始状态。作为另一示例,可将额外的物理部件或外围设备重置为初始状态。要重置的示例额外外围设备可包括图形处理单元(GPU),所述图形处理单元可具有要被清除和/或重置的状态、寄存器和/或高速缓存。
在一些实施方案中,如本文所述,主机计算装置150可包括重置装置402。重置装置402可包括处理器,该处理器可被配置成将重置指令传输到硬件处理器202。如本文所述,示例重置装置402可包括总线224上的卡(诸如,外围部件互联网(PCI)卡)和/或复杂可编程逻辑装置(CPLD)或现场可编程门阵列(FPGA),它们可驻留在主机计算装置150的母板上。驻留在主机计算装置150上的重置装置402可配置有具体重置指令,以重置存储装置和/或主存储器210。存储装置、主存储器210、硬件处理器202和/或其部件可被配置成断电和通电以恢复到初始状态的至少一部分。一些装置可能需要最短的时间段来断电以进行重置。
在一些实施方案中,如本文所述,安全代码执行系统105可允许某种状态持续存在于存储装置的可信存储装置扇区和/或存储器装置的可信存储器区域中。当主机计算装置150的存储装置和/或存储器装置发生重置时,可维持而不是重置可信存储装置扇区和/或可信存储器区域。因此,在同一执行环境中第二次调用代码指令期间,存储在可信存储装置扇区和/或可信存储器区域中的数据可用于后续请求或会话。然而,在一些实施方案中,如果在同一执行环境中第二次调用代码指令访问可信存储装置扇区和/或可信存储器区域中的数据,则提供服务114可接收指示数据被访问的状态。
在框508A、508B、508C、508D完成之后,执行环境已经被重置并且准备好以有效的方式接受额外的代码执行请求。在框510,可处理额外请求。例如,可处理第二代码执行请求,该请求可能导致执行先前的框504、506和/或508A、508B、508C、508D。特别地,可从第一用户计算装置接收第一代码指令。安全代码执行系统105可从不同于第一用户计算装置的第二用户计算装置接收第二代码指令。如本文所述,在处理第一代码指令并重置执行环境之后,提供服务114可致使第二代码指令在已经在主机计算装置的虚拟机实例上重置的执行环境中安全地执行。
参考图6,示出了用于提供安全执行环境的说明性交互。图6的环境600可能与图1A或图1B的环境100相似。例如,图6的用户计算装置102A可以是图1A的用户计算装置102的计算装置。相似地,图6的主机计算装置150可以与图2的主机计算装置150相似。然而,为了便于讨论,可省略相关附图(诸如,图1A、图1B或图2)的一些部件在图6的环境600中的描绘。图6中示出的交互是示例交互。在其他实施方案中,根据本公开,其他交互(未示出)可能是可能的。与图1A的通信描绘相似,并非每一个可能的通信都可在图6中示出。
图6的交互开始于步骤一(1),其中提供服务114可在不同的主机计算装置(诸如,第一主机计算装置150D和第二主机计算装置150E)上提供多个执行环境。示例提供可包括最初从基础映像创建执行环境。可从第一主机计算装置150D和第二主机计算装置150E中的一个或多个接收初始执行环境状态。有关创建执行环境和/或接收环境状态的额外细节在上面关于图3A和图5进行了描述。如本文所述,按需代码执行系统110可包括许多主机计算装置。图6的交互可能与主机计算装置(诸如,第一主机计算装置150D和第二主机计算装置150E)之间的代码执行和/或环境状态的迁移有关。
在步骤二(2),用户计算装置102A可提交可由网关服务112接收的代码执行请求,该请求可被转发到提供服务114和/或主机计算装置150D、150E。在步骤三(3),用户计算装置102A的用户代码指令可在至少第一主机计算装置150D上的执行环境中执行。例如,在性能下降的情况下,代码指令可在第一主机计算装置150D上执行,并且最终可迁移到第二主机计算装置150E。在其他情况和/或实施方案中,可在第一主机计算装置150D和第二主机计算装置150E上执行相同的代码指令,以确定哪个主机装置更好地执行代码指令。
在步骤四(4),提供服务114可管理主机计算装置150D、150E的执行环境。同样地,在第一主机计算装置150D性能下降或性能不佳的情况下,提供服务114可接收中间执行环境状态(诸如,硬件处理器、存储器装置和/或存储装置状态),而第一主机计算装置150D执行代码指令。提供服务114可暂停代码指令的执行,这可包括暂停整个虚拟机实例。提供服务114可将中间执行环境状态传输到第二主机计算装置150E。可根据中间执行环境状态初始化第二主机计算装置150E上的执行环境。提供服务114可致使代码指令的执行在第二主机计算装置150E而不是第一主机计算装置150D上恢复。
主机计算装置150D、150E的执行环境的管理还可包括在多个主机计算装置上运行代码指令并确定哪个主机设备执行得更好,这可被称为A/B测试。提供服务114可收集有关在第一主机计算装置150D上执行代码指令的性能数据。相似地,提供服务114可收集有关在第二主机计算装置150E上执行代码指令的性能数据。示例性能指标可能包括处理器、存储器和/或存储装置性能。提供服务114可比较来自主机计算装置150D、150E的性能数据以确定相对于彼此,一个主机计算装置具有比另一个更高的性能度量。响应于确定一个主机计算装置的性能比另一个差,可取消对主机计算装置的代码指令的执行。如本文所述,取消在主机计算装置上执行代码指令可致使该主机的执行环境被重置。
图7是示出由安全代码执行系统105实现的用于安全地处理多个主机计算装置上的代码执行请求的示例方法700的流程图。如本文所述,安全代码执行系统105可包括提供服务114。在一些实施方案中,提供服务114可实现方法700的各方面。特别地,方法700可能够将代码执行从第一主机计算装置迁移到第二主机计算装置,和/或确定哪个主机计算装置具有更好的性能来继续处理代码执行。
在框701处,可初始化多个执行环境。如本文所述,按需代码执行系统110可包括许多主机计算装置。提供服务114可在不同的主机计算装置上提供多个执行环境。图7的用于初始化执行环境的框701可能与图5的用于初始化执行环境的框501相似。例如,多个虚拟机实例和/或主机计算装置最初可使用和/或共享同一基本执行环境。
在框702,可接收初始执行环境状态。图7的用于接收初始执行环境状态的框702可能与图5的用于接收初始执行环境状态的框502相似。例如,提供服务114可从一个或多个主机计算装置接收初始执行环境状态。
在框704,可接收代码执行请求。例如,网关服务112可从用户计算装置102A接收代码执行请求。该请求可部分地由提供服务114和/或如本文所述的按需代码执行系统110处理。
在框706,可执行用户代码。例如,可在主机计算装置150D或150E的执行环境内执行用户代码。图7的用于执行用户代码的框706可能与图5的用于执行用户代码的框506相似。如本文所述,在性能下降的情况下,代码指令可在第一主机计算装置150D上执行,并且最终可迁移到第二主机计算装置150E。在其他情况和/或实施方案中,可在第一主机计算装置150D和第二主机计算装置150E上执行相同的代码指令,以确定哪个主机装置更好地执行代码指令。同样在框706处,在用户代码指令在执行环境中执行时,提供服务114可从主机计算装置150D或150E接收状态。
在框707处,可管理执行环境。提供服务114可管理主机计算装置150D、150E的执行环境。提供服务114可确定诸如第一主机计算装置150D的主机计算装置具有与在主机计算装置上执行第一代码指令相关联的性能问题。在这种情况下(在第一主机计算装置150D的性能下降或较差的情况下),提供服务114可接收中间执行环境状态。提供服务114可在第一主机计算装置150D的虚拟机实例上的执行环境中暂停第一代码指令的执行。然后,提供服务114可接收中间硬件处理状态、中间存储器装置状态和/或中间存储装置状态。中间执行环境状态可被传输到第二主机计算装置150E。提供服务114可根据中间执行环境状态(诸如,中间硬件处理状态、中间存储器装置状态和/或中间存储装置状态)初始化第二主机计算装置150E的虚拟机实例上的执行环境。提供服务114可致使代码指令的执行在第二主机计算装置150E而不是在第一主机计算装置150D上恢复,从而完成迁移。
如本文所述,管理多个主机计算装置的执行环境还可包括在多个装置上运行代码指令并确定哪个主机装置执行得更好(即,A/B测试)。在第一主机计算装置150D上执行一些代码指令之后,提供服务114可收集有关代码指令的执行的第一性能数据。相似地,在第二主机计算装置150E上执行一些代码指令之后,提供服务114可收集有关代码指令的执行的第二性能数据。提供服务114可根据性能数据计算性能度量,诸如处理器、存储器和/或存储装置性能。提供服务114可比较来自主机计算装置150D、150E的性能数据以确定相对于彼此,一个主机计算装置具有比另一个更高的性能度量以用于执行相同或相似的代码指令。响应于确定一个主机计算装置的性能比另一个差,提供服务114可取消对主机计算装置的代码指令的执行。
在框708处,可重置多个主机计算装置的执行环境。例如,在代码指令的执行被取消的情况下,可再次重用执行环境,并且在这种情况下,应当如本文所述重置执行环境。在另一种情况下,其中代码指令被迁移到另一个主机计算装置上的另一个执行环境,在完成代码指令的执行之后,执行环境可能仍然需要被重置以再次使用。图7的用于重置执行环境的框708可能与图5的用于重置执行环境的框508相似。
应理解,不一定所有目标或优势都可根据本文描述的任何特定实施方案来达成。因此,例如,本领域技术人员将认识到,某些实施方案可被配置成按照达成或优化如本文所教导的一个优点或一组优点而不一定达成如可在本文中教导或建议的其他目标或优点的方式来操作。
本文描述的所有过程可在由包括一个或多个计算机或处理器的计算系统执行的软件代码模块中体现并且经由所述软件代码模块来完全自动化。所述代码模块可存储在任何类型的非暂时性计算机可读介质或其他计算机存储装置中。可在专用计算机硬件中体现所述方法中的一些或全部。
根据本公开,除了本文描述的变化之外的许多其他变化将明显。例如,根据实施方案,可按照不同顺序执行、可添加、合并或完全省去本文描述的算法中的任何一个的某些动作、事件或功能(例如,不是所有的所描述的动作或事件对于算法的实践来说都是必要的)。此外,在某些实施方案中,可同时(例如,通过多线程处理、中断处理或多个处理器或处理器核心或在其他并行架构上)而非循序地执行动作或事件。另外,不同的任务或过程可由可一起起作用的不同机器和/或计算系统执行。
可通过机器来实现或执行结合本文公开的实施方案而描述的各种说明性逻辑块和模块,所述机器诸如为处理单元或处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑装置、离散门或晶体管逻辑、离散硬件部件、或其任何组合,经设计以执行本文描述的功能。处理器可以是微处理器,但在替代方案中,处理器可以是控制器、微控制器或状态机、它们的组合等。处理器可包括被配置成处理计算机可执行指令的电路。在另一实施方案中,处理器包括在不处理计算机可执行指令的情况下执行逻辑操作的FPGA或其他可编程装置。处理器还可实现为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一个或多个微处理器与DSP核心的联合、或任何其他此类配置。虽然本文主要关于数字技术进行描述,但处理器还可主要包括模拟部件。例如,本文所述的信号处理算法中的一些或所有可在模拟电路或混合的模拟和数字电路中实现。计算环境可包括任何类型的计算机系统,包括(但不限于)基于微处理器、大型计算机、数字信号处理器、便携式计算装置、装置控制器或电器内的计算引擎(仅举几例)的计算机系统。
除非另有明确规定,否则诸如尤其是“能够”、“可以”、“可能”或“可”等条件语言在上下文内应另外理解为一般用于传达某些实施方案包括某些特征、元件和/或步骤,而其他实施方案不包括某些特征、元件和/或步骤。因此,此类条件语言通常并非意在暗示无论如何所述特征、元件和/或步骤都是一个或多个实施方案必需的,或者并非暗示一个或多个实施方案必须包括用于在借助和不借助用户输入或提示下决定是否包括这些特征、元件和/或步骤或者是否在任何特定实施方案中执行这些特征、元件和/或步骤的逻辑。术语“包括(comprising)”、“包括(including)”、“具有”等是同义的并以开放形式包括性地使用,并且不排除附加元件、特征、动作、操作等。此外,如本文所用,术语“每个”除了具有其普通含义外,还可表示应用了术语“每个”的元件的集合的任何子集。
除非另有明确规定,否则诸如措辞“X、Y或Z中的至少一者”等连接性语言在上下文另外被理解为一般用于呈现项目、项等可以是X、Y或Z或它们的任何组合(例如,X、Y和/或Z)。因此,此类析取语言一般不意在并且将不应暗示某些实施方案需要存在X中的至少一个、Y中的至少一个或Z中的至少一个。
在本文描述和/或在附图中示出的流程图中的任何过程描述、元件或框应理解为潜在地表示包括用于实施所述过程中的特定逻辑功能或元件的一个或多个可执行指令的代码的模块、区段或部分。如本领域技术人员将理解,在本文描述的实施方案的范围内包括了替代实现方式,其中元件或功能可删除、按照不同于所示出或讨论的次序执行,包括基本上同时执行或以相反次序执行,这取决于所涉及的功能性。
除非另外明确规定,否则诸如“一(a)”或“一(an)”等冠词一般应理解为包括一个或多个所描述的物品。因此,诸如“被配置成……的装置”等短语意在包括一个或多个所述装置。此类一个或多个所述装置还可共同地被配置为执行所陈述的叙述。例如,“被配置成执行叙述A、B和C的处理器”可包括第一处理器,所述第一处理器被配置成与被配置成执行叙述B和C的第二处理器联合工作执行叙述A。
应当强调的是,可以对上述实施方案做出许多变化和修改,这些变化和修改的元件应当被理解为是在其他可接受的示例之中。在本文中,所有此类修改和变型意在包括在本公开的范围内,并且受以下权利要求书保护。
可鉴于以下条款来描述本公开的实施方案的示例。
条款1.一种计算机实现的方法,其包括:在配置有具体计算机可执行指令的计算机硬件处理器的控制下,从按需代码执行系统中的主机计算装置接收来自主机计算装置的硬件处理器的第一硬件处理器状态;从主机计算装置接收来自主机计算装置的存储装置的第一存储装置状态;致使代码指令在主机计算装置的虚拟机实例上的执行环境中执行;在致使代码指令在主机计算装置的虚拟机实例上的执行环境中执行时,从主机计算装置接收来自主机计算装置的存储器装置的存储器装置状态,其中致使代码指令执行致使:主机计算装置的硬件处理器改变为第二硬件处理器状态,主机计算装置的存储装置改变为第二存储装置状态,且主机计算装置的存储器装置改变状态;以及重置主机计算装置的虚拟机实例上的执行环境,其中重置执行环境还包括:向主机计算装置的硬件处理器传输重置指令,其中重置指令被配置成致使主机计算装置的硬件处理器恢复到第一硬件处理器状态;致使主机计算装置的存储装置恢复回到第一存储装置状态;以及至少部分地基于存储器装置状态而致使主机计算装置的存储器装置恢复到初始状态。
条款2.如条款1所述的计算机实现的方法,其中致使代码指令执行致使:在主机计算装置中记录指示被访问或修改的存储器页面的存储器装置状态。
条款3.如条款2所述的计算机实现的方法,其中记录指示被访问的存储器页面的存储器装置状态还包括:生成被访问的存储器页面的复制存储器页面。
条款4.如条款2所述的计算机实现的方法,其中记录指示被访问的存储器页面的存储器装置状态还包括:生成被修改的存储器页面的复制存储器页面。
条款5.如条款3或4所述的计算机实现的方法,其中至少部分地基于所述存储器装置状态致使所述主机计算装置的所述存储器装置恢复到所述初始状态还包括丢弃所述复制存储器页面。
条款6.如任一前述条款所述的计算机实现的方法,其中所述重置指令被进一步配置成刷新所述硬件处理器的高速缓存。
条款7.一种系统,其包括:数据存储介质;以及一个或多个计算机硬件处理器,所述一个或多个计算机硬件处理器与所述数据存储介质通信,所述一个或多个计算机硬件处理器被配置成执行计算机可执行指令以至少:从按需代码执行系统中的主机计算装置接收来自主机计算装置的硬件处理器的第一硬件处理器状态;致使第一代码指令在主机计算装置的虚拟机实例上的执行环境中执行;在致使第一代码指令在主机计算装置的虚拟机实例上的执行环境中执行时,所述一个或多个计算机硬件处理器被进一步配置成:从主机计算装置接收来自主机计算装置的存储器装置的存储器装置状态,其中致使第一代码指令执行致使:主机计算装置的硬件处理器改变为第二硬件处理器状态,并且主机计算装置的存储器装置改变状态;以及重置主机计算装置的虚拟机实例上的执行环境,其中为了重置执行环境,所述一个或多个计算机硬件处理器被进一步配置成:向主机计算装置的硬件处理器传输重置指令,其中重置指令被配置成致使主机计算装置的硬件处理器恢复到第一硬件处理器状态;并且至少部分地基于存储器装置状态致使主机计算装置的存储器装置恢复到初始状态。
条款8.如条款7所述的系统,其中为致使所述第一代码指令执行,所述主机计算装置被进一步配置成:创建指示已被访问或修改的至少第一干净存储器页面和第二存储器页面的位图,其中存储器装置状态指示第二存储器页面已被访问或修改。
条款9.如条款8所述的系统,其中为至少部分地基于所述存储器装置状态致使所述主机计算装置的所述存储器装置恢复到所述初始状态,所述一个或多个计算机硬件处理器被进一步配置成:使用位图识别已被访问或修改的第一干净存储器页面和第二存储器页面;维持第一干净存储器页面;并且用干净第二存储器页面替换已被访问或修改的第二存储器页面。
条款10.如条款7或8所述的系统,其中为致使主机计算装置的存储器装置恢复到初始状态,指示存储器装置的至少一部分断电和通电。
条款11.如条款7至10中任一项所述的系统,其中所述主机计算装置还包括重置装置,其中所述重置装置包括一个或多个计算机硬件处理器的处理器,所述处理器被配置成将所述重置指令传输到所述主机计算装置的硬件处理器。
条款12.如条款7至11中任一项所述的系统,其中所述第一代码指令是从第一用户计算装置接收的,并且其中所述一个或多个计算机硬件处理器被进一步配置成:从不同于所述第一用户计算装置的第二用户计算装置接收第二代码指令:并且致使第二代码指令在主机计算装置的虚拟机实例上的执行环境中执行。
条款13.一种系统,其包括:数据存储介质;以及一个或多个计算机硬件处理器,所述一个或多个计算机硬件处理器与所述数据存储介质通信,所述一个或多个计算机硬件处理器被配置成执行计算机可执行指令以至少:从按需代码执行系统中的第一主机计算装置接收来自主机计算装置的硬件处理器的第一硬件处理器状态;在第一代码指令在第一主机计算装置的第一虚拟机实例上的第一执行环境中执行时,从第一主机计算装置接收来自第一主机计算装置的存储器装置的存储器装置状态,其中致使第一代码指令执行致使:第一主机计算装置的硬件处理器改变为第二硬件处理器状态,并且第一主机计算装置的存储器装置改变状态;以及重置第一主机计算装置的第一虚拟机实例上的第一执行环境,其中为重置执行环境,所述一个或多个计算机硬件处理器被进一步配置成:向第一主机计算装置的硬件处理器传输重置指令,其中重置指令被配置成致使第一主机计算装置的硬件处理器恢复到第一硬件处理器状态;并且至少部分地基于存储器装置状态致使第一主机计算装置的存储器装置恢复到初始状态。
条款14.如条款13所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:在第一代码指令在第一主机计算装置的第一虚拟机实例上的第一执行环境中执行时,暂停第一代码指令在第一主机计算装置的第一虚拟机实例上的第一执行环境中的执行;从第一主机计算装置接收第二硬件处理器状态;向第二主机计算装置传输第二硬件处理器状态和存储器装置状态;致使第二主机计算装置的第二虚拟机实例上的第二执行环境根据第二硬件处理器状态和存储器装置状态进行初始化;并且恢复第一代码指令在第二主机计算装置的第二虚拟机实例上的第二执行环境中的执行。
条款15.如条款14所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:确定存在与在所述第一主机计算装置上执行所述第一代码指令相关联的性能问题。
条款16.如条款13至15中任一项所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:收集有关在所述第一主机计算装置上执行所述第一代码指令的第一性能数据;致使第一代码指令在第二主机计算装置的第二虚拟机实例上的第二执行环境中的第二次执行;并且收集有关在第一主机计算装置上执行第一代码指令的第二性能数据。
条款17.如条款16所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:确定相对于所述第一性能数据,所述第二性能数据具有更高的性能度量;并且取消第一代码指令在第一主机计算装置上的执行。
条款18.如条款13至17中任一项所述的系统,其中所述第一主机计算装置包括存储装置,所述存储装置包括可信存储装置扇区,其中所述一个或多个计算机硬件处理器被进一步配置成:在第一代码指令在第一主机计算装置的第一虚拟机实例上的第一执行环境中执行时,从第一主机计算装置接收指示第一数据存储在可信存储装置扇区上的第一存储装置状态,其中为重置第一执行环境,所述一个或多个计算机硬件处理器被进一步配置成:将第一数据维持在可信存储装置扇区中。
条款19.如条款18所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:致使第二代码指令在第一主机计算装置的第一虚拟机实例上的第一执行环境中执行;并且在第二代码指令在第一主机计算装置的第一虚拟机实例上的第一执行环境中执行时,从第一主机计算装置接收指示在可信存储装置扇区上访问了第一数据的第二存储装置状态。
条款20.如条款13至19中任一项所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:初始化所述第一主机计算装置的所述第一虚拟机实例上的基本执行环境;并且将针对第一代码指令的定制数据插入基本执行环境,以得到第一执行环境,其中第一代码指令在第一执行环境中的执行访问定制数据。
Claims (15)
1.一种计算机实现的方法,其包括:
在配置有具体计算机可执行指令的计算机硬件处理器的控制下,
从按需代码执行系统中的主机计算装置接收来自所述主机计算装置的硬件处理器的第一硬件处理器状态;
从所述主机计算装置接收来自所述主机计算装置的存储装置的第一存储装置状态;
致使代码指令在所述主机计算装置的虚拟机实例上的执行环境中执行;
在致使所述代码指令在所述主机计算装置的所述虚拟机实例上的所述执行环境中执行时,
从所述主机计算装置接收来自所述主机计算装置的存储器装置的存储器装置状态,其中致使所述代码指令执行致使:
所述主机计算装置的所述硬件处理器改变为第二硬件处理器状态,
所述主机计算装置的所述存储装置改变为第二存储装置状态,并且
所述主机计算装置的所述存储器装置改变状态;以及
重置所述主机计算装置的所述虚拟机实例上的所述执行环境,其中重置所述执行环境还包括:
向所述主机计算装置的所述硬件处理器传输重置指令,其中所述重置指令被配置成致使所述主机计算装置的所述硬件处理器恢复到所述第一硬件处理器状态;
致使所述主机计算装置的所述存储装置恢复回到所述第一存储装置状态;以及
至少部分地基于所述存储器装置状态而致使所述主机计算装置的所述存储器装置恢复到初始状态。
2.如权利要求1所述的计算机实现的方法,其中致使所述代码指令执行致使:
在所述主机计算装置中记录指示被访问或修改的存储器页面的所述存储器装置状态。
3.如权利要求2所述的计算机实现的方法,其中记录指示被访问的所述存储器页面的所述存储器装置状态还包括:
生成被访问的所述存储器页面的复制存储器页面。
4.如权利要求3所述的计算机实现的方法,其中至少部分地基于所述存储器装置状态致使所述主机计算装置的所述存储器装置恢复到所述初始状态还包括丢弃所述复制存储器页面。
5.一种系统,其包括:
数据存储介质;以及
一个或多个计算机硬件处理器,所述一个或多个计算机硬件处理器与所述数据存储介质通信,所述一个或多个计算机硬件处理器被配置成执行计算机可执行指令以至少:
从按需代码执行系统中的主机计算装置接收来自所述主机计算装置的硬件处理器的第一硬件处理器状态;
致使第一代码指令在所述主机计算装置的虚拟机实例上的执行环境中执行;
在致使所述第一代码指令在所述主机计算装置的所述虚拟机实例上的所述执行环境中执行时,所述一个或多个计算机硬件处理器被进一步配置成:
从所述主机计算装置接收来自所述主机计算装置的存储器装置的存储器装置状态,其中致使所述第一代码指令执行致使:
所述主机计算装置的所述硬件处理器改变为第二硬件处理器状态,并且
所述主机计算装置的所述存储器装置改变状态;以及
重置所述主机计算装置的所述虚拟机实例上的所述执行环境,其中为重置所述执行环境,所述一个或多个计算机硬件处理器被进一步配置成:
向所述主机计算装置的所述硬件处理器传输重置指令,其中所述重置指令被配置成致使所述主机计算装置的所述硬件处理器恢复到所述第一硬件处理器状态;并且
至少部分地基于所述存储器装置状态而致使所述主机计算装置的所述存储器装置恢复到初始状态。
6.如权利要求5所述的系统,其中为致使所述第一代码指令执行,所述主机计算装置被进一步配置成:
创建指示已被访问或修改的至少第一干净存储器页面和第二存储器页面的位图,其中所述存储器装置状态指示所述第二存储器页面已被访问或修改。
7.如权利要求6所述的系统,其中为至少部分地基于所述存储器装置状态而致使所述主机计算装置的所述存储器装置恢复到所述初始状态,所述一个或多个计算机硬件处理器被进一步配置成:
使用所述位图识别已被访问或修改的所述第一干净存储器页面和所述第二存储器页面;
维持所述第一干净存储器页面;并且
用干净的第二存储器页面替换已被访问或修改的所述第二存储器页面。
8.如权利要求5所述的系统,其中所述主机计算装置还包括重置装置,其中所述重置装置包括所述一个或多个计算机硬件处理器的处理器,所述处理器被配置成将所述重置指令传输到所述主机计算装置的所述硬件处理器。
9.如权利要求5所述的系统,其中为致使所述主机计算装置的所述存储器装置恢复到所述初始状态,指示所述存储器装置的至少一部分断电和通电。
10.如权利要求5所述的系统,其中所述第一代码指令是从第一用户计算装置接收的,并且其中所述一个或多个计算机硬件处理器被进一步配置成:
从不同于所述第一用户计算装置的第二用户计算装置接收第二代码指令:并且
致使所述第二代码指令在所述主机计算装置的所述虚拟机实例上的所述执行环境中执行。
11.一种系统,其包括:
数据存储介质;以及
一个或多个计算机硬件处理器,所述一个或多个计算机硬件处理器与所述数据存储介质通信,所述一个或多个计算机硬件处理器被配置成执行计算机可执行指令以至少:
从按需代码执行系统中的第一主机计算装置接收来自所述主机计算装置的硬件处理器的第一硬件处理器状态;
在第一代码指令在所述第一主机计算装置的第一虚拟机实例上的第一执行环境中执行时,
从所述第一主机计算装置接收来自所述第一主机计算装置的存储器装置的存储器装置状态,其中致使所述第一代码指令执行致使:
所述第一主机计算装置的所述硬件处理器改变为第二硬件处理器状态,并且
所述第一主机计算装置的所述存储器装置改变状态;以及
重置所述第一主机计算装置的所述第一虚拟机实例上的所述第一执行环境,其中为重置所述第一执行环境,所述一个或多个计算机硬件处理器被进一步配置成:
向所述第一主机计算装置的所述硬件处理器传输重置指令,其中所述重置指令被配置成致使所述第一主机计算装置的所述硬件处理器恢复到所述第一硬件处理器状态;并且
至少部分地基于所述存储器装置状态致使所述第一主机计算装置的所述存储器装置恢复到初始状态。
12.如权利要求11所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:
在第一代码指令在所述第一主机计算装置的所述第一虚拟机实例上的所述第一执行环境中执行时,
暂停所述第一代码指令在所述第一主机计算装置的所述第一虚拟机实例上的所述第一执行环境中的执行;
从所述第一主机计算装置接收所述第二硬件处理器状态;
向第二主机计算装置传输所述第二硬件处理器状态和所述存储器装置状态;
致使所述第二主机计算装置的第二虚拟机实例上的第二执行环境根据所述第二硬件处理器状态和所述存储器装置状态进行初始化;并且
恢复所述第一代码指令在所述第二主机计算装置的所述第二虚拟机实例上的所述第二执行环境中的执行。
13.如权利要求11所述的系统,其中所述第一主机计算装置包括存储装置,所述存储装置包括可信存储装置扇区,其中所述一个或多个计算机硬件处理器被进一步配置成:
在第一代码指令在所述第一主机计算装置的所述第一虚拟机实例上的所述第一执行环境中执行时,
从所述第一主机计算装置接收指示第一数据存储在所述可信存储装置扇区上的第一存储装置状态,
其中为重置所述第一执行环境,所述一个或多个计算机硬件处理器被进一步配置成:
将所述第一数据维持在所述可信存储装置扇区中。
14.如权利要求13所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:
致使第二代码指令在所述第一主机计算装置的所述第一虚拟机实例上的所述第一执行环境中执行;并且
在所述第二代码指令在所述第一主机计算装置的所述第一虚拟机实例上的所述第一执行环境中执行时,
从所述第一主机计算装置接收指示在所述可信存储装置扇区上访问了所述第一数据的第二存储装置状态。
15.如权利要求11所述的系统,其中所述一个或多个计算机硬件处理器被进一步配置成:
初始化所述第一主机计算装置的所述第一虚拟机实例上的基本执行环境;并且
将所述第一代码指令的定制数据插入所述基本执行环境,以得到所述第一执行环境,其中所述第一代码指令在所述第一执行环境中的执行访问所述定制数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/782,873 | 2020-02-05 | ||
US16/782,873 US11604669B2 (en) | 2020-02-05 | 2020-02-05 | Single use execution environment for on-demand code execution |
PCT/US2021/016425 WO2021158670A1 (en) | 2020-02-05 | 2021-02-03 | Single use execution environment for on-demand code execution |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115136133A true CN115136133A (zh) | 2022-09-30 |
Family
ID=74845019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180016163.7A Pending CN115136133A (zh) | 2020-02-05 | 2021-02-03 | 按需代码执行的单次使用执行环境 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11604669B2 (zh) |
EP (1) | EP4100838A1 (zh) |
CN (1) | CN115136133A (zh) |
WO (1) | WO2021158670A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11481325B2 (en) * | 2020-03-30 | 2022-10-25 | Citrix Systems, Inc. | Secure fast reboot of a virtual machine |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8549241B2 (en) * | 2010-01-06 | 2013-10-01 | Vmware, Inc. | Method and system for frequent checkpointing |
US9323552B1 (en) | 2013-03-14 | 2016-04-26 | Amazon Technologies, Inc. | Secure virtual machine memory allocation management via dedicated memory pools |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
-
2020
- 2020-02-05 US US16/782,873 patent/US11604669B2/en active Active
-
2021
- 2021-02-03 CN CN202180016163.7A patent/CN115136133A/zh active Pending
- 2021-02-03 EP EP21709196.6A patent/EP4100838A1/en active Pending
- 2021-02-03 WO PCT/US2021/016425 patent/WO2021158670A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US11604669B2 (en) | 2023-03-14 |
WO2021158670A1 (en) | 2021-08-12 |
EP4100838A1 (en) | 2022-12-14 |
US20210240509A1 (en) | 2021-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11829742B2 (en) | Container-based server environments | |
US10884722B2 (en) | Cross-environment application of tracing information for improved code execution | |
US11836516B2 (en) | Reducing execution times in an on-demand network code execution system using saved machine states | |
US11714675B2 (en) | Virtualization-based transaction handling in an on-demand network code execution system | |
US9189619B2 (en) | Runtime based application security and regulatory compliance in cloud environment | |
US9218042B2 (en) | Cooperatively managing enforcement of energy related policies between virtual machine and application runtime | |
US11392497B1 (en) | Low latency access to data sets using shared data set portions | |
US9983863B2 (en) | Method to optimize provisioning time with dynamically generated virtual disk contents | |
US11550713B1 (en) | Garbage collection in distributed systems using life cycled storage roots | |
US20190102309A1 (en) | Nv cache | |
US20180136941A1 (en) | Bootstrapping Profile-Guided Compilation and Verification | |
US10620871B1 (en) | Storage scheme for a distributed storage system | |
US11593270B1 (en) | Fast distributed caching using erasure coded object parts | |
US10642518B1 (en) | System and method for creating high frequency snapshots of an entity in a virtualized environment | |
US10698637B2 (en) | Stale block resynchronization in NVM based systems | |
US11119810B2 (en) | Off-the-shelf software component reuse in a cloud computing environment | |
CN115136133A (zh) | 按需代码执行的单次使用执行环境 | |
US11907176B2 (en) | Container-based virtualization for testing database system | |
US20220011938A1 (en) | System and method for selectively restoring data | |
US20180276036A1 (en) | System and method for providing a native job control language execution engine in a rehosting platform | |
JP2017515236A (ja) | ハードディスクがアプリケーションコードを実行するための方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |