CN113661482A - 计算环境中进程状态和/或组件的传输 - Google Patents

计算环境中进程状态和/或组件的传输 Download PDF

Info

Publication number
CN113661482A
CN113661482A CN201980095201.5A CN201980095201A CN113661482A CN 113661482 A CN113661482 A CN 113661482A CN 201980095201 A CN201980095201 A CN 201980095201A CN 113661482 A CN113661482 A CN 113661482A
Authority
CN
China
Prior art keywords
operating system
information
update
processing information
computing
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
Application number
CN201980095201.5A
Other languages
English (en)
Inventor
C.J.菲尼克斯
C.R.约翰逊
J.布朗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN113661482A publication Critical patent/CN113661482A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Abstract

本公开涉及了在计算环境中在进程或活动软件程序之间传输状态信息,其中即使在拥有状态信息的进程或软件程序的原始或旧实例自然的或非自然的终止之后,进程或软件程序的新实例也可以接收这样的状态信息。

Description

计算环境中进程状态和/或组件的传输
相关申请的交叉引用
本申请要求2019年4月4日提交的申请序列号16/375189的权益,其公开内容通过引用并入本文。
背景技术
在典型的计算环境中,计算机程序或进程有时可能会崩溃(例如,非自然终止)、需要更新或需要移植到远程计算机进行处理。如果计算机程序或进程正在执行任务,上述一个或多个事件中断这些任务可能影响计算机程序或进程的性能。例如,在服务器-客户端环境中,如果状态信息(例如,句柄(handle))因任何前述事件而丢失,则客户端应用可能需要重新建立状态信息以恢复或重启客户端应用。这也可能发生在服务器进程中。在计算资源和访问新资源(例如,句柄、虚拟存储器对象等)所需的时间方面,重新建立状态信息可能是效率低的。
发明内容
所公开技术的一个方面提供了一种用于在计算进程之间传输信息的计算系统。该系统包括一个或多个计算设备、一个或多个计算机可读存储介质和程序指令,程序指令存储在一个或多个计算机可读存储介质上,用于由一个或多个计算设备中的至少一个执行。程序指令包括在操作系统内注册与第一进程相关联的处理信息,在第一进程终止后由第二进程从操作系统请求处理信息,以及由操作系统将处理信息的所有权传输到第二进程。
在该技术的这一方面中,传输所有权可以包括操作系统通知第一进程的衍生程序(spawner)第二进程请求注册的处理信息。
作为又一示例,程序指令还可以包括由衍生程序向第二进程发送验证码。程序指令还可包括验证第二进程被允许接收第一进程处理信息。
在该技术的这一方面中,传输所有权可包括操作系统接收一个或多个能力(capability)句柄作为注册的处理信息的一部分。
作为又一示例,程序指令还可以包括操作系统将一个或多个能力句柄传输到保管(safekeeping)进程,并由保管进程将能力句柄传输到第二进程。程序指令还可以包括操作系统将一个或多个能力句柄传输到保管进程,并由保管进程将能力句柄传输到第二进程。
程序指令还可进一步包括第二进程将接收到的一个或多个能力句柄转发给操作系统,以及操作系统将由保管进程传输的能力句柄中包括的信息与由第二进程转发的能力句柄中包括的信息比较。
在该技术的这一方面中,程序指令还可以包括响应于接收与第一进程相关联的更新通知,操作系统向第一进程通知更新。此外,操作系统可基于更新导致第二进程的衍生。此外,响应于被通知更新,第一进程发起注册处理信息。此外,响应于检测更新,第二处理发起请求处理信息。
在该技术的这一方面中,处理信息可以包括状态信息。状态信息通常可以包括在运行旧或原始进程或程序时建立的资源,例如,句柄、线程、存储器对象和其他数据,这些资源可以用于运行新或替换进程或程序。
在另一方面,该技术是用于在计算进程之间传输信息的方法。该方法包括在操作系统内注册与第一进程相关联的处理信息;在第一进程终止之后,由第二进程从操作系统请求处理信息;以及由操作系统将处理信息的所有权传输到第二进程。
在该技术的这一方面中,传输所有权包括操作系统通知第一进程的衍生程序第二进程请求注册的处理信息。例如,该方法还可包括由衍生程序向第二进程发送验证码,并由操作系统将提供给新进程的验证码与与第一进程相关联的验证码比较。
根据本技术的这一方面,传输所有权可包括操作系统接收一个或多个能力句柄作为注册的处理信息的一部分。
进一步根据本技术的这一方面,操作系统响应于接收与第一进程相关联的更新通知,向第一进程通知更新。此外,操作系统基于更新可导致第二进程的衍生。此外,响应于被通知更新,第一进程可以发起注册处理信息。另外,响应于检测更新,第二处理可以发起请求处理信息。
在另一个例子中,所公开的技术涉及在计算环境中在进程或活动软件程序之间传输状态信息,其中即使在拥有状态信息的进程或软件程序的原始或旧实例自然的或非自然的终止之后,进程或软件程序的新实例也可以接收这样的状态信息。
附图说明
图1是根据本公开各方面的系统的示例图。
图2是根据本公开各方面的系统的示例功能图。
图3是根据本公开各方面的示例流程图。
图4是根据本公开各方面的示例流程图。
图5是根据本公开各方面的示例流程图。
图6是根据本公开各方面的示例流程图。
图7是根据本公开各方面的示例流程图。
图8是根据本公开各方面的示例流程图。
具体实施方式
概述
该技术涉及更新和/或恢复计算机系统中的计算机程序或进程。计算机程序和进程可能会出现错误并进入不可恢复状态(例如,“崩溃”),因此必须非自然终止其执行,丢弃其存储器,并实例化一个新或替换程序或进程以取代原始或旧程序或进程。此外,有时,活动或正在运行的程序或进程可能需要进行计划的版本升级,或将程序或进程的执行传输到一个或多个远程计算机。一些程序或进程对其他客户端程序或进程执行“服务器”功能,例如,接收数据、对这样的数据进行操作并提供结果。在操作中,服务器进程或程序通常拥有并维护与客户端进程或程序的多个交换中的信息,例如,状态信息。状态信息通常包括在运行进程或程序时建立的资源,例如,句柄、线程、存储器对象和其他数据。当进程自然结束(例如,完成其功能并退出)或非自然结束(例如,崩溃)时,这样的资源可能会丢失(或过期)。在其他情况下,这样的资源可能需要传输到其他计算机,或在即将进行软件升级的情况下进行维护。如果状态信息丢失,并且对于替换使用这样的状态信息的进程或程序的先前实例化的服务器进程或程序不可用,则客户端可能需要执行复杂的操作,可能需要与其他客户端合作工作,以便恢复替换服务器进程的正确状态。
在一个实例中,在计算设备上运行的进程或程序能够以未来进程可以恢复和使用的形式存储或归档其状态信息,将允许在崩溃、计划升级或使用远程计算资源时无缝和动态地传输这样的状态信息。特别地,功能调用可由计算设备的操作系统(“OS”)提供,该操作系统允许先前实例化的服务器进程(或更一般地,执行服务器或与其他进程协作的功能的任何进程)在其直接可访问存储器外存储状态信息。这样的状态信息将包括新启动或替换服务器进程成功替换先前实例化的服务器进程所需的足够状态信息。这样的替换服务器进程将能够成功地为客户端请求提供服务,即使在发生一系列请求时也是如此。状态信息通常包括可用于在不中断的情况下恢复给定应用功能的信息。状态信息通常是特定于应用或程序的,通常包括操作系统资源(存储器缓冲区、句柄、通道、套接字)和应用状态(例如,验证信息、当前操作设置(例如音量设置、视频格式等))的混合。例如,在用户界面应用中,状态信息可包括界面的当前布局;对于长时间运行的计算,状态可包括最近计算的值和恢复计算的算法。换句话说,状态信息通常包括当应用或程序运行并响应请求时,允许递增地迁移的信息应用或程序的状态的信息。
更具体地说,状态信息(例如,一个或多个句柄/套接字或能力以及其他可选状态信息)可由先前实例化的或旧进程随时存储到OS。例如,旧进程存储的句柄/套接字或能力可包括虚拟存储器对象(“virtual memory object,VMO”)的句柄,其将允许存储附加的数据,一旦句柄被检索和还原,这些数据将是可读的。随后,响应于来自正确验证的(validated)后续进程的读取函数调用请求,OS可执行必要的内部操作,以原子方式将传输的或存储的状态信息的所有权传输给替换或新进程,并允许替换或新进程读取状态信息(例如,句柄和其他状态信息)。
关于将所有权传输到替换或新进程以维护安全,OS可以确定验证新进程或替换进程是否具有访问旧进程或原始进程状态信息的必要权限。例如,这可以通过使用一个或多个秘密令牌或密钥来实现。更具体地说,与令牌关联存储的状态信息只能由拥有令牌的新进程或替换进程读取。例如,服务器进程的衍生程序可以为原始进程或旧进程以及替换进程或新进程两者提供相同的密钥或令牌,这些密钥或令牌将在原始进程或旧进程不再运行之后启动。在基于能力的OS中,对状态信息访问权限的验证可以通过能力来实现。该能力将作为存储原始状态信息的函数调用的一部分提供给OS,传递给其他进程以用于保管,然后传递给新进程或替换进程允许它恢复原始状态信息。实际上,服务器管理器可以接收该能力,然后将其传递给服务器进程的新化身(incarnation)或实例。或者,应用更新进程可以从即将升级的应用接收该能力,然后在新应用重启后将该能力传递给它。
OS还可以提供旧进程或原始进程提供的状态信息的特征转换,以使它们对新进程或替换进程有效或可读。转换特征可以作为OS在旧进程和新进程之间所有权传输的一部分提供。这样的转换的执行可能类似于在并发运行的进程之间传递状态信息(诸如资源)时所执行的转换。
例如,状态信息的存储或归档可以使用诸如zx_snapshot_store()或者更一般的使用call_store()的系统调用来实现。例如,这样的调用将允许存储句柄数组和适量的数据。这样,存储的状态信息可能是数据量较小的。另一个系统调用,诸如zx_snapshot_recover()或者更一般的call_recover()可以实现以允许新进程或替换进程读取或获取旧进程或原始进程以前拥有的状态信息。
服务器进程可以在每个新客户端连接后“检查点(checkpoint)”其状态,并建立状态信息以用于服务一系列请求。如果服务器进程意外崩溃或终止,则新或替换服务器进程将能够请求句柄,因为这些句柄存储在检查点服务中,因此将被挂起而不是在旧进程死亡时删除。如果进程希望检查点其状态以防止意外崩溃,则每次读取可能会有多个写入或存储。因此,第三系统调用zx_snapshot_initialize()或者更一般地call_initialize,它将返回一对句柄。一个句柄将传递给旧进程或原始进程,并可经由zx_snapshot_store()用于将快照写入操作系统。另一个句柄将传递给“新”进程,并可用于一次传递给zx_snapshot_recover()。此外,对于服务器,新进程或替换进程还将接收存储其自身快照的附加句柄。
在另一种情况下,可实施该技术以便于在不中断或不必重启系统的情况下更新OS或最终用户软件的一部分或部分。例如,随着软件的发展,通常会添加新特征,并且有时必须修复软件中的错误、缺陷或故障。正在更新软件是整个系统(例如,OS)的组件,更新可能需要重启系统。在给定时间重启系统可能会给用户带来不便,这可能会导致更新延迟。这可能会使软件和系统面临附加的风险,例如,如果更新是安全修复程序,则会带来安全风险。在这种情况下,通过使用“快照”调用和/或上述其他功能,可以透明地更新软件,包括(例如)不中断正在进行的工作流。其他特征可以包括一个或多个通过进程间通信进行通信的OS组件。其他特征还可以包括用于传输向前兼容性的状态信息(例如,句柄和其他信息)到更新进程的转换协议。关于后者的特征,不是将状态信息显式写入存储器,例如诸如数据库,而是以向前兼容的格式将状态写入可传输到新进程的存储器缓冲区。因此,运行软件的持久性由程序隐式维护,不需要显式检查点或保存状态信息。向前兼容缓冲区的格式原则上可能与Protobuf(协议缓冲器)和Flatbuffers(平台缓冲器)类似,后者为远程过程调用提供向前兼容的数据序列化。
该技术适用于系统组件(例如,OS)和非系统组件(例如,终端用户应用),系统组件(例如,OS)的就地升级通常具有更高的价值。例如,系统组件维护表示与客户端的连接、与其他系统组件的连接以及组件本身使用的操作系统资源的句柄列表。这种技术可以克服更新系统组件或创建组件的新版本的挑战,该组件可以访问并知道如何解释旧实例或进程的句柄和内部状态的列表。
关于所公开技术的更新方面,该技术通常可以通过向OS通知更新、执行握手以发起与旧实例或进程正在执行的活动任务相关的状态和能力的传输以及完成向新/替换实例或进程的这种传输、恢复旧任务,如有必要,由新实例/替换实例发起新任务,并终止旧实例/替换实例来实现。
所公开的技术的一个或多个方面可以被实现来改进计算技术,包括服务器和客户端性能和/或OS,诸如基于能力的OS。例如,在从服务器崩溃中恢复时,一个或多个客户端可能在必要的时刻不处于从崩溃中恢复所必需的操作可以容易地执行的状态。此外,恢复服务器状态所需的客户端功能可能难以充分测试,尤其是在客户端可能需要交互并且服务器崩溃可能随机发生的情况下。例如,进程A首先给进程B资源,然后进程B将它传递给服务器,这种情况并不少见。进程A可能无法监测服务器的健康,也不知道服务器何时崩溃。因此,为了从服务器崩溃中恢复,进程B将不得不中断它正在做的任何事情,为进程A请求新资源,将该资源给服务器,然后进程B才能再次使用服务器的功能。该技术的一个或多个上述公开的特征可以避免或至少减轻让另一个进程中断它可能正在执行的任务的需要,使得中断的进程可以从服务器崩溃中恢复。此外,该技术的公开特征可以减轻没有完全恢复的服务器崩溃的影响,以避免系统中其他地方的功能降级和/或不当操作。此外,该技术减轻了因进程交换而导致的安全风险暴露,例如,处理OS的权限之外的信息。
所公开的技术的一个或多个方面可以例如降低可能需要在客户端执行的操作的复杂性,并且可以导致客户端的简化。例如,可能不需要在客户端恢复代码,因为OS会有状态和其他必要信息,以使新/替换进程在客户端接管功能,而不会对客户端应用的性能产生明显影响。
示例系统
图1是包括经由网络160连接的多个计算设备110、120、130、140和存储系统150的示例系统100的示意图。如图1所示,计算设备110、120、130中的每一个可以包括一个或多个处理器、存储器、数据和指令。例如,服务器计算设备110包括一个或多个处理器172、存储器174、指令176和数据178。
存储器174存储可由一个或多个处理器172访问的信息,包括可由处理器172执行或使用的指令176和数据178。存储器174可以是能够存储处理器可访问的信息的任何类型,包括计算设备可读介质,或存储可以借助电子设备读取的数据的其他介质,诸如硬盘驱动器、存储卡、ROM(只读存储器)、RAM(随机存取存储器)、DVD(数字视盘)或其他光盘,以及其他可写和只读存储器。系统和方法可以包括前述的不同组合,由此指令和数据的不同部分被存储在不同类型的介质上。
指令176可以是将由处理器直接(诸如机器代码)或间接(诸如脚本)执行的任何指令的集合。例如,指令可以作为计算设备代码存储在计算设备可读介质上。在这方面,术语“指令”和“程序”在本文可以互换使用。指令可以以目标代码格式存储,以便由处理器直接处理,或者以任何其他计算设备语言存储,包括按需解释或预先编译的脚本或独立源代码模块的集合。下面更详细地解释指令的进程、功能、方法和例程。
处理器172可以根据指令176检索、存储或修改数据178。例如,与存储器174相关联的数据178可以包括用于支持一个或多个客户端设备(例如,120、130或更多)的服务的数据。这样的数据可以包括支持托管基于网络的应用、文件共享服务、通信服务、游戏、共享视频或音频文件或任何其他基于网络的服务的数据。
一个或多个处理器172可以是任何常规处理器,诸如商业上可用的CPU(中央处理单元)。或者,一个或多个处理器可以是专用设备,诸如ASIC或其他基于硬件的处理器。尽管图1功能性地示出了处理器、存储器和计算设备110的其他元件在相同框内,但是本领域普通技术人员将理解,处理器、计算设备或存储器实际上可以包括多个处理器、计算设备或存储器,这些处理器、计算设备或存储器可以位于或不存储在相同物理外壳内。在一个示例中,一个或多个计算设备110可以包括一个或多个服务器计算设备,该服务器计算设备具有多个计算设备,例如,负载平衡服务器群,这些计算设备与网络的不同节点交换信息,以便接收、处理数据并向其他计算设备发送数据以及从其他计算设备接收数据。
网络160和中间节点可以包括各种配置和协议,包括短距离通信协议,诸如蓝牙TM、蓝牙TM LE、互联网、万维网、内部网、虚拟专用网、广域网、局域网、使用一个或多个公司专有的通信协议的专用网络、以太网、无线网络和HTTP,以及上述的各种组合。这样的通信可以由能够向和从其他计算设备发送数据的任何设备来促进,诸如调制解调器和无线接口。
如图1所示,每个客户端计算设备120、130、140可以是供用户使用的个人计算设备,并且具有通常与个人计算设备结合使用的所有组件,包括一个或多个处理器(例如,中央处理单元(CPU))、存储数据和指令的存储器(例如,RAM和内部硬盘驱动器)、诸如显示器124、134、144的显示器(例如,具有屏幕的监视器、触摸屏、投影仪、电视或可操作来显示信息的其他设备)、扬声器和用户输入设备126、136、146(例如,鼠标、键盘、触摸屏或麦克风)。客户端计算设备还可以包括用于记录视频流的相机、扬声器、网络接口设备以及用于将这些元件彼此连接的所有组件。
客户端计算设备140也可以是与网络设备(例如,一个或多个服务器计算设备110)相关联的工作站,并且用于管理和/或维护。在这点上,客户端计算设备140可以由支持、维护和管理与服务器计算设备110相关联的安全性的网络管理员来操作。关于维护,客户端计算设备140可以使网络管理员能够访问关于服务器的信息,诸如服务器上运行的软件的当前版本以及安装更新、补丁等。同样,尽管图1中只描述了单个客户服务工作站,但系统实际上可能包括几十或几百个这样的工作站和网络管理员。
尽管客户端计算设备120、130、140可以各自包括全尺寸个人计算设备,但是它们也可以包括能够通过诸如互联网的网络与服务器计算设备(诸如服务器计算设备110)无线交换数据的移动计算设备。仅作为示例,客户端计算设备120可以是移动电话或诸如支持无线的PDA、平板电脑、可穿戴计算设备或系统的设备,或者能够经由互联网或其他网络获取信息的上网本。在另一示例中,客户端计算设备130可以是可穿戴计算系统,诸如智能手表。例如,用户可以使用小键盘、按键、麦克风,使用带有相机的可视信号或触摸屏来输入信息。
如同存储器174一样,存储系统150可以是能够存储服务器计算设备110可访问的信息的任何类型的计算机化存储器,诸如硬盘驱动器、存储卡、ROM、RAM、DVD、CD-ROM、可写存储器和只读存储器。此外,存储系统150可以包括分布式存储系统,其中数据存储在物理上位于相同或不同地理位置的多个不同存储设备上。存储系统150可以如图所示经由网络160连接到计算设备,和/或可以直接连接到或结合到计算设备110、120、130等中的任何一个。存储系统150可以存储各种类型的信息,如下文更详细描述的。该信息可以被一个或多个服务器计算设备(诸如设备110)和/或一个或多个客户端计算设备(诸如客户端计算设备120)检索或以其他方式访问,以便执行本文描述的一些或所有特征。
图2是根据本公开各方面的系统200的示例功能图。系统200包括通过网络220与服务器计算设备240通信的一个或多个客户端计算设备2101至210m。计算设备201可以包括上面参考图1描述的客户端计算设备120、130。网络220可以包括关于网络160描述的一个或多个网络。服务器计算设备240在功能上被示出,但是可以包括结合图1描述的服务器计算设备110。虽然图2提供了具有单个服务器计算设备240的示例,但是系统200可以包括并行和/或协作操作的多个服务器计算设备,并且类似于服务器计算设备240。
服务器计算设备240包括OS功能242。OS功能242可以包括内核或微内核244(包括基于能力的OS的情况)。内核包括OS的内部核,并且通常对计算机系统的操作具有完全的控制,并且通常将软件应用连接到用于运行这样的应用的硬件。微内核通常实现经由内核提供的更小的功能的子集。OS242与一个或多个服务器进程(Server Process,SP)246通信。OS242还与一个或多个存储器位置248、250通信。OS 242使用存储器位置248来操作,并且将加载OS 242执行其功能所必需的程序或指令。例如,存储器位置248通常将加载内核/微内核代码。存储器位置250是被留出来存储根据该技术恢复服务器进程246所涉及的状态信息或数据的存储器。
在操作中,例如,服务器进程,例如,SPk,可以发出被OS 242标识为对存储状态信息的服务的请求的系统调用。这种调用通常被称为call_store。更具体地说,这种系统调用可以实现为zx_snapshot_store()。当服务器进程向OS 242发出这样的系统调用时,OS采取必要的步骤来接收和存储与服务器进程相关联的状态信息(例如,状态信息.k)。状态信息通常包括在运行进程或程序时建立的资源,例如,可以包括句柄、线程、存储器对象和其他数据。其他数据可以例如包括关于服务器进程支持的客户端应用的设置的信息,例如,在客户端设备上播放的视频的音量或视频质量设置。在接收到状态信息时,OS 242就将状态信息存储到进程恢复存储器250的位置。在这个示例中,SPk可被认为是旧或原始进程。它可以周期地,或者当它检测到状态信息(其通常被存储为系统调用的一部分)变化时,向OS242发出call_store或zx_snapshot_store。
例如,如果SPk终止、崩溃或需要更新,并且需要由服务器进程SPk’替换,SPk’可以向OS 242发出请求恢复的状态信息系统调用,该状态信息是SPk请求由OS 242存储的。由SPk’发出的系统调用一般被称为call_recovery,可以实现为zx_snapshot_recovery()。响应于接收到SPk’的call_recovery请求,OS 242验证SPk’是否被允许访问代表SPk存储的信息。如果验证成功,则状态信息.k由OS 242提供给SPk’。SPk’然后可以取代SPk,如果SPk尚未终止,可以终止。然后SPk’可能会继续在其位置,并执行必要的旧任务和任务,以使以前由SPk支持的进程正常运行。
示例方法
除了上述和附图中所示的操作之外,现在将描述各种操作。应当理解,以下操作不必以下面描述的精确顺序执行。相反,可以以不同的顺序或同时处理各种操作,并且还可以添加或省略操作。例如,图3是根据本公开各方面的示例流程图300。更具体地,图3示出了用于存储和检索状态信息的方法300的流程。
如图所示,在框310,OS 310从服务器进程接收存储与当前运行的原始/旧进程相关联的状态信息的请求。在OS处接收到的状态信息存储请求可以与上述系统调用call_store一致。然后,OS将采取必要的步骤如框320,使服务器进程提供与原始/旧进程相关联的状态信息,并将其存储起来,以备以后可能使用。随后,在框330,OS可以经由来自新或替换进程的call_recover系统调用接收恢复状态信息的请求。
在框340,OS随后调用它的关于新或替换进程的验证进程340。在框350,如果OS验证新或替换进程被授权接收状态信息,那么这样的状态信息被传输到新进程。如上所述,在这种情况下,旧或原始进程可以终止。在框360,如果OS无法验证或认证新进程被允许接收旧或原始进程的状态信息,则OS拒绝对状态信息的访问,并且不将其传递给新进程。在后一种情况下,旧或原始进程仍然在给定的功能级别上运行,它可能不会被终止。在旧或原始进程崩溃或需要迁移到远程计算机进行处理的情况下,服务进程和任何被服务的客户端应用可能需要用新状态信息重新启动。
由框340和350执行的进程包括作为将状态信息的所有权从旧或原始进程传输到新或替换进程的更一般的步骤或进程的一部分来执行的至少一些进程。这样,与在此讨论的旧/原始进程相关联的资源相关联的句柄,包括例如网络套接字、数据库连接、进程标识符、文件标识符或作业标识符,被传输到新/替换进程。作为所有权传输的一部分,地址可以例如被重新映射,或者套接字描述符可能需要被提供(和/或转换)给新/替换进程,以便它可以识别旧/原始进程与旧进程一起使用的套接字。
图4是根据本公开各方面的示例流程图400。更具体地,图4示出了验证进程340的示例。如图所示,在框410,验证进程开始于从新进程接收状态请求。此后,在框420,OS通知旧或原始进程的衍生程序,新或替换进程寻找旧/原始进程所拥有的状态信息。衍生程序也可以被认为是“启动器(launcher)”或“本体(parent)”它可以包括根据所公开的技术存储状态信息的代码。它也可以是单独的服务器、本体进程或内核本身。它也可以是先前工作的服务器和/或内核的某种组合,例如:1)存储恢复数据的实体,2)负责启动进程的实体,和/或3)负责将恢复数据传输到新进程的实体。例如,内核可以存储恢复数据,并且单独的“启动器服务器”可以负责重启进程并指示内核传输恢复数据。当衍生程序创建旧/原始进程时,它将有权访问令牌/密钥,旧进程也有权访问该令牌/密钥并将其提供给OS,从而建立旧/原始进程的所有权。在框440,衍生程序将密钥/令牌发送给由OS识别的新/替换进程。在框450,衍生程序向新/替换进程提供密钥/令牌。在框460,已经从新/替换进程接收到密钥/令牌,OS将该密钥/令牌与它先前从旧/原始进程接收到的密钥/令牌比较。如果匹配,则该方法进行到A(参见图3)。如果没有匹配,则进程进行到B(参见图3)。
图5是根据本公开各方面的示例流程图500。更具体地,图5示出了验证进程340的其他例子。这个进程可以在基于能力的OS中找到用途,这样的OS通常使用基于能力的安全技术。如图5所示,在该示例中,在框520,OS接收能力句柄作为与call_store相关联的提供的信息的一部分。此后,在框530,OS将能力句柄传递给保管进程。此后,在框540,保管进程将能力句柄传输到新/替换进程。此后,在框550,新进程将作为能力信息的一部分提供的安全信息传输给OS。在框560,OS此后将安全信息与它先前从旧/原始进程接收的密钥/令牌和/或其他安全信息进行比较。如果匹配,则该方法进行到A(参见图3)。如果没有匹配,则进程进行到B(参见图3)。
图6是根据本公开各方面的示例流程图600。特别地,图6示出了用于更新OS或最终用户软件的一部分的高级别流程图。如框610所示,通知OS与旧/原始活动系统组件相关联的更新。在框620,握手执行,并且握手包括旧/原始组件发起与它可能正在执行的活动任务相关的状态信息和能力的传输。在框630,新组件被启动。在框640,旧组件然后被终止。
现在转向图7,示出了根据本公开各方面的示例流程图700。图7更详细地示出了在图6的框610中执行的子操作。特别地,在框710,OS被通知当前运行或活动组件的可用更新。这可以被认为是与正在执行的服务相关联的旧组件或旧实例。一般来说,组件可以被认为是某些执行单元,而实例就是实际运行的那个执行单元。在框720,实例化新实例/组件。在框730,OS然后向旧组件/实例通知更新可用。在这个阶段,进程的通知阶段完成,方法继续到C,如图8所示。
图8是根据本公开各方面的示例流程图800。特别地,图8更详细地描述了图6的框620、630和640。在框810,响应于例如来自OS的更新可用的通知,旧组件/实例挂起工作。在框820,旧组件/实例可以捕获状态信息以作为call_store的一部分进行传输,例如,zx_snapshot_store(),或者串行化数据以传输到软件的新实例(通过信道、套接字、文件、共享存储器区域或其他通信手段)。在框830,旧组件然后将状态信息传输给OS,并通知OS更新可以继续。这样,此时程序的两个实例,例如,旧和新,继续完成握手协议。这样的协议可以(在新和旧程序实例运行时,通过程序逻辑)协同实现或(在一个或两个实例在传输发生时被挂起期间,通过系统干预)非协同实现。
在框840,新组件检测更新,并通知OS检测到更新。在框850,新组件然后请求先前从旧组件接收并由OS存储的状态信息。这种请求可以经由zx_snapshot_store()来实现。在框860,新组件然后加载所获取的状态信息并检查兼容性。如果在判定菱形框866处发现兼容性,则在框870,新组件通知OS更新准备好了。在框874,确定状态信息是否已经改变。如果有,处理进行到850,并如前所述进行。如果在判定菱形框874处,确定状态没有改变,则在框878,旧组件/实例被终止。在框880,新组件/实例随后接管,并且操作继续更新组件或软件。
返回到判定菱形框866,如果检测到不兼容,则在框882,新组件/实例向OS通知不兼容。此后,在框886,终止新组件/实例。此外,操作将继续使用旧组件。
如上所述,状态信息从旧组件/实例到新组件/实例的传输经由框850、860进行。
特定的传输机制是特定于实现的,但常见的策略是:正交的(orthogonal)、“安全状态”(safe-state)或临时的(ad-hoc)。传输可能涉及多次往返,诸如清空连接队列或增量传输大量数据。在所有情况下,诸如上面描述的关于zx_snapshot_store()、zx_snapshot_recover()和/或zx_snapshot_initial()的一种机制,对于完成句柄到新进程的最终传输可能是有用的。
正交策略将在没有显式同步操作的情况下保持程序状态。示例是使用共享内存缓冲区作为唯一的读/写运行时状态。系统可以暂停或终止正在更新组件,并且共享内存缓冲区将被传输到新版本。“安全状态”策略将使用传入的更新通知来允许程序在特别标明的“安全位置”停止其线程。对于开发人员来说,这个进程可以被简化,例如,程序的框架或语言运行时可以被修改以支持更新(类似于垃圾收集语言运行时如何具有特殊的“安全点”注释来确定垃圾收集器何时可以运行)。也可以使用其他临时持久性策略,包括但不限于在请求时显式序列化内部状态,并将其发送到新实例。
程序使用的数据格式可以是向前兼容的,但也可以在程序的基础上定义。可以发现以下特性是理想的:1.数据可以就地更新。这避免了状态传输期间昂贵的序列化/反序列化步骤。2.如果数据存储在适当的位置,则可以释放和重用数据,从而以垃圾收集为代价确保较小的内存占用。3.数据是自描述的,因此更新程序可以随着时间的推移而演变其状态。
Protobuf和Flatbuffers可能是自描述格式的有用选项,尽管它们不能就地更新。更通用的“内存堆(memory heap)”实现,其可以根据需要变得复杂(包括重新计数、垃圾收集等),可以支持就地更新和重用空间。当移交成功完成时,将进入旧任务的恢复和新任务的接受。新实例接管旧实例的职责。不管移交是否成功,都会进入关闭旧实例的状态。如果移交成功,旧实例可以被终止(通过协同退出或通过显式终止)。如果移交失败,旧实例将像以前一样继续执行其职责。新实例可能会被终止并在稍后重新启动,或者它可能会继续运行,直到旧实例最终终止,并且新实例可以接管其职责,而无需保留状态和连接。对握手协议的状态不变的显式检查允许实现允许旧组件继续服务请求,但是如果它的状态改变,握手必须重新启动。如果不需要保证向前的进度,实现可以避免在准备更新时挂起正在进行的工作。
本公开支持一种类型的协作持久性,该协作持久性可能被发现在解决现代系统中的实际可用性问题时有用。用户不希望在更新软件时被打断,即使这会给他们带来安全问题。根据这一点使用来解决问题会鼓励开发人员构建可独立更新小型服务。最终结果是一个持久的操作系统,在极少数情况下可能需要重新启动。
除非另有说明,否则前述替代示例并不相互排斥,而是可以以各种组合来实现,以获得独特的优点。由于可以在不脱离权利要求所限定的主题的情况下利用上述特征的这些和其他变化和组合,因此对实施例的前述描述应该作为说明,而不是作为对权利要求所限定的主题的限制。此外,这里描述的示例的提供,以及措辞为“例如”、“包括”等的从句,不应该被解释为将权利要求的主题限制到特定示例;相反,这些示例旨在仅说明许多可能实施例中的一个。此外,不同附图中的相同附图标记可以识别相同或相似的元件。

