CN103092777A - 存储和恢复应用运行时状态 - Google Patents

存储和恢复应用运行时状态 Download PDF

Info

Publication number
CN103092777A
CN103092777A CN2011104482194A CN201110448219A CN103092777A CN 103092777 A CN103092777 A CN 103092777A CN 2011104482194 A CN2011104482194 A CN 2011104482194A CN 201110448219 A CN201110448219 A CN 201110448219A CN 103092777 A CN103092777 A CN 103092777A
Authority
CN
China
Prior art keywords
run time
application
time behaviour
computing machine
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011104482194A
Other languages
English (en)
Other versions
CN103092777B (zh
Inventor
C·凯凯
A·科利
S·E·斯特恩斯
K·H·雷厄森
C·W·小梅福德
A·M·安德森
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN103092777A publication Critical patent/CN103092777A/zh
Application granted granted Critical
Publication of CN103092777B publication Critical patent/CN103092777B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/461Saving or restoring of program or task context
    • 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
    • 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
    • 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
    • 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
    • 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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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]
    • 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
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/5083Techniques for rebalancing the load in a distributed system
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及存储和恢复应用运行时状态。挂起应用的执行并且收集并保持该应用的运行时状态。然后可对该应用在其上执行的计算机执行维护操作。还可将该运行时状态移至另一计算机。为了恢复该应用的执行,还原该应用的运行时状态。一旦还原了该应用的运行时状态之后,可从该执行被挂起的点处重新启动该应用的执行。还可利用代理层来对从应用接收的对在该应用的运行时状态被保持后被修改的资源的请求进行翻译。

Description