Claims (20)

1.一种用于在计算进程之间传输信息的计算系统,所述系统包括:
一个或多个计算设备;
一个或多个计算机可读存储介质;和
程序指令,存储在所述一个或多个计算机可读存储介质上,用于由所述一个或多个计算设备中的至少一个执行,程序指令包括:
在操作系统内注册与第一进程相关联的处理信息;
在第一进程终止之后,由第二进程从操作系统请求处理信息;和
由操作系统将处理信息的所有权传输到第二进程。
2.根据权利要求1所述的计算系统,其中,传输所有权包括操作系统向第一进程的衍生程序通知第二进程请求注册的处理信息。
3.根据权利要求2所述的计算系统,还包括由衍生程序向第二进程发送验证码。
4.根据权利要求3所述的计算系统,还包括验证第二进程被允许接收第一进程处理信息。
5.根据上述任一权利要求所述的计算系统,其中,传输所有权包括操作系统接收一个或多个能力句柄作为注册的处理信息的一部分。
6.根据权利要求5所述的计算系统,还包括操作系统将所述一个或多个能力句柄传输到保管进程,并由保管进程将能力句柄传输到第二进程。
7.根据权利要求6所述的计算系统,还包括第二进程将接收到的一个或多个能力句柄转发给操作系统,以及操作系统将由保管进程传输的能力句柄中包括的信息与由第二进程转发的能力句柄中包括的信息进行比较。
8.根据上述任一权利要求所述的计算系统,还包括响应于接收与第一进程相关联的更新的通知,操作系统向第一进程通知更新。
9.根据权利要求8所述的计算系统,还包括操作系统基于更新来导致第二进程的衍生。
10.根据权利要求8所述的计算系统,其中,响应于被通知更新,第一进程发起注册处理信息。
11.根据权利要求8所述的计算系统,其中,响应于检测更新,第二进程发起请求处理信息。
12.根据上述任一权利要求所述的计算系统,其中,处理信息包括状态信息。
13.一种用于在计算进程之间传输信息的方法,所述方法包括:
在操作系统内注册与第一进程相关联的处理信息;
在第一进程终止之后,由第二进程从操作系统请求处理信息;和
由操作系统将处理信息的所有权传输到第二进程。
14.根据权利要求13所述的方法,其中,传输所有权包括操作系统向第一进程的衍生程序通知第二进程请求注册的处理信息。
15.根据权利要求14所述的方法,还包括由衍生程序向第二进程发送验证码,并由操作系统将提供给新进程的验证码与与第一进程相关联的验证码进行比较。
16.根据权利要求13-15中任一权利要求所述的方法,其中,传输所有权包括操作系统接收一个或多个能力句柄作为注册的处理信息的一部分。
17.根据权利要求13-15中任一权利要求所述的方法,还包括响应于接收与第一进程相关联的更新的通知,操作系统向第一进程通知更新。
18.根据权利要求17所述的方法,还包括操作系统基于更新来导致第二进程的衍生。
19.根据权利要求17所述的方法,其中,响应于被通知更新,第一进程发起注册处理信息。
20.根据权利要求17所述的方法,其中,响应于检测更新,第二进程发起请求处理信息。
CN201980095201.5A 2019-04-04 2019-10-22 计算环境中进程状态和/或组件的传输 Pending CN113661482A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/375,189 2019-04-04
US16/375,189 US11048549B2 (en) 2019-04-04 2019-04-04 Transferral of process state and/or components in computing environments
PCT/US2019/057405 WO2020204997A1 (en) 2019-04-04 2019-10-22 Transferral of process state and/or components in computing environments