存储和恢复应用运行时状态
技术领域
本发明涉及存储和恢复应用运行时状态。
背景技术
出于许多原因,服务器场中的服务器机器的维护可能非常困难。例如,当信息技术(“IT”)管理员需要对服务器机器执行维护操作时,通常必须在服务器计算机上运行的操作系统能够关闭之前关闭所有用户会话。为了正确地关闭用户会话,IT管理员必须关闭在这些会话中执行的所有用户应用。如果用户不能够以有序的方式关闭他们的应用,则未保存的数据可能丢失。以这种方式丢失数据对用户和IT管理员来说都是极其令人沮丧的。
此处所做出的本公开正是关于这些和其他考虑事项而提出的。
发明内容
此处描述了用于存储和恢复应用的运行时状态的技术。通过此处所公开的概念和技术的实现,正在执行的应用的运行时状态可独立于该应用在其上执行的操作系统的运行时状态而被捕捉和保存。然后可对该应用在其上执行的计算机执行维护操作。该应用的运行时状态还可被移动到另一计算机以对该计算机的处理负载进行负载平衡。一旦完成了维护操作之后,可还原该应用的运行时状态并可将该应用的执行恢复到该应用在该运行时状态被捕捉的时刻所处的状态。以此方式,可执行维护操作而不会丢失未保存的应用数据。
根据此处所呈现的一个方面,接收存储在计算机上执行的应用的运行时状态的请求。例如,IT管理员可做出这样的请求。响应于接收到这样的请求,挂起该应用的执行,并且独立于该应用正在其上执行的操作系统而收集该应用的运行时状态。该运行时状态可包括物理和虚拟存储器的内容、中央处理单元(“CPU”)寄存器、以及指令指针。该运行时状态还可包括系统资源、用户界面(“UI”)资源、以及网络连接的状态。该运行时状态还可包括当收集该运行时状态时正在被该应用使用的任何文件资源。一旦收集了该运行时状态之后,保持该运行时状态,诸如通过将该运行时状态保存到大容量存储设备中。
在已保持了该运行时状态之后,可对该应用在其上执行的计算机执行维护操作。例如,可对该计算机的硬件或该应用在其上执行的操作系统执行维护操作。此外,可将该应用的状态移至另一计算机。这可能是被期望的,例如,以对该应用在其上执行的计算机的处理负载进行负载平衡。
一旦完成了该维护操作之后,可接收重新启动该应用的执行的执行的请求(诸如从IT管理员)。为了重新启动该应用的执行,还原该应用的运行时状态。例如,可还原存储器的内容、寄存器、以及指令指针。还可还原系统资源、UI资源和网络连接的状态。如果该运行时状态中包括文件资源,则还可还原该文件资源。一旦还原了该应用的运行时状态之后,可从该执行被挂起的点处重新启动该应用的执行。以此方式,该应用可返回到在该应用的执行被挂起的时刻该应用所处的状态。
根据另一方面,提供用于翻译从该应用接收的对于在保持该应用的运行时状态之后已修改的资源的请求的代理层。例如,如果应用恰在捕捉该应用状态之前利用一网络端口号,该网络端口号在恢复该应用的执行时不可用,则该代理层将在对该应用已知的网络端口号和新的网络端口号之间进行翻译。其他类型的翻译还可对改变了名字、号、位置、或其他标识信息的其他类型的资源执行。
应当理解的是,此处公开的实施例可与虚拟化应用、在硬件虚拟化环境中执行的非虚拟化应用、在非虚拟化环境中执行的非虚拟化应用、以及其它类型的应用结合使用。应当理解,本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用来限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任一部分中提及的任何或所有缺点的实现。
附图说明
图1是示出用于此处公开的各实施例的一个说明性操作环境的计算机软件体系结构图;
图2是示出根据此处公开的一个实施例的用于存储和恢复应用的运行时状态的此处公开的若干软件组件的方面的计算机软件体系结构图;
图3是示出在此处公开的一个实施例中利用的已存储的应用运行时状态的内容的数据结构图;
图4是示出根据此处呈现的一个实施例的用于捕捉和保持应用的运行时状态的此处公开的一个说明性过程的方面的流程图;
图5是示出根据此处呈现的一个实施例的用于还原所捕捉和保持的应用的运行时状态的此处公开的一个说明性过程的方面的流程图;
图6是示出在此处公开的一个实施例中用于翻译应用请求的代理层的方面的计算机软件体系结构图;
图7是示出在一个实施例中利用此处公开的用于存储和恢复应用的运行时状态的技术来在两个计算机系统之间迁移正在执行的应用的说明性例程的流程图;
图8是示出在一个实施例中利用此处公开的用于存储和恢复应用的运行时状态的技术来对计算机执行维护操作的说明性例程的流程图;以及
图9是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。
具体实施方式
下述具体实施方式涉及用于存储和恢复应用运行时状态的技术。如上面简要讨论的,正在执行的应用的运行时状态可独立于该应用在其上执行的操作系统的运行时状态而被捕捉和保存。然后可对该应用在其上执行的操作系统或者计算机执行维护操作。该应用的运行时状态还可被移动到另一计算机以对该计算机的处理负载进行负载平衡。然后可还原该应用的运行时状态。一旦还原了该应用的运行时状态之后,可从该执行被挂起的点处重新启动该应用的执行。还可利用代理层来对从应用接收的对在该应用的运行时状态被保持后被修改的资源的请求进行翻译。关于这些特征和其他特征的更多细节将在以下参考图1-9来提供。
尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一般上下文中呈现了此处描述的主题,但是本领域技术人员将认识到,其他实现可以结合其他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施此处描述的主题,这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。
在下面的详细描述中,将参考构成本发明的一部分的附图,并且在附图中作为说明示出了各具体实施例或示例。现在参考附图(贯穿若干附图,相同的标号表示相同的元素),将描述用于存储和恢复应用的运行时状态的计算系统和方法的方面。
图1是示出用于此处公开的各个实施例的一个说明性操作环境100的软件和网络体系结构图。图1中示出的说明性操作系统100包括被配置成提供用于执行虚拟化应用106的环境的计算机108,该虚拟化应用106在此处可被称为“应用106”。为了提供此功能,计算机108包括操作系统104和应用虚拟化层102。计算机108可以是标准台式或膝上型计算机、服务器计算机、平板计算机、智能手机或能执行此处呈现的用于存储和恢复应用运行时的操作的任何其他类型的计算设备。
应用虚拟化层102是被配置为提供应用虚拟化环境的软件组件。有关于此,应用虚拟化层102被配置为执行应用106。应用虚拟化层102提供与操作系统104分开地封装应用106的执行的功能。应用虚拟化层102还可提供与计算机108的其他应用程序和系统资源分开地封装应用106的执行的功能。例如,应用虚拟化层102可将操作系统104或计算机108的资源虚拟化。当应用106尝试访问实际资源时,应用虚拟化层102将虚拟化的资源呈现给应用106以供使用。以此方式,可以用不影响由操作系统104或计算机108所暴露的实际资源的方式来执行应用106。
根据其他方面,应用虚拟化层102提供用于按照需要从服务器计算机(未示出)载入应用106的部分的功能。具体而言,应用虚拟化层102可与服务器组件结合起来操作以将应用106的所需部分从服务器流传输到计算机108。以此方式,可以按照需要在计算机108处访问应用106。此外,因为可仅将应用106的所需部分从服务器流传输至计算机108,所以可提供对应用106的访问而不将整个应用106从服务器流传输至计算机108。有关应用程序虚拟化层110的功能的更多细节可在2007年5月29日提交的标题为“Systems and Methodsfor Delivering Content over a Computer Network(用于通过计算机网络递送内容的系统与方法)”的美国专利No.7,225,264、在2007年4月3日提交的标题为“Method and System for Serving Software Applications to Client Computers(用于向客户端计算机供应软件应用的方法与系统)”的美国专利No.7,200,632、在2008年11月11日提交的、标题为“Operating System Abstraction andProtection Layer(操作系统抽象与保护层)”的美国专利No.7,451,451、以及在2010年9月14日提交的标题为“Serving Software Applications from Serversfor Client Computers(从服务器为客户端计算机供应软件应用)”的美国专利No.7,797,372中找到,通过引用将上述专利中的每一个明确结合于此。
应当理解,尽管此处公开的发明主要是以存储和恢复虚拟化应用106的运行时状态为上下文来呈现的,然而此处公开的实施例可以与其他类型的应用一起使用。例如,此处公开的实施例可用于存储和恢复在硬件虚拟化环境中执行的非虚拟化应用。此处公开的实施例还可结合在非虚拟化环境中执行的应用来利用。此处公开的实施例还可结合在本领域的技术人员公知的其他类型的环境中执行的应用来利用。有关此处公开的用于存储和恢复应用106的运行时状态的更多信息将在下面参考图2-9来提供。
图2是示出根据此处公开的一个实施例的用于存储和恢复应用106的运行时状态的此处公开的若干软件组件的方面的计算机软件体系结构图。具体而言,图2示出了若干软件组件,这些软件组件在各实施例中可被配置成捕捉、保持及还原应用106的运行时状态202。运行时状态202是定义应用106的当前执行上下文的数据。如同下面将要更加详细地讨论的,运行时状态202可被捕捉、保持、并在稍后的某个时间还原。以此方式,可对计算机108和操作系统104执行维护操作而不需要关闭应用106。
如同图2中还示出的,可利用多个不同的软件组件来捕捉、保持和还原运行时状态202。例如,在一种实现中,应用虚拟化层102可被配置为执行此处公开的用于捕捉、保持和还原运行时状态202的操作。在另一实施例中,操作系统104被配置成生成并还原运行时状态202。在又一实施例中,应用204可被配置成为应用106生成运行时状态202。应当理解,在各种实施例中,内核驱动器或其他类型的低层软件代码可由应用204或应用虚拟化102安装到操作系统104上以启用此处所述的功能的各方面。其他类型的实现对于本领域技术人员可显而易见。
如同下面将要更加详细地描述的,为虚拟化应用106生成运行时状态202可响应于(诸如来自IT管理员的)请求而执行。响应于这样的请求,应用106的执行被挂起。此外,正在被应用106使用的资源被枚举、这些资源的当前状态被捕捉、而定义该状态的数据被保持为运行时状态202。如同下面将要更加详细地描述的,运行时状态202可在稍后的某个时间从存储取回以重新创建应用106的执行上下文。此外,运行时状态202可被移动到除了计算机108以外的计算机并被重新启动。关于此功能的更多细节将在以下提供。
为了将应用106还原到它之前的状态,所存储的运行时状态202被用于重新创建应用106的各个进程并还原应用106所利用的存储器的内容。还可以重新创建其他系统、文件和UI资源。此外,根据一种实现,可利用代理层来将来自应用106的请求翻译成在已创建运行时状态202之后被修改的资源。一旦还原了运行时状态292之后,应用106的执行可被重新启动。关于这些操作的附加细节在以下参考图3-8提供。
应当理解,尽管图2示出为单个应用106创建运行时状态202,然而此处公开的实施例可用于同时为多个应用106创建运行时状态202。例如,可利用此处呈现的思想来生成运行时状态202以同时捕捉多个应用的执行上下文。然后可利用所存储的运行时状态202来同时恢复多个应用的执行。
如同上面还提到的,应当理解,尽管此处公开的实施例主要是以为虚拟化应用106生成运行时状态202为上下文来描述的,然而此处呈现的实施例可与其他类型的应用一起使用。例如,此处公开的各实施例可与在硬件虚拟化环境中执行的非虚拟化应用、在非虚拟化环境中执行的非虚拟化应用、以及其它类型的应用一起使用。还应当理解,运行时状态202是独立于操作系统104的执行状态而生成的。以此方式,运行时状态202可被迁移到另一计算机(其有可能正在执行不同版本的操作系统104),并被还原到其原始状态。
图3是示出在此处公开的一个实施例中利用的所存储的应用运行时状态202(其在此处可被称为“运行时状态202”)的内容的数据结构图。如图3中所示,应用运行时状态202包括存储器内容302。存储器内容302是应用106所使用的任何虚拟的、共享的、物理的或其他的存储器的内容。应用运行时状态202还包括寄存器上下文304。寄存器上下文304是应用106在其上执行的计算机108的CPU中的任何寄存器的内容。寄存器上下文304还可包括用于应用106的每个线程或进程的指令指针306。
在一种实现中,应用运行时状态202还包括系统资源状态308。系统资源状态308是定义在应用106的执行被挂起的时刻应用106正在使用的一组系统资源的状态的数据。系统资源状态308可包括定义被应用106开放给注册表项的句柄、开放给内核对象的句柄、本地文件系统或网络共享上的文件、应用106正在使用的TCP端口、以及被应用106开放给远程资源的连接的状态的数据。系统资源状态308还可包括定义在应用106被挂起的时刻应用106正在使用的其他类型的系统资源的数据。
根据一种实现,应用运行时状态202还包括UI资源状态310。UI资源状态310包括定义在应用106被挂起时应用106正在使用的UI元素的数据。例如,UI资源状态310可定义UI窗口的位置、各UI组件间的关系、窗口句柄、以及定义其他类型的UI资源的状态的数据。
根据一种实现,在应用106的执行期间记录应用106所执行的UI创建操作。定义所记录的UI创建操作的数据可被存储在应用运行时状态202中并在应用106被重新启动的时刻利用以重新创建在该应用被挂起的时刻应用106所呈现的UI。应当理解,其他类型的机制也可用于生成可被用于重新创建在应用106被重新启动的时刻应用106所呈现的UI元素的资源状态310。
应用运行时状态202还可包括网络连接状态312。网络连接状态312是定义在应用106被挂起的时刻应用106所利用的任何网络连接的状态的数据。网络连接状态312可定义例如到本地网络资源的句柄、网络端口、以及其他网络相关数据。
在一种实现中,在应用106的执行被挂起的时刻应用106正在使用的所有文件资源在应用106被还原时在本地文件系统上的相同名字下可用。然而,在其他实现中,应用106正在使用的文件资源314被捆绑为对应用运行时状态202的补充。文件资源314还可包括指向各种文件资源314的查找指针的值。如同下面将要更加详细地描述的,所捆绑的文件资源314可在运行时状态202被重新创建的时刻利用以向应用106呈现文件资源314。
应当理解,图3中示出的应用运行时状态202的内容仅仅是说明性的。根据各种实现,其他数据也可被包括在应用运行时状态202中。然而,一般而言,应当理解,应用运行时状态202包括重新创建应用106的执行上下文所必需的数据以使得应用106可在稍后的某个时间点被恢复。关于应用运行时状态202的创建和使用的更多细节将在下文中参考图4-5来提供。
图4是示出根据此处呈现的一个实施例的用于捕捉和保持应用106的运行时状态202的此处公开的一个说明性例程400的各个方面的流程图。应该了解,这里参考图4和其他图形所描述的逻辑操作是(1)作为计算机实现的动作或在计算系统上运行的程序模块的序列和/或(2)计算系统内的互连机器逻辑电路或电路模块来实现的。取决于计算系统的性能及其他要求,可以选择不同的实现。因此,此处所描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑,及其任何组合来实现。还应该明白,可以执行比附图中示出并在此处描述的操作更多或更少的操作。这些操作还可以按与此处所描述的不同的次序来执行。
例程400在操作402处开始,在操作402应用106的执行被挂起。具体而言,该应用进程中的每个线程的执行都被挂起。一旦挂起了应用106之后,例程400继续到操作404,在操作404存储器内容302被捕捉。如同上面讨论的,存储器内容302包括应用106正在使用的所有物理、虚拟和其他类型的存储器的内容。存储器内容302被存储在应用运行时状态202中。
从操作404,例程400继续到操作406,在操作406寄存器上下文304被捕捉并存储在应用运行时状态202中。如同上面讨论的,寄存器上下文304是应用106在其上执行的计算机108的一个或多个CPU核的寄存器的内容。一旦捕捉了寄存器上下文304并将其存储在应用运行时状态202中之后,例程400继续到操作408。
在操作408,指令指针306被捕捉并存储在应用运行时状态202中。然后例程400继续到操作410,在操作410系统资源状态308被捕捉并存储在应用运行时状态202中。如同上面讨论的,系统资源状态308包括标识应用106正在使用的资源的数据。例如,系统资源状态308可包括被应用106开放给注册表项的句柄、开放给内核对象的句柄、本地文件系统或网络共享上的文件、应用106正在使用的TCP端口、被应用106开放给远程资源的连接、和/或标识其他类型的系统资源的状态的数据。
从操作410,例程400继续到操作412,在操作412 UI资源状态310被捕捉并存储。如同上面讨论的,UI资源状态310是定义应用106所显示的任何UI元素的状态的数据。UI资源状态310可包括到窗口或其他UI对象的句柄、用于在应用106被重新启动的时刻重新创建UI资源的日志数据、以及其他类型的信息。从操作412,例程400继续到操作414。
在操作414,网络连接状态3 12被捕捉并存储在运行时状态202中。如同上面讨论的,网络连接状态312定义在该应用被挂起时应用106所打开的任何网络连接的状态。然后例程400继续到操作416,在操作416应用106正在使用的文件资源314也可被识别并存储在运行时状态202中。如同上面讨论的,在一些实现中,文件资源314不被包括在运行时状态202内。然而,在其他实现中,任何文件资源314及其相关联的查找指针被存储在运行时状态202中。如同下面将要更加详细地描述的,文件资源3 14可在重新启动应用106的执行之前被重新创建。
一旦捕捉了存储器内容302、寄存器上下文304、指令指针306、系统资源状态308、UI资源状态310、网络连接状态312、以及可能的文件资源314之后,例程400继续到操作418。在操作418,运行时状态202被封装并保持。例如,运行时状态202可被保持到计算机108可访问的大容量存储设备。替代地,运行时状态可被保持到计算机108可访问的网络位置。从操作418,例程400继续至操作420,在那里结束。
图5是示出根据此处呈现的一个实施例的用于还原之前捕捉和保持的应用106的运行时状态202的此处公开的一个说明性例程500的各个方面的流程图。例程500在操作502处开始,在操作502应用106的线程被重新创建。一旦重新创建了该线程之后,例程500继续到操作504,在操作504利用存储在运行时状态202中的存储器内容302来还原存储器的内容。一旦还原了存储器的内容之后,例程500继续到操作506,在操作506利用存储在运行时状态202中的寄存器上下文304来还原CPU寄存器的内容。在操作508还还原指令指针。
从操作508,例程500继续到操作510,在操作510利用系统还原状态308来还原系统资源的状态。一些系统资源可以通过句柄表间接访问。在那些情况中,到该系统资源的所有句柄都被打开,并且间接的层被插入到应用106和句柄表之间以使得在应用106恢复之后它的经索引的访问被重定向到开放的句柄之后的实际资源。关于此过程的更多细节将在以下参考图6来提供。
从操作510,例程500继续到操作512,在操作512,还原在应用106挂起的时刻该应用106所显示的任何UI元素的状态。如同上面简要讨论的,这可以包括重放UI创建命令的日志以还原该UI。因为UI元素通常由句柄引用,所以在应用106和UI资源之间可能还需要间接的层。关于此过程的细节将在以下参考图6来提供。从操作512,例程500继续到操作514。
在操作514,利用存储在运行时状态202中的网络连接状态312来还原在应用106挂起的时刻应用106所打开的任何网络连接的状态。如下面将参考图6更加详细地描述的,还可需要间接的层来向应用106提供对之前打开的端口号的访问。一旦在操作514还原网络连接状态之后,例程500继续到操作516。
在操作516还原存储在运行时状态202中的任何文件资源。应用106所打开的文件流上的查找点也被还原以使得应用106能够恢复从在应用106被挂起的时刻为当前的偏移读取。在向文件资源开放句柄并恢复应用106之前,可将存储在运行时状态202处的文件资源314在其命名的位置处还原。
从操作516,例程500继续到操作518,在操作518,执行代理层以在应用106和某些类型的所还原的资源之间提供间接的层。关于使用代理层来翻译应用请求的更多的细节将在下面参考图6来提供。一旦实例化代理层之后,例程500继续到操作520,在操作520,在应用106挂起的时刻应用106正在执行的点处,重新启动应用106的执行。从操作520,例程500继续至操作522,在那里结束。
图6是示出在此处公开的一个实施例中用于翻译应用请求604的代理层602的方面的计算机软件体系结构图。如同上面简要讨论的,某些系统资源可能在运行时状态202被创建以后被修改。结果,当恢复应用106时,这些资源可能是不可用的、被重命名、被重新编号、或者以其他方式被不同地标识。为了在应用106的执行被恢复以后向应用106提供对这些资源的访问,提供代理层602。代理层602在应用106和某些类型的资源之间提供间接的层。
如图6中所示,代理层602接收对某些类型的资源(诸如系统资源606、网络连接608、文件资源610、以及UI资源612)的应用请求604。代理层602翻译应用请求604以使得当应用106被恢复时应用请求604与系统资源所使用的位置、名称和其他类型的标识符相兼容。例如,一文件在应用106被挂起的时刻可能在一个位置,但是当应用106被恢复时可能位于另一个位置。代理层602将对在其原始位置处的文件的应用请求604翻译到新的位置。作为另一示例,UI窗口在应用106被挂起的时刻可能由一个句柄标识,但是在应用106被恢复的时刻可能由另一个句柄标识。代理层602将截取对该窗口的应用请求604并翻译该句柄以使得应用请求604将成功。类似地,网络端口可能在应用106被挂起时正在被应用106使用,但是可能在应用106被恢复时不可用。代理层602将把原始端口号翻译成在应用106恢复执行时刻用的新端口。
应当理解,尽管已在图6中将代理层602示出为翻译对系统资源606、网络连接608、文件资源610和UI资源612的请求,然而代理层602还可以翻译对其他类型的资源的请求。还应当理解,可利用其他类型的机制来确保在恢复应用106的执行以后对已修改的资源的应用请求能够成功。
图7是示出在一个实施例中利用此处公开的用于存储和恢复应用106的运行时状态202的技术来在两个计算机系统之间迁移正在执行的应用106的说明性例程700的流程图。例程700在操作702处开始,在操作702用上面参考图4描述的方式捕捉并保持应用运行时状态202。
一旦保持该应用运行时状态之后,例程700继续到操作704。在操作704,运行时状态202被移动到另一计算机。出于各种原因,可能期望这样。例如,在计算机之间迁移应用运行时状态202可允许对各计算机的处理负载进行负载平衡而不需要应用106被关闭并在目的地计算机上重新启动。应用运行时状态202的迁移也可能出于其他原因而被期望。
一旦将运行时状态202迁移到目的地计算机之后,例程700继续到操作706,在操作706用上面参考图5描述的方式在目的地计算机处还原应用运行时状态202。从操作706,例程700继续至操作708,在那里结束。
图8是示出在一个实施例中利用此处公开的用于存储和恢复应用106的运行时状态202的技术来对计算机108执行维护操作的说明性例程800的流程图。例程800在操作802处开始,在操作802用上面参考图4描述的方式捕捉并保持运行时状态202。从操作802,例程800继续到操作804,在操作804对计算机108执行系统维护。例如,可对操作系统104或计算机108的硬件执行维护或升级。一旦执行了维护操作之后,例程800继续到操作806,在操作806用上面参考图5描述的方式还原应用运行时状态202。从操作806,例程800继续至操作808,在那里结束。应当理解,可能出于不同于上面参考图7-8描述的原因挂起和还原正在执行的应用的状态。
图9是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。图9示出的计算机体系结构示出了传统台式计算机、膝上计算机,或服务器计算机,并可被用来执行此处描述的各种软件组件。
图9所示的计算机体系结构包括中央处理单元902(“CPU”)、包括随机存取存储器914(“RAM”)和只读存储器(“ROM”)916的系统存储器908、以及将存储器耦合至CPU 902的系统总线904。包含诸如在启动期间有助于在计算机900内的元件之间传输信息的基本例程的基本输入/输出系统(“BIOS”)被存储在ROM 916中。计算机900还包括用于存储操作系统918、应用程序和其他程序模块的大容量存储设备910,这将在以下更为详细地描述。
大容量存储设备910通过连接至总线904的大容量存储控制器(未示出)连接到CPU 902。大容量存储设备910及其相关联的计算机可读存储介质为计算机900提供非易失性的存储。虽然对此处包含的计算机可读介质的描述引用了诸如硬盘或CD-ROM驱动器等大容量存储设备,但本领域的技术人员应当理解,计算机可读介质可以是可由计算机900访问的任何可用计算机存储介质。
作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读存储介质包括,但并不限于,RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术,CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光或其他光学存储,磁带盒、磁带、磁盘存储器或其他磁存储设备,或可以用来存储所需信息并可由计算机900访问的任何其他非易失性介质。
可以理解,此处的计算机可读介质也包括通信介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指其一个或多个特征以在信号中对信息进行编码的方式来设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。计算机可读存储介质不包括通信介质。
根据各实施例,计算机900可以使用通过诸如网络920之类的网络到远程计算机的逻辑连接来在联网环境中操作。计算机900可以通过连接至总线904的网络接口单元906来连接到网络920。应当理解,网络接口单元906还可以被用来连接到其他类型的网络和远程计算机系统。计算机900还可包括用于接收和处理来自多个其他设备的输入的输入/输出控制器912,这些设备包括键盘、鼠标或者电子指示笔(未在图9中示出)。类似地,输入/输出控制器可以提供至显示屏、打印机或其他类型的输出设备(也未在图9中示出)的输出。
如前简述的那样,多个程序模块和数据文件可以存储在计算机900的大容量存储设备910和RAM 914内,包括适于控制联网的台式、膝上型或服务器计算机的操作的操作系统918。大容量存储设备910和RAM 914还可以存储一个或多个程序模块。具体而言,大容量存储设备910和RAM 914可存储虚拟化应用106、应用虚拟化层102、和/或上面描述的其他软件组件。大容量存储设备910和RAM 914还可存储其他程序模块和数据,诸如应用状态202。
一般而言,软件应用或模块在加载到CPU 902中并执行时,可将CPU 902和整个计算机900从通用计算系统变换成被定制成执行此处所呈现功能的专用计算系统。CPU 902可以用任意数量的晶体管或其他分立的电路元件(它们可以分别地或共同地呈现任意数量的状态)构建。更具体地说,CPU 902可以响应软件或模块内包含的可执行的指令,作为一个或多个有限状态机来操作。这些计算机可执行的指令可以通过指定CPU 902如何在多个状态之间转换来转换CPU 902,从而在物理上转换构成CPU 902的晶体管或其他分立的硬件元件。
通过将软件或模块编码到大容量存储设备上,还可变换大容量存储设备或相关联的计算机可读存储介质的物理结构。在本说明书的不同实现中,物理结构的具体变换可取决于各种因素。这些因素的示例包括但不限于:用来实现计算机可读存储介质、计算机可读存储介质是否被表征为主存储还是次级存储等技术。例如,如果计算机可读取的存储介质是作为基于半导体的存储器实现的,则当软件被编码到其中时,软件或模块可以转换半导体存储器的物理状态。例如,软件可以转换构成半导体存储器的晶体管、电容器或其他分立的电路元件的状态。
作为另一个示例,计算机可读取的存储介质可以使用磁性或光学技术来实现。在这样的实现方式中,当软件被编码到其中时,软件或模块可以转换磁性或光学介质的物理状态。这些变换可以包括改变给定磁性介质内的特定位置的磁性。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。在没有偏离本说明书的范围和精神的情况下,物理介质的其他转换也是可以的,前面提供的示例只是为了便于此讨论。
基于前述内容,应当理解,在此已经提出了用于存储和恢复应用运行时状态的技术。虽然以计算机结构特征、方法动作、以及计算机可读介质专用的语言描述了本文呈现的主题,但是应该理解,在所附权利要求书中所限定的本发明不一定仅限于本文描述的具体特征、动作、或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来公开的。
上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。