Publications (1)

Publication Number Publication Date
CN113661482A true CN113661482A (zh) 2021-11-16

Family

ID=68502057

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980095201.5A Pending CN113661482A (zh) 2019-04-04 2019-10-22 计算环境中进程状态和/或组件的传输

Country Status (4)

Country Link
US (3) US11048549B2 (zh)
EP (1) EP3931700A1 (zh)
CN (1) CN113661482A (zh)
WO (1) WO2020204997A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210124821A1 (en) * 2019-10-29 2021-04-29 Facebook Technologies, Llc Operating System Implementation of Language to Describe Permissions
JP7313321B2 (ja) * 2020-08-25 2023-07-24 株式会社日立製作所 ストレージシステムおよびデータ管理方法
CN114189357B (zh) * 2021-11-16 2023-07-14 苏州浪潮智能科技有限公司 注册消息处理方法、装置、计算机设备和存储介质

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3886756T2 (de) * 1988-10-28 1994-06-23 Ibm Betriebsmittelzugriff für Multiprozessorrechnersystem.
JPH0833799B2 (ja) * 1988-10-31 1996-03-29 富士通株式会社 データ入出力制御方式
US5961582A (en) * 1994-10-25 1999-10-05 Acorn Technologies, Inc. Distributed and portable execution environment
SE504943C2 (sv) * 1994-12-09 1997-06-02 Ericsson Telefon Ab L M Synkroniseringsförfarande som tillåter tillståndsöverföring
US5809248A (en) * 1995-07-05 1998-09-15 Sun Microsystems, Inc. Method and apparatus for front end navigator and network architecture for performing functions on distributed files in a computer network
US6314567B1 (en) * 1998-11-13 2001-11-06 Hewlett-Packard Company Apparatus and method for transferring state data when performing on-line replacement of a running program code and data
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US7013454B2 (en) * 1999-02-22 2006-03-14 Sun Microsystems, Inc. Thread suspension system and method using trapping instructions
US6513115B2 (en) * 1999-11-17 2003-01-28 International Business Machines Corporation System for reconfiguring an existing server process without ending and restarting
US7296073B1 (en) * 2000-09-13 2007-11-13 Network Appliance, Inc. Mechanism to survive server failures when using the CIFS protocol
GB0304628D0 (en) * 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
US20040003085A1 (en) * 2002-06-26 2004-01-01 Joseph Paul G. Active application socket management
TWI227441B (en) * 2002-10-11 2005-02-01 Ambit Microsystems Corp Firmware upgrade method for digital subscriber line device
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US20040230661A1 (en) * 2003-01-29 2004-11-18 Gus Rashid Rules based notification system
TWI227858B (en) * 2003-04-29 2005-02-11 Via Tech Inc Method for updating BIOS
US8020163B2 (en) * 2003-06-02 2011-09-13 Interuniversitair Microelektronica Centrum (Imec) Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof
US7225448B2 (en) * 2003-08-14 2007-05-29 Lenovo (Singapore) Pte. Ltd. System and method for hibernating application state data on removable module
US7698229B2 (en) * 2003-08-29 2010-04-13 International Business Machines Corporation Method and apparatus for trading digital items in a network data processing system
US20050050170A1 (en) * 2003-08-29 2005-03-03 International Business Machines Corporation Method and apparatus for securely conducting digital property trade
US8095826B1 (en) 2004-06-29 2012-01-10 Symantec Operating Corporation Method and apparatus for providing in-memory checkpoint services within a distributed transaction
US20060070055A1 (en) * 2004-09-24 2006-03-30 Hodder Leonard B Method of updating printer firmware and printing device employing the method
US8024605B2 (en) * 2005-01-24 2011-09-20 Oracle International Corporation To server processes
US7818736B2 (en) * 2005-09-14 2010-10-19 International Business Machines Corporation Dynamic update mechanisms in operating systems
US9497247B2 (en) * 2006-03-06 2016-11-15 Ca, Inc. Transferring session state information between two or more web-based applications of a server system
US7814495B1 (en) 2006-03-31 2010-10-12 V Mware, Inc. On-line replacement and changing of virtualization software
US9621372B2 (en) * 2006-04-29 2017-04-11 Oncircle, Inc. Title-enabled networking
EP2025095A2 (en) * 2006-06-08 2009-02-18 Hewlett-Packard Development Company, L.P. Device management in a network
US8484722B2 (en) * 2006-08-17 2013-07-09 Research In Motion Limited Enhanced user interface manager and method for managing non-contemporaneous user interface modules
US8127316B1 (en) 2006-11-30 2012-02-28 Quest Software, Inc. System and method for intercepting process creation events
GB2445168A (en) * 2006-12-29 2008-07-02 Symbian Software Ltd Loading resource administer program into main or higher memory depending on the type of usage requests being sent to the program.
EP2135141A4 (en) * 2007-02-26 2011-12-28 Groupe Gecko Alliance Inc METHOD, DEVICE AND SYSTEM FOR USE IN CONFIGURING A BATTERY UNIT CONTROLLER
CN101369241A (zh) 2007-09-21 2009-02-18 中国科学院计算技术研究所 一种机群容错系统、装置及方法
JP5502741B2 (ja) * 2008-10-01 2014-05-28 パナソニック株式会社 コピー機能付再生装置およびコピー機能付再生装置に用いるコピー方法
JP5081786B2 (ja) * 2008-10-20 2012-11-28 株式会社日立製作所 情報提供方法およびシステム
US8954977B2 (en) * 2008-12-09 2015-02-10 Intel Corporation Software-based thread remapping for power savings
US20100274858A1 (en) * 2009-04-27 2010-10-28 Nokia Corporation Mid-service sharing
WO2011007554A1 (ja) * 2009-07-16 2011-01-20 パナソニック株式会社 アクセス制御装置、アクセス制御方法、プログラム、記録媒体及び集積回路
US8832676B2 (en) * 2009-09-30 2014-09-09 Zynga Inc. Apparatuses, methods and systems for a social networking application updater
US9697042B2 (en) * 2010-07-30 2017-07-04 Sap Se Extensibility of business process and application logic
US8719559B2 (en) 2010-10-13 2014-05-06 International Business Machines Corporation Memory tagging and preservation during a hot upgrade
US8924965B2 (en) * 2011-01-07 2014-12-30 Red Hat Israel, Ltd. Memory state transfer of virtual machine-controlled peripherals during migrations of the virtual machine
CN102625297B (zh) * 2011-01-27 2016-01-13 腾讯科技(深圳)有限公司 用于移动终端的身份管理方法及装置
US8910177B2 (en) * 2011-04-14 2014-12-09 Advanced Micro Devices, Inc. Dynamic mapping of logical cores
US9104460B2 (en) * 2011-05-31 2015-08-11 Red Hat, Inc. Inter-cloud live migration of virtualization systems
US8909912B2 (en) * 2011-07-29 2014-12-09 Cisco Technology, Inc. Apparatus and method for configuring a target machine with captured operational state comprising a static machine profile and a dynamic machine state to continue operations of a source machine
US8839222B1 (en) * 2011-09-21 2014-09-16 Amazon Technologies, Inc. Selecting updates for deployment to a programmable execution service application
US9462466B2 (en) * 2011-09-29 2016-10-04 Israel L'Heureux Gateway router supporting session hand-off and content sharing among clients of a local area network
US9323563B2 (en) * 2012-02-28 2016-04-26 Red Hat Israel, Ltd. Determining virtual machine migration in view of a migration rule
US9430120B2 (en) * 2012-06-08 2016-08-30 Apple Inc. Identification of recently downloaded content
US9152410B2 (en) 2012-06-21 2015-10-06 Vaibhav KHANDELWAL Auto-update while running client interface with handshake
US9405526B2 (en) * 2012-08-07 2016-08-02 Microsoft Technology Licensing, Llc Initiating update operations
US9152458B1 (en) * 2012-08-30 2015-10-06 Google Inc. Mirrored stateful workers
US9606774B2 (en) * 2012-10-16 2017-03-28 Citrix Systems, Inc. Wrapping an application with field-programmable business logic
US9049265B1 (en) * 2012-12-26 2015-06-02 Google Inc. Serving remote access to storage resources
US9455879B1 (en) * 2013-03-04 2016-09-27 Amazon Technologies, Inc. Validating changes to attributes for computing resources
US8954611B2 (en) * 2013-03-21 2015-02-10 Nextbit Systems Inc. Mechanism for sharing states of applications and devices across different user profiles
US9311326B2 (en) * 2013-04-12 2016-04-12 Alterante, Inc. Virtual file system for automated data replication and review
US9591060B1 (en) * 2013-06-04 2017-03-07 Ca, Inc. Transferring applications between computer systems
US9361144B2 (en) * 2013-06-28 2016-06-07 Globalfoundries Inc. Predictive fetching and decoding for selected return instructions
KR102043641B1 (ko) * 2013-07-08 2019-11-13 삼성전자 주식회사 통신 기능 처리 방법 및 이를 지원하는 전자 장치
US20160149854A1 (en) * 2013-07-12 2016-05-26 Telefonaktiebolaget L M Ericsson (Publ) Framework for Application to Application Interworking in the M2M World
CN104424405B (zh) * 2013-09-09 2017-12-29 联想(北京)有限公司 一种信息处理方法和装置
US9400643B2 (en) * 2014-03-03 2016-07-26 Google Inc. Methods and systems for updating components on a computing device
US9292367B2 (en) * 2014-04-08 2016-03-22 Microsoft Corporation Efficient migration of client-side web state
US9652328B2 (en) 2014-05-12 2017-05-16 International Business Machines Corporation Restoring an application from a system dump file
US9847990B1 (en) * 2014-07-18 2017-12-19 Google Inc. Determining, by a remote system, applications provided on a device based on association with a common identifier
US9495142B2 (en) * 2014-11-07 2016-11-15 Amazon Technologies, Inc. Dynamic reconstruction of application state upon application re-launch
WO2017077611A1 (ja) * 2015-11-05 2017-05-11 三菱電機株式会社 セキュリティ装置、及びセキュリティ方法
US11113303B2 (en) * 2016-05-09 2021-09-07 Sap Se Ownership transfer of database artifacts between files
US10083098B1 (en) * 2016-06-07 2018-09-25 Sprint Communications Company L.P. Network function virtualization (NFV) virtual network function (VNF) crash recovery
US10915553B2 (en) * 2017-01-11 2021-02-09 Microsoft Technology Licensing, Llc Multi-application state navigation
US10235158B2 (en) * 2017-03-21 2019-03-19 Microsoft Technology Licensing, Llc Optimizing feature deployment based on usage pattern
US10261780B2 (en) * 2017-05-01 2019-04-16 Google Llc Transparent upgrade of a system service or application
US9960837B1 (en) * 2017-07-19 2018-05-01 Vector Launch Inc. Pseudo-geosynchronous configurations in satellite platforms
US10637845B2 (en) * 2017-07-21 2020-04-28 International Business Machines Corporation Privacy-aware ID gateway
US10552141B1 (en) * 2018-02-26 2020-02-04 Amazon Technologies, Inc. Upgrading an execution environment for event-driven functions
JP2019191931A (ja) * 2018-04-25 2019-10-31 富士通株式会社 情報処理システム、入力値検証支援プログラム、および入力値検証プログラム
US11971874B2 (en) * 2019-01-31 2024-04-30 Salesforce, Inc. Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (DLT)

Also Published As

Publication number Publication date
WO2020204997A1 (en) 2020-10-08
US20230359486A1 (en) 2023-11-09
US11755364B2 (en) 2023-09-12
US11048549B2 (en) 2021-06-29
US20200319918A1 (en) 2020-10-08
EP3931700A1 (en) 2022-01-05
US20210286645A1 (en) 2021-09-16

Similar Documents

Publication Publication Date Title
KR102628362B1 (ko) 컨테이너화된 환경에서 클러스터의 라이브 마이그레이션
US10701177B2 (en) Automatic data request recovery after session failure
US11755364B2 (en) Transferral of process state and/or components in computing environments
EP2877942B1 (en) Automatic transaction retry after session failure
JP5945031B2 (ja) 複製されたデータインスタンスのプロビジョニングおよび管理
US8706834B2 (en) Methods and apparatus for remotely updating executing processes
US9473598B2 (en) Network connection failover during application service interruption
US20070220323A1 (en) System and method for highly available data processing in cluster system
US8504873B1 (en) Method and apparatus for providing in-memory checkpoint services within a distributed transaction
US11275599B1 (en) Hypervisor remote offload for VM data migration between storage devices
US20220060381A1 (en) Method and system for virtual server dormancy
US10698719B2 (en) System and method for virtual machine restoration
US20190332496A1 (en) System and method for backup in a virtualized environment
US20080201694A1 (en) Code recovery system and method
US20050044193A1 (en) Method, system, and program for dual agent processes and dual active server processes
US10579431B2 (en) Systems and methods for distributed management of computing resources
US11507512B2 (en) Fault tolerant cluster data handling
US20230093402A1 (en) Automatic population of boot volumes via provided urls
US11593030B2 (en) Cross-stream transactions in a streaming data storage system
CN113874838A (zh) 虚拟执行系统中的连接性迁移
CN113138722A (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