Claims (10)

1.一种包括执行计算机实现的操作的计算机实现的方法,所述计算机实现的操作用于:
接收存储正在计算机(108)上执行的应用(106)的运行时状态(202)的请求;以及
响应于接收到所述请求,独立于操作系统(104)的状态而收集所述应用(106)的所述运行时状态(202),并保持所述运行时状态(202)。
2.如权利要求1所述的计算机实现的方法,其特征在于,还包括:
接收还原所述应用的所述运行时状态的请求;以及
响应于接收到还原所述应用的所述运行时状态的请求,还原所述应用的所述运行时状态并执行所还原的应用。
3.如权利要求2所述的计算机实现的方法,其特征在于,还包括提供代理层,其用于翻译来自所述应用的对在保持所述应用的所述运行时状态之后已改变的资源的请求。
4.如权利要求3所述的计算机实现的方法,其特征在于,还包括在保持所述运行时状态之后并在还原所述运行时状态之前对所述计算机执行维护操作。
5.如权利要求3所述的计算机实现的方法,其特征在于,所述应用包括虚拟化应用。
6.如权利要求5所述的计算机实现的方法,其特征在于,所述运行时状态包括存储器内容、寄存器上下文、以及指令指针。
7.一种其上存储有计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在由计算机执行时致使所述计算机:
接收存储正在计算机(108)上执行的应用(106)的运行时状态(202)的请求;
响应于接收到所述请求,独立于操作系统(104)的状态而收集所述应用(106)的所述运行时状态(202),并保持所述运行时状态(202);
接收还原所述应用(106)的所述运行时状态(202)的请求;以及
响应于接收到还原所述应用(106)的所述运行时状态(202)的请求,还原所述应用(106)的所述运行时状态(202)并执行所还原的应用(106)。
8.如权利要求7所述的计算机可读存储介质,其特征在于,具有存储于其上的进一步的计算机可执行指令,所述进一步的计算机可执行指令在由所述计算机执行时致使所述计算机提供代理层,其用于翻译来自所述应用的对在所述应用的所述运行时状态被保持之后已改变的一个或多个资源的请求。
9.如权利要求8所述的计算机可读存储介质,其特征在于,具有存储于其上的进一步的计算机可执行指令,所述进一步的计算机可执行指令在由所述计算机执行时致使所述计算机将所述运行时状态从所述计算机移至第二计算机以对所述计算机的处理负载进行负载平衡。
10.如权利要求9所述的计算机可读存储介质,其特征在于,所述运行时状态还包括在收集所述运行时状态时的系统资源状态、用户界面状态、网络连接状态、以及在收集所述运行时状态时正在被所述应用使用的一个或多个文件资源。
CN201110448219.4A 2010-12-28 2011-12-28 存储和恢复应用运行时状态 Active CN103092777B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/979,366 2010-12-28
US12/979,366 US9223611B2 (en) 2010-12-28 2010-12-28 Storing and resuming application runtime state

Publications (2)

Publication Number Publication Date
CN103092777A true CN103092777A (zh) 2013-05-08
CN103092777B CN103092777B (zh) 2016-08-03

Family

ID=46318661

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110448219.4A Active CN103092777B (zh) 2010-12-28 2011-12-28 存储和恢复应用运行时状态

Country Status (6)

Country Link
US (3) US9223611B2 (zh)
EP (1) EP2659354B1 (zh)
JP (1) JP6009459B2 (zh)
CN (1) CN103092777B (zh)
TW (1) TWI533213B (zh)
WO (1) WO2012092289A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199676A (zh) * 2014-02-24 2014-12-10 无锡天脉聚源传媒科技有限公司 一种还原界面内容的方法及装置
CN105518638A (zh) * 2014-08-11 2016-04-20 华为技术有限公司 一种加载应用程序视图的方法、装置及电子终端
CN108932165A (zh) * 2018-07-19 2018-12-04 中山大学 一种计算机集群资源分配与调度系统

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1825412A1 (en) 2004-10-25 2007-08-29 Rick L. Orsini Secure data parser method and system
US9223611B2 (en) 2010-12-28 2015-12-29 Microsoft Technology Licensing, Llc Storing and resuming application runtime state
US8813096B2 (en) * 2011-10-11 2014-08-19 International Business Machines Corporation Predicting the impact of change on events detected in application logic
FR2984552A1 (fr) * 2011-12-16 2013-06-21 France Telecom Procede et dispositif de gestion d'une application referencee par un dispositif
US8700678B1 (en) * 2011-12-21 2014-04-15 Emc Corporation Data provenance in computing infrastructure
US9122595B2 (en) * 2012-01-13 2015-09-01 NetSuite Inc. Fault tolerance for complex distributed computing operations
US20140053128A1 (en) * 2012-08-14 2014-02-20 Microsoft Corporation Persisting state using scripts
EP2733606A3 (en) * 2012-11-15 2014-06-11 Samsung Electronics Co., Ltd Method for loading a process on an electronic device based on a user event
WO2014127147A1 (en) * 2013-02-13 2014-08-21 Security First Corp. Systems and methods for a cryptographic file system layer
JP6148129B2 (ja) * 2013-09-10 2017-06-14 Necプラットフォームズ株式会社 情報処理装置、ファームウェア更新方法およびファームウェア更新プログラム
US20160036923A1 (en) * 2014-08-03 2016-02-04 Microsoft Corporation Efficient Migration of Application State Information
US9825881B2 (en) * 2014-09-30 2017-11-21 Sony Interactive Entertainment America Llc Methods and systems for portably deploying applications on one or more cloud systems
US11531672B1 (en) * 2015-02-05 2022-12-20 Bat City Labs, LLC Computerized system and method for electronically synchronizing work station sessions over a network
US10209851B2 (en) 2015-09-18 2019-02-19 Google Llc Management of inactive windows
US10891106B2 (en) 2015-10-13 2021-01-12 Google Llc Automatic batch voice commands
CN105468358B (zh) * 2015-11-17 2019-11-05 腾讯科技(深圳)有限公司 一种移动游戏的数据处理方法以及装置
US10430266B2 (en) * 2016-06-13 2019-10-01 Vmware, Inc. Full state session reviving, forking, and snapshoting based on an application data dump
US11042450B2 (en) 2016-07-28 2021-06-22 International Business Machines Corporation Mechanism for managing container runtime state
US10579502B2 (en) 2017-02-28 2020-03-03 International Business Machines Corporation Resuming applications using pass-through servers and trace data
KR102514692B1 (ko) 2018-06-04 2023-03-29 삼성전자주식회사 다중 무선 통신 프로토콜들을 지원하는 전자 장치 및 이를 위한 방법
US11055110B2 (en) * 2018-06-05 2021-07-06 Microsoft Technology Licensing, Llc Operating system service for persistently executing programs
DK3649792T3 (da) * 2018-06-08 2022-06-20 Sivantos Pte Ltd Fremgangsmåde til overførsel af en bearbejdningstilstand i en audiologisk tilpasningsapplikation til et høreapparat
US10929200B1 (en) * 2019-09-16 2021-02-23 International Business Machines Corporation Live runtime infrastructure orchestration
FR3118378B1 (fr) * 2020-12-21 2024-01-19 Idemia France Contrôle du traitement de commandes APDU
US11567754B2 (en) * 2021-03-01 2023-01-31 Vmware, Inc. Techniques for non-disruptive operating system upgrade

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050066037A1 (en) * 2002-04-10 2005-03-24 Yu Song Browser session mobility system for multi-platform applications
CN101459690A (zh) * 2008-12-25 2009-06-17 哈尔滨工程大学 一种无线公共对象请求代理结构应用中的容错方法
CN101561780A (zh) * 2008-04-18 2009-10-21 北京闻言科技有限公司 一种使用文件来存储应用程序状态的方法

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225264B2 (en) 1998-11-16 2007-05-29 Softricity, Inc. Systems and methods for delivering content over a computer network
US6763370B1 (en) 1998-11-16 2004-07-13 Softricity, Inc. Method and apparatus for content protection in a secure content delivery system
US7017188B1 (en) 1998-11-16 2006-03-21 Softricity, Inc. Method and apparatus for secure content delivery over broadband access networks
US7730169B1 (en) 1999-04-12 2010-06-01 Softricity, Inc. Business method and system for serving third party software applications
US7370071B2 (en) 2000-03-17 2008-05-06 Microsoft Corporation Method for serving third party software applications from servers to client computers
US7200632B1 (en) 1999-04-12 2007-04-03 Softricity, Inc. Method and system for serving software applications to client computers
US6938096B1 (en) 1999-04-12 2005-08-30 Softricity, Inc. Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port
WO2001025950A1 (en) 1999-10-05 2001-04-12 Ejasent Inc. Dynamic symbolic link resolution
JP2002304383A (ja) * 2001-04-05 2002-10-18 Nec Corp プログラム実行サービス提供システム、サーバ及びそのプログラム実行サービス提供方法並びにそのプログラム
US7028305B2 (en) 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
CN100463469C (zh) * 2002-10-25 2009-02-18 国际商业机器公司 在多通道上共享应用程序会话信息的方法、装置和系统
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7080374B2 (en) * 2002-12-18 2006-07-18 Bea Systems, Inc. System and method for using native code interpretation to move threads to a safe state in a run-time environment
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
JP3848268B2 (ja) * 2003-02-14 2006-11-22 株式会社東芝 計算機システム、計算機装置、計算機システムにおけるデータアクセス方法及びプログラム
US7596790B2 (en) 2003-08-29 2009-09-29 Intel Corporation Allocating computing resources in a distributed environment
US7546598B2 (en) 2003-09-03 2009-06-09 Sap Aktiengesellschaft Measuring software system performance using benchmarks
US7370324B2 (en) 2003-09-30 2008-05-06 Intel Corporation Switching between a service virtual machine and a guest virtual machine in a virtual machine monitor environment
US7590743B2 (en) 2003-12-23 2009-09-15 Softricity, Inc. Method and system for associating a process on a multi-user device with a host address unique to a user session associated with the process
US7559063B2 (en) * 2004-06-03 2009-07-07 International Business Machines Corporation Program flow control in computer systems
KR20070041579A (ko) 2004-07-20 2007-04-18 소프트리시티, 인크. 컴퓨터 애플리케이션에서의 데이터 손실을 최소화하기 위한방법 및 시스템
US8959299B2 (en) * 2004-11-15 2015-02-17 Commvault Systems, Inc. Using a snapshot as a data source
KR100737521B1 (ko) 2005-11-24 2007-07-10 한국전자통신연구원 어플리케이션 상태 정보 수집 및 복원 방법 및 시스템
US7574591B2 (en) 2006-01-12 2009-08-11 Microsoft Corporation Capturing and restoring application state after unexpected application shutdown
US9424154B2 (en) * 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US7797576B2 (en) 2007-04-27 2010-09-14 International Business Machines Corporation Checkpoint of applications using UNIX® domain sockets
US8856658B2 (en) 2007-09-20 2014-10-07 Flash Networks Ltd. Representing user interactions as a synchronous action in a business process flow
US8510743B2 (en) * 2007-10-31 2013-08-13 Google Inc. Terminating computer applications
US8352921B2 (en) 2007-11-02 2013-01-08 Klocwork Corp. Static analysis defect detection in the presence of virtual function calls
US8078555B2 (en) * 2007-12-14 2011-12-13 Microsoft Corporation Decoupling static program data and execution data
US7861120B2 (en) * 2007-12-14 2010-12-28 Sap Ag Method and apparatus for runtime error handling
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US8195774B2 (en) * 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
JP5184233B2 (ja) * 2008-07-07 2013-04-17 Necパーソナルコンピュータ株式会社 情報処理装置および情報処理方法並びにプログラム
US20100023942A1 (en) * 2008-07-23 2010-01-28 Philip Sheu Accelerating virtual machine resume time using a pre-cached working set
US20100042719A1 (en) * 2008-08-12 2010-02-18 Junji Kinoshita Content access to virtual machine resource
US20100070678A1 (en) * 2008-09-12 2010-03-18 Vmware, Inc. Saving and Restoring State Information for Virtualized Computer Systems
US8291261B2 (en) * 2008-11-05 2012-10-16 Vulcan Technologies Llc Lightweight application-level runtime state save-and-restore utility
JP2010114665A (ja) * 2008-11-06 2010-05-20 Toshiba Corp 通信データ制御方法及び計算機システム
US8566821B2 (en) * 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
US8370493B2 (en) * 2008-12-12 2013-02-05 Amazon Technologies, Inc. Saving program execution state
US8539488B1 (en) * 2009-04-10 2013-09-17 Open Invention Network, Llc System and method for application isolation with live migration
US9189221B2 (en) * 2009-01-27 2015-11-17 Microsoft Technology Licensing, Llc Consistent operating system servicing for distributed nodes
US7941700B2 (en) 2009-03-02 2011-05-10 Microsoft Corporation Operating system-based application recovery
US20110314124A1 (en) * 2009-03-25 2011-12-22 Roger Brian Gimson Capturing an application state
US8146082B2 (en) * 2009-03-25 2012-03-27 Vmware, Inc. Migrating virtual machines configured with pass-through devices
US8051427B2 (en) 2009-04-06 2011-11-01 Jason Kleban Method of establishing a logical state of an instance using non-deterministic operation results stored in a result log
WO2010127365A1 (en) 2009-05-01 2010-11-04 Citrix Systems, Inc. Systems and methods for establishing a cloud bridge between virtual storage resources
US20110023036A1 (en) * 2009-07-24 2011-01-27 International Business Machines Corporation Switching process types in a process engine
US8930652B2 (en) * 2009-11-11 2015-01-06 Red Hat Israel, Ltd. Method for obtaining a snapshot image of a disk shared by multiple virtual machines
US9317314B2 (en) * 2010-06-29 2016-04-19 Microsoft Techology Licensing, Llc Techniques for migrating a virtual machine using shared storage
US8959511B2 (en) * 2010-12-14 2015-02-17 Microsoft Corporation Template virtual machines
US9223611B2 (en) 2010-12-28 2015-12-29 Microsoft Technology Licensing, Llc Storing and resuming application runtime state

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050066037A1 (en) * 2002-04-10 2005-03-24 Yu Song Browser session mobility system for multi-platform applications
CN101561780A (zh) * 2008-04-18 2009-10-21 北京闻言科技有限公司 一种使用文件来存储应用程序状态的方法
CN101459690A (zh) * 2008-12-25 2009-06-17 哈尔滨工程大学 一种无线公共对象请求代理结构应用中的容错方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104199676A (zh) * 2014-02-24 2014-12-10 无锡天脉聚源传媒科技有限公司 一种还原界面内容的方法及装置
CN105518638A (zh) * 2014-08-11 2016-04-20 华为技术有限公司 一种加载应用程序视图的方法、装置及电子终端
CN108932165A (zh) * 2018-07-19 2018-12-04 中山大学 一种计算机集群资源分配与调度系统

Also Published As

Publication number Publication date
WO2012092289A3 (en) 2012-09-20
TW201227517A (en) 2012-07-01
JP2014501425A (ja) 2014-01-20
EP2659354A2 (en) 2013-11-06
WO2012092289A2 (en) 2012-07-05
JP6009459B2 (ja) 2016-10-19
US20170177409A1 (en) 2017-06-22
CN103092777B (zh) 2016-08-03
US9600323B2 (en) 2017-03-21
US20160103701A1 (en) 2016-04-14
EP2659354B1 (en) 2019-06-05
US9934064B2 (en) 2018-04-03
TWI533213B (zh) 2016-05-11
US9223611B2 (en) 2015-12-29
US20120167117A1 (en) 2012-06-28
EP2659354A4 (en) 2017-12-27

Similar Documents

Publication Publication Date Title
CN103092777B (zh) 存储和恢复应用运行时状态
US10209910B2 (en) Copy-redirect on write
US9582311B2 (en) System, method and computer program product for data processing and system deployment in a virtual environment
US20190243670A1 (en) Execution of a script based on properties of a virtual device associated with a virtual machine
US8495625B1 (en) Method and system for creation of streamed files on-demand
US9529617B2 (en) Instant virtual machines
US20080077936A1 (en) Method and apparatus for automatically launching an application from a browser
US11030057B2 (en) System and method for critical virtual machine protection
US11681520B2 (en) Software upgrading using dynamic link library injection
US20240056482A1 (en) Expedited recovery based on data storage management integration with cyber threat deception
CN103207817A (zh) 虚拟机自动还原方法
US10691545B2 (en) Modifying a container instance network
US9569138B2 (en) Copying virtual machine flat tires from a source to target computing device based on matching disk layout
CN108604191A (zh) 代理对象系统
US9575658B2 (en) Collaborative release of a virtual disk
WO2017016139A1 (zh) 一种系统还原方法与装置
US9075635B1 (en) Systems and methods for merging virtual layers
US20230106327A1 (en) Systems and methods for data mover selection
US10929200B1 (en) Live runtime infrastructure orchestration
KR20230100902A (ko) 컨테이너에 포함된 데이터에 대한 관리 시스템 및 그 제어방법
TW201118740A (en) Capacity extending method for virtual hard disk

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150720

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150720

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant