CN102708064B - 从休眠中多阶段恢复 - Google Patents

从休眠中多阶段恢复 Download PDF

Info

Publication number
CN102708064B
CN102708064B CN201210043344.1A CN201210043344A CN102708064B CN 102708064 B CN102708064 B CN 102708064B CN 201210043344 A CN201210043344 A CN 201210043344A CN 102708064 B CN102708064 B CN 102708064B
Authority
CN
China
Prior art keywords
information
dormancy
processor
calculating equipment
stage
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.)
Active
Application number
CN201210043344.1A
Other languages
English (en)
Other versions
CN102708064A (zh
Inventor
Y.M.贝克
K.V.斯塔克
M.伊冈
E.N.威尔逊
A.D.罗杰斯
J.A.小施瓦茨
N.S.朱奇
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.)
IValley Holding Co., Ltd.
Original Assignee
Zhigu Holdings Ltd
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 Zhigu Holdings Ltd filed Critical Zhigu Holdings Ltd
Publication of CN102708064A publication Critical patent/CN102708064A/zh
Application granted granted Critical
Publication of CN102708064B publication Critical patent/CN102708064B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Power Sources (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

从休眠中恢复计算设备的处理可以在多个阶段中执行。每一个阶段都可以部分地将计算设备的状态恢复到操作状态,并且可以建立一个用以执行另一个恢复阶段的环境。休眠信息可被划分,以便独立存储将在每一个恢复阶段使用的数据。该信息可以采用压缩形式保存。在第一阶段中,引导级恢复加载器可以基于休眠信息的一部分来恢复操作系统的一部分。已恢复的部分可以在第二阶段中用来通过操作系统(OS)来从另一个部分中检索休眠信息。OS支持的多个处理器可以读取和解压缩休眠信息,然后,所述信息可以移动回到操作存储器。所述操作系统可以支持异步盘输入/输出或其他加速恢复处理的功能。

Description

从休眠中多阶段恢复
背景技术
计算机具有范围从完全工作(full operation)到完全关机(full shutdown)的若干种操作模式。在完全工作中,定义操作系统的执行部分的软件被从非易失存储器加载到操作存储器中,所述操作存储器则通常是易失存储器,并且软件可以从所述操作存储器中被更快速运行。计算机通过一个“启动”过程进入这种完全工作模式。该启动过程配置硬件并加载计算机的操作系统。作为启动过程的一部分,驱动器被安装且操作系统服务将被启动。
一旦计算机准备好供任何用户操作,则用户可以登录到计算机。这种登录可以涉及基于特定于登录用户的简档(profile)来进一步配置计算机。然后,应用可以自动或者响应于用户输入而被加载,由此所述应用可以运行,从而利用计算设备的硬件能力和操作系统服务。
无论是对操作系统还是对应用来说,在加载软件的过程中,存储器都可以被分配,并且软件的参数可以是基于计算机的硬件配置或是用户简档而被赋值的,此外,其他配置动作也可以被执行。这些动作建立了计算设备的“状态”。针对存储器以及定义系统操作状态的其他系统参数的进一步改变也可以是在用户提供命令来与正在执行的应用或是操作系统服务进行交互的时候进行的。
在完全关机模式中,计算机的硬件组件未被供电。由于易失存储器在断电的时候不会保持信息,因此,在易失存储器中没有保存软件或状态信息。相反,任何用于在以后将计算机重新配置成实施完全操作模式的信息都会保存在非易失存储器中。
计算机通过一个被称为关机的处理进入关机模式。在关机过程中,如果尚未将重新配置计算机所需要的信息存入非易失存储器中,那么这时可以将其保存在非易失存储器中。从非易失存储器拷贝至易失存储器的软件和其他配置信息不会被往回拷贝到非易失存储器中,这是因为所述软件和配置信息可以在后续的启动处理过程中被重新创建。
除了完全关机之外还存在节能模式,在该模式中,提供给计算机的一些或全部硬件组件的电力将被关闭。在有时也被称为睡眠模式的节能模式中,计算机处理器、网络接口或者可能还有其他组件的电源会被切断。然而,易失存储器的供电将会保持。这样一来,在引导过程或后续的计算机操作过程中创建的任何状态信息将被保持在易失存储器中。当再次向处理器供电时,它可以以在进入睡眠模式时中断的模式中的状态恢复操作。
还有一种模式有时被称为休眠模式。计算机通过被称为休眠的处理进入这种模式。在休眠模式中,在通常是硬盘的非易失存储器中将会创建和存储捕获计算机操作状态的文件。在将代表系统状态的数据存入休眠文件的时候,该数据可被压缩。在从休眠中恢复的处理过程中,该文件可被从硬盘中读取、解压缩以及用于重建在休眠时存在的计算机状态。从休眠中恢复的处理会在易失存储器中恢复那些在休眠时存在的操作过程中的软件或参数集合拷贝,由此任何用户状态也会被恢复。
由于若干理由,从休眠中恢复的处理要快于执行整个启动过程的处理。这其中的一个原因在于:通过将休眠文件中的状态信息拷贝到易失存储器中可以重新创建整个启动处理的结果,同时避免耗费时间来执行所述启动处理的步骤,例如CPU消耗、设备初始化以及其他众多类型的需要在引导过程中执行的工作。此外,在启动过程中被访问的信息将会保存在众多不同的文件中,这些文件代表为了加载和配置操作系统中可能多达成千上万的组件而被访问的不同组件。这些组件以及为了配置这些组件而被访问的信息有可能随机分布在硬盘中。由于硬盘驱动器以及其他一些类型的大容量存储器在访问顺序数据的时候最为有效,因此,访问随机分布的数据的处理有可能包括大量的磁盘访问时间,从而导致产生冗长的启动过程。相比之下,在读取休眠文件的过程中,由于该文件中的信息可以按顺序保存在磁盘上,因此,访问时间要相对较短。
发明内容
为了提升计算设备从休眠模式中恢复的速度,计算设备可以被配置成是分多个阶段而从休眠模式中恢复的。每一个阶段都可以基于休眠信息来部分恢复计算设备的状态。这些阶段可以在不同的环境中执行,从而使得在不同的阶段使用计算设备的不同资源。在一些实施例中,在某个阶段的处理可以建立一个执行所述恢复的另一个阶段的环境。
在一些实施例中,恢复处理阶段可以是通过运行第一组计算机可执行指令来执行的。这些指令可以是在预操作系统环境中运行的。例如,这些指令可以构成作为计算设备BIOS一部分的引导加载器,或者可以以其它方式处于计算设备的固件中。这些指令可以控制将非易失存储器中存储的休眠信息的第一部分传送到操作存储器的处理。所述第一环境可以是一个相对稀疏的环境,这在预操作系统环境中是很常见的。第一组指令可以是在单个处理器上运行的,并且不可以支持对包含休眠信息的存储介质的异步访问。
通过执行第一组计算机可执行指令,可以建立能够运行第二组计算机可执行指令的第二环境,以便控制将休眠信息的第二部分从非易失存储器传送到操作存储器的处理。所述第二环境可以具有更丰富的资源集合。
举个例子,第二环境可以包括对于多个处理器的支持。在第二阶段中可以使用一个以上的处理器来执行处理,以便分担完成从休眠中恢复所需要的处理负载。例如,一个或多个处理器可以读取休眠信息,并使其可供一个或多个其他处理器用于处理。这些读取操作可以是同步执行的。其他处理器可以解压缩数据,并且在适当的时候将其传送到操作存储器。
作为替换或补充,更丰富的资源集合可以包括允许异步访问包含休眠信息的存储介质的存储器访问功能。例如,第二环境可以支持操作系统环境中常见的异步盘输入/输出(I/O)。由于在I/O操作处于未决状态等待(pending)读取来自非易失存储器的休眠信息的另一个分段的间隔期间,处理器可以基于休眠信息的分段来执行处理,以便恢复计算设备的状态,因此,即便计算设备具有单个处理器,使用异步访问也可以加速恢复处理。
为了实现分多个阶段从休眠中恢复的处理,可以独立地记录来自操作存储器的将在每一个恢复阶段中恢复的信息。该信息可以结合用于识别要在每一个阶段恢复的信息的元数据来存储。在一些实施例中,休眠信息可被分区,由此,在被移动回到操作存储器时,为每一个在先阶段记录的信息都会为后续阶段建立环境。在一些实施例中,在第一阶段恢复的信息将会重新创建足以通过操作系统完成所述恢复处理的操作系统的一部分。操作系统的这些部分可以包括支持硬件访问和核心模式恢复加载器的操作系统核心部分。
一些或所有休眠信息可以采用压缩形式来记录。在一些实施例中,基于计算设备的处理器和盘I/O的能力,可以动态选择一个或多个适当的压缩算法。例如,压缩算法可以是在计算设备中基于处理器的数量和处理速度以及基于盘I/O速度而被选择的。在更多处理能力可用时,压缩算法还可以是基于偏向使用更大压缩的标准而被选择的。所述标准还可以在存储了休眠信息的盘或其他非易失存储器的访问时间较慢的时候偏向使用更大压缩。与休眠信息一起存储的元数据可以包括指示所使用的压缩的特性的参数值。
根据一个方面,可以实现一种用于操作包含了至少一个处理器的计算设备的方法。该方法可以包括动态选择至少一个压缩算法,以及在休眠的时候,将休眠信息的第一部分记录在非易失存储器中,所述第一部分包括来自操作存储器的代表休眠时的计算设备状态的信息,将休眠信息的第二部分记录在非易失存储器中,所述第二部分包括来自操作存储器的代表休眠时计算设备的状态的信息。所述第一部分和/或第二部分可以依照至少一个动态选择的压缩算法中的一种动态选择的算法来压缩,以使第一部分和第二部分具有不同的压缩量。
根据另一个方面,可以提供一种计算机系统,其中该系统包含易失存储介质以及包含休眠信息的非易失存储介质。休眠信息可以包括:存储指示计算机系统休眠时的状态的一部分的第一信息的第一部分,以及存储关于休眠时的系统状态的第二信息的第二部分,其中所述第一信息是用第一压缩算法压缩的,所述第二信息是用第二压缩算法压缩的。该休眠信息还可以包括至少识别第二部分和第二压缩算法的报头信息。
根据另一个方面,可以提供一种用于操作计算设备的方法,包括:使用至少一种压缩算法来压缩下列各项中的至少一个:第一信息,其包含来自操作存储器且用于恢复计算设备操作系统一部分的信息,以及第二信息,其包含来自操作存储器的关于休眠时的计算设备状态的信息,在非易失存储器中的休眠信息的第一部分中记录第一信息,在非易失存储器中的休眠信息的第二部分中记录第二信息,以及在与休眠信息相关联的元数据中记录识别至少一个压缩算法的至少一个参数的至少一个值。
以上是关于本发明的非限制性概述,本发明则是由所附的权利要求定义的。
附图说明
附图并没有打算按比例绘制。在附图中,在不同的图中示出的每一个相同或近似相同的组件都是用相同的数字表示的。为了清楚起见,并不是每一个组件都在每一个图中进行了标记。在附图中:
图1是示出了其中可以实现本发明的一些实施例的系统的原理框图;
图2是示出了根据本发明一些实施例在计算设备中从休眠中恢复的序列的功能框图;
图3是是示出了根据本发明的一些实施例来操作计算设备而从休眠中恢复所述计算设备的方法的流程图;
图4是示出了根据本发明的一些实施例由多个处理器读取休眠信息的处理的流程图;
图5是示出了根据本发明的一些实施例操作计算设备进入休眠的方法的流程图;
图6A和6B是根据本发明的一些实施例动态选择压缩算法以压缩休眠信息的方法的流程图;以及
图7是示出了本发明的一些实施例可在其中操作的环境的例示计算设备的框图。
具体实施方式
申请人认识并意识到,常规的从休眠中恢复的处理涉及在计算设备引导固件的控制下恢复计算设备的状态,这种处理不能有效使用计算设备的处理资源。计算设备可以具有多个处理器。然而,引导固件不能支持多个处理器。此外,引导固件通常不支持异步I/O。相应地,计算设备的可用资源并未得到充分使用,而这有可能会限制计算设备从休眠模式中恢复的速度。
申请人认识并意识到,为了提高计算设备从休眠模式中恢复的速度,计算设备可以被配置成分多个阶段从休眠模式中恢复。每一个恢复阶段可以从休眠信息中部分恢复计算设备的状态,而每一个后续恢复阶段则恢复附加状态信息。此外,每一个恢复阶段都可以建立一个后续阶段可在其中运行的环境。结果,这些恢复阶段可以在不同的环境中执行,以便在不同的阶段使用计算设备的不同资源来快速完成恢复操作。
在一些实施例中,通过运行第一组计算机可执行指令,可以执行从休眠中恢复的处理的一个阶段。例如,这些指令可以构成作为计算设备BIOS的一部分的引导加载器,或者可以采用其他方式处于计算设备的固件中。这些指令可以控制将保存在非易失存储器中的休眠信息的第一部分传送到操作存储器的处理。
这些指令可以在第一环境中运行。所述第一环境可以是一个相对稀疏的环境,例如预操作系统环境。举个例子,第一组指令可以在不支持对包含休眠信息的存储介质的异步访问的单个处理器上执行。
通过执行第一组计算机可执行指令,可以建立其中能够运行第二组计算机可执行指令的第二环境。所述第二组计算机可执行指令可以控制将休眠信息的第二部分从非易失存储器传送到操作存储器的处理。作为一个具体示例,通过在预操作系统环境中运行引导级加载器,可以在操作系统中恢复核心级加载器。所述核心级加载器可以使用诸如多处理器支持或异步I/O支持之类的通过操作系统提供的资源来控制将休眠信息传送到易失存储器的处理。
与第一环境相比,第二环境可以具有更丰富的资源集合。举例来说,当操作系统环境为多个处理器提供支持的时候,这时可以使用一个以上的处理器来执行第二阶段的处理,以便分担完成从休眠中恢复的处理所需要的处理负载。一个或多个处理器可以从非易失存储器中读取休眠信息,并使其可供一个或多个其他处理器用于进行处理。例如,一个或多个这样的处理器可以将休眠信息传送到易失存储器的共享缓存器中。其他处理器可以访问共享缓存器,如果该信息是以压缩形式保存的,那么所述其他处理器可以解压缩该信息。然后,解压缩的信息可被传送回到操作存储器中的恰当位置。在一些实施例中,从非易失存储器中读取休眠信息的一个或多个处理器可以使用同步I/O操作。然而,由于其他处理器可以同时处理信息并将其传送到操作存储器,因此,所述恢复处理可以快速进行。
更丰富的操作系统环境还可以包括对于允许对包含休眠信息的存储介质进行异步访问的存储器访问功能的支持,这样做同样可以加速恢复操作,而不用考虑可用处理器的数量。例如,操作系统环境可以支持异步盘输入/输出(I/O)。相应地,处理器可以将休眠信息从非易失存储器传送到充当缓存器的存储介质,并且从中可以访问所述信息来实施处理,以便基于休眠信息来恢复状态信息。该处理可以由其他处理器执行,或者在异步读取操作读取处于未决状态等待的时候可以由读取信息的相同处理器执行。相应地,即使计算设备只具有单个处理器,也可以使用异步访问来加速恢复过程。
另举一例,当支持异步I/O时,可以设置异步I/O操作的参数来加速恢复处理。例如,第二环境可以支持同时处于未决状态等待的多个I/O操作。这种同时处于未决状态等待的操作的数量可以是可配置的,并且这种操作的数量可以作为将计算设备配置成在第二环境中操作的处理的一部分来规定。此外,控制每一个I/O操作大小的参数也可以作为建立第二环境的处理的一部分来设置。这些参数既可以是动态设置的,也可以是基于计算设备上的硬件设置的,还可以是采用任何适当方式设置的。
在一些实施例中,为了分多个阶段实现从休眠中恢复的处理,来自操作存储器并且将会在每一个恢复阶段恢复的信息可以被独立地记录。任何适当的技术都可以用于确定存储来自操作存储器的哪些信息以便在每一个阶段中使用。在一些实施例中,休眠信息可以是在休眠序列中基于计算设备的状态而被动态确定的。例如,在计算机操作系统内部管理休眠信息存储的实用工具可以用那些为了在第一阶段之后使用而要被恢复的一系列操作系统组件来编程。所述休眠实用工具可以在操作系统维护的存储器管理结构中识别这些组件使用的存储页面。这些存储页面可以作为与第一阶段相关联的一部分休眠信息的一部分来存储。
休眠信息可以采用任何适当的方式存储,以使允许适合每一个阶段的休眠信息部分能被用于该阶段的恢复加载器识别。例如,休眠信息可以结合识别将在多阶段恢复中的每个阶段恢复的信息的元数据一起来保存。在将休眠信息作为休眠文件来加以保存的实施例中,文件报头可以存储元数据。但是,其他实现也是可以替换的。
在一些实施例中,一些或所有休眠信息可以用压缩形式记录。在一些实施例中,适当的压缩算法可以是基于计算设备的处理器和盘I/O的能力而被动态选择的。例如,压缩算法可以是在计算设备中基于处理器的数量和处理速度以及基于盘的I/O速度而被选择的。
在一些实施例中,压缩算法在有更多处理能力可用时可以是基于偏向使用更高压缩的标准来选择的。当存储休眠信息的盘或其他非易失存储器的访问时间较慢时,也可以选择具有更高压缩度的压缩算法。
在一些实施例中,由于所述恢复的不同阶段是在不同的环境中执行的,因此,不同的压缩算法可以在不同阶段产生不同的性能益处。由此,基于计算设备在各个恢复阶段可用的资源,可以选择不同的压缩算法来压缩用于不同阶段的休眠信息。
与休眠信息一起保存的元数据可以包括指示所使用的压缩的特性的参数值。在从休眠中恢复的过程中可以访问这些参数。由此,在恢复过程中,不同的解压缩算法可以是基于元数据而被选择的。结果,基于选择用于压缩休眠信息的相应压缩算法,不同的算法可以用于解压缩休眠信息的各部分。
现在转到图1,该图示出的是可以被适配成根据本发明实施例来操作的计算设备100的功能框图。在本示例中,计算设备100包括易失存储器102。易失存储器102可以使用DRAM或是其他任何适当的存储器组件来实现。计算设备100还包括非易失存储器104,其中该非易失存储器可以使用任何适当的存储器组件来实现。
任何适当的物理设备都可以用于实现非易失存储器104。例如,非易失存储器104可以是诸如旋转硬盘或固态驱动器之类的盘。
计算设备100可以包括本领域已知的其他任何组件。这些组件可以包括多个处理器106。每一个处理器106都可以作为本领域已知的独立物理芯片或其他设备来实现。但在一些实施例中,每一个处理器可以是多核设备的一个核心。应该意识到的是,计算设备为100可以包括为了简单起见而被省略的其他任何适当的组件。这里描述的技术允许在从休眠中恢复的过程的至少一个部分中使用一个以上的处理器106。
易失存储器102可以是操作存储器的一个示例。在操作中,易失存储器102可以存储用于操作计算机系统的信息。这些信息可以包括可执行代码、所述代码使用的数据和/或其他状态信息。
这里描述的技术实现了一种从休眠中恢复计算设备100以便提升计算设备从休眠中恢复的速度的处理。当计算设备100进入休眠模式时,该设备可以执行一个休眠序列,这其中包括存储用于在以后从休眠中恢复的休眠信息。该休眠信息可以保存在非易失存储器104中。在一些实施例中,休眠信息可以保存在非易失存储器104中的一个名为hiberfile的文件108中。然而应该意识到,本发明的实施例并不局限于在非易失存储器104中存储休眠信息的方式,所述休眠信息可以保存在任何适当的存储介质中。非易失存储器的具体类型并不重要,但是可以是诸如硬盘或固态盘之类的顺序访问盘。
在一些实施例中,从休眠中恢复的处理可以在多个阶段中执行。单纯出于例证目的,在这里示出了两个恢复阶段。应该意识到的是,从休眠中恢复的处理可以经由两个以上的阶段执行,其中在每一个阶段恢复的信息都被用于为后续阶段建立环境。要在每一个阶段恢复的信息可以保存在非易失存储器内存储的休眠信息内部的独立的位置。
每一个阶段可以部分恢复计算设备,以便建立一个其中可以执行另一个恢复阶段的环境。从休眠中恢复的处理可以用任何适当的方式划分成阶段。
为了经由多个阶段来从休眠中恢复,休眠信息可被分成区段。在每一个区段上可以记录相应阶段的信息,其中在被移动回到操作存储器时,所述阶段将会为后续阶段建立一个环境。
相应地,hiberfile 108的不同部分可以存储从休眠中恢复的处理的不同阶段所需要的信息。在图示实施例中,hiberfile 108可以包括报头110、第一部分112和第二部分114。部分112和114中的每一个都可以存储在从休眠中恢复的处理的相应阶段传送至操作存储器的休眠信息。应该意识到的是,hiberfile 108的部分112和114在图1是仅仅是作为示例显示的,并且休眠信息在非易失存储器104中的其他任何适当的组织都可以用于存储休眠信息。此外,当从休眠中恢复的处理可以包括两个以上的阶段时,该信息可以保存在两个或多个部分中。
任何适当的技术都可以用于识别为了在以后用于相应的恢复阶段而被存储的信息。在一些实施例中,识别操作存储器内容的休眠信息的不同部分的位置可以作为元数据来记录——例如记录在休眠文件108的报头110中。作为替换或补充,这个元数据可以包括在从休眠中恢复的处理中使用的其他信息,例如用来压缩休眠信息的一个或多个部分的压缩算法的标识。
Hiberfile 110的第一部分112可以包括用于在第一阶段中恢复计算设备操作系统一部分的信息。在一些实施例中,这部分操作系统可以包括操作系统核心的一部分。第二部分114可以包括用于完成恢复计算设备110在进入休眠模式时的状态的处理的信息。报头110可以包括用于识别第一部分112和第二部分114的信息。
与引导固件预操作系统环境118相比,操作系统可以提供一个具有更丰富的资源的环境116。由此,在一些实施例中,预操作系统环境可以仅仅恢复足以部分恢复操作系统的休眠信息。所恢复的部分可以建立一个其中能够执行恢复处理的更大部分的操作系统环境。相应地,在第一阶段中要移动到操作存储器的休眠信息量可以小于在第二阶段中要移动到操作存储器的休眠信息量。结果,在第一阶段中恢复的休眠文件108的部分112中可以仅仅存储足以部分恢复操作系统核心的状态信息。而在hiberfile 108的部分104中存储在以后用于从休眠中完全恢复计算设备的剩余状态信息。
图1示意性显示出可以将那些关于在操作系统环境116内部运行的组件的状态信息分成两个部分,这两个部分分别是用120和121标记的,其中每一个部分都可以独立保存在hiberfile 108中,以便在相应的恢复阶段恢复。由此,状态信息120可以保存在hiberfile 108的部分112中,其中所述部分是在第一恢复阶段恢复的。状态信息120可以包括用于实现核心级恢复加载器122、一些操作系统服务124以及驱动器126的代码。驱动器126可以控制在第二恢复阶段中操作的硬件组件,并且举例来说,所述驱动器可以包括用于与盘硬件通信的一个或多个驱动器,用于内存转储堆栈的驱动器、高级配置与电源接口(ACPI)驱动器以及其他驱动器。关于其他任何适当组件的信息都可以保存在hiberfile 108的部分112中。
在一些实施例中,保存在hiberfile 108的第一部分112中的信息可以在恢复过程中由保存在预操作系统环境118的固件130中的引导级恢复加载器128返回给活动存储器。该引导加载器128可以控制计算设备100从休眠中的部分恢复,以便使得核心级恢复加载器122能够在操作系统环境116中操作。
如图1所示,状态信息121可以保存在hiberfile 108的部分114中。当在第二恢复阶段中被移动回到操作存储器时,该信息可以用于完成恢复处理。虽然关于计算设备100休眠时的状态的信息120是部分保存在部分122中的,但是状态信息121可以使用本领域已知的技术来实现。它可以将状态信息从活动存储器传送到非易失存储器,并且随后使用常规计算设备中的技术来触发计算设备的电源关闭。状态信息可以是在诸如由存储器管理器138定义的存储页面之类的分段中传送的。每一个页面都可以在存储前被压缩。此外,每一个分段可被标记或者采用某种方式标识,以便在从休眠中恢复的时候可以将所述分段返回到先前从中拷贝该分段的活动存储器中的相同存储位置。所有这些操作都可以使用常规技术或其他任何适当的技术来执行。但是,休眠实用工具132与常规实用工具的不同之处可以在与它会以一种支持多阶段恢复的方式来将状态信息从活动存储器传送到非易失存储器。为了支持这些操作,休眠实用工具132可以识别活动存储器中那些存储了将要在每个阶段中恢复的状态信息的分段,并且采用恰当的格式来将该信息保存在hiberfile 108中。在一些实施例中,休眠实用工具可以将信息添加给hiberfile,以便支持多阶段恢复。举个例子,休眠实用工具132可以添加关于如何调用用于后续阶段的加载器的信息。作为替换或补充,与让加载器122在休眠时处于活动存储器中不同,实用工具132可以将其添加给hiberfile 108。
保存在hiberfile 108的部分114中的指令可以包括休眠实用工具132。休眠实用工具132对在第二恢复阶段中将保存在hiberfile 108的部分114中的休眠信息传送到易失存储器102的处理进行控制。该休眠实用工具132可以包括在第一阶段中使能的核心级恢复加载器122,其中该加载器可以运行来将保存在hiberfile 108的部分114中的指令加载到易失存储器102。
状态信息121可以包括关于在恢复时要恢复的计算设备100在休眠时的状态的任何适当信息。状态信息121可以包括操作系统服务134、驱动器136、存储器管理器138以及为了简单起见而没有显示的其他任何组件。驱动器136可以控制硬件组件。存储器管理器138可以是操作系统服务134的一个示例,并且可以在易失存储器102中组织信息。操作系统提供的其他任何适当的服务(例如与用户接口交互以及建立网络连接)都是可以实现的,并且特定的操作系统服务134并不是对本发明的限制。
在一些实施例中,保存在hibierfile 108的第一部分112中的信息和保存在第二部分114中的信息可以在保存前被压缩。可以选择不同的压缩算法来压缩保存在每一个部分112和114中的信息。在这样的实施例中,报头110可以包括包含了指示用于hiberfile 108的压缩算法或是所述文件的一个或多个部分中的每一个的特性的参数值的元数据。
在一些实施例中,休眠实用工具132可以为休眠信息的一个或多个部分中的信息选择一种压缩算法。适当的压缩算法可以是基于多个标准动态选择的,这其中包括将在其中解压缩信息的环境的特性。由此,用于压缩保存在hiberfile 108的第一部分112中的信息的第一压缩算法可以是基于用于访问部分112以便在操作存储器中存储所述信息的计算设备1000的至少一个组件的能力动态选择的。为了压缩保存在hiberfile 108的第二部分114中的信息,可以基于用于访问第二部分114以便在操作存储器中存储来自这个部分的信息的计算设备100的盘输入(I/O)速度和处理器106的能力中的至少一个来动态选择第二压缩算法。
应该意识到的是,在一些实施例中,只有保存在hiberfile 108的第一部分112中的信息或是只有保存在hiberfile 108的第二部分114中的信息才可以采用压缩形式保存。
保存在非易失存储器104内hiberfile 108或其他适当存储器中的休眠信息可以用于从休眠中恢复计算设备100。图2示出了根据一些实施例从休眠中恢复的期间的计算设备100。图2所示的计算设备包括与图1所示那些相似的组件。
在一些实施例中,从休眠中恢复的处理是在多个恢复阶段中执行的。如结合图1所述,来自操作存储器且将会在每一个恢复阶段中恢复的信息(例如状态信息120和状态信息121)可以独立记录在非易失存储器上存储的休眠信息中。在所示出的示例中,休眠信息可以保存在非易失存储器104内存储的休眠文件108中。Hiberfile 108包括存储可以在第一恢复阶段中恢复的信息的第一部分112,以及存储可以在第二恢复阶段中恢复的信息的第二部分114。该休眠信息可以结合识别将会在每个阶段恢复的信息的元数据来存储。
在所示出的示例中,Hiberfile 108中的元数据可以用于识别将要在每个恢复阶段中恢复的信息。举例来说,所述元数据可以保存在hiberfile 108的报头110中。然而应该意识到的是,将被在各个不同的恢复阶段中处理的休眠信息可以用任何适当的方式识别,这其中包括使用预定地址来指示用于每一个阶段的部分或是处于部分末端且识别后续阶段的一部分的指针。
从休眠中恢复的序列可以通过访问保存在引导固件130中的指令来开始。这些指令促使诸如处理器106的处理器202之类的处理器访问休眠文件108。在本示例中,在访问休眠文件108时,处理器202会将休眠文件108的内容的一部分拷贝至操作存储器(例如易失存储器102)。举个例子,该指令可以促使处理器202从hiberfile 108的部分112中读取信息,以便使能引导级恢复加载器128。
保存在hiberfile 108的第一部分112中的休眠信息可以包括用于在第一恢复阶段中创建足以通过操作系统来完成第二阶段的恢复处理的操作系统一部分的信息。在图示示例中,在第一恢复阶段,保存在hiberfile 108的第一部分112中的状态信息120可被恢复。
Hiberfile 108的第一部分112可以由引导级恢复加载器128返回给活动存储器。该引导加载器可以是计算设备100的BIOS的一部分,或者也可以采用其他方式处于计算设备的固件130中。引导加载器128可以控制通过使用常规的从休眠中恢复的技术来将保存在hiberfile 108的部分112中的休眠信息传送到易失存储器102的处理。相应地,引导级恢复加载器128可以在预操作系统环境118中运行。
引导级恢复加载器128可以构成在恢复过程中运行的第一组计算机可执行指令。执行这些指令可以恢复操作系统核心的一部分,例如核心级恢复加载器122。在其中运行第一组计算机可执行指令的预操作系统环境118可以是相对稀疏的环境。例如,即使存在多个处理器,引导级恢复加载器128也可能不能够支持多个处理器。因此,第一组指令可以在单个处理器202上运行,并且可能不支持异步访问包含休眠信息的存储介质,例如hiberfile 108。举个例子,预操作系统环境118不支持异步I/O操作。
在第一恢复阶段运行第一组计算机可执行指令可以建立可在其中执行第二组计算机可执行指令的另一个环境。所述第二组指令可以基于hiberfile 108的第二部分114而在操作系统环境116中运行。由于在先前阶段中只恢复了操作系统的一部分,因此,该环境可能不同于完整的操作系统环境。在这个“早期”操作系统环境中可以运行多个用于恢复保存在hiberfile中的信息的组件,例如从hiberfile 108的第二部分114记录的状态信息121中恢复信息的组件。通过在操作系统环境116中运行第二组计算机可执行指令,可以导致最终从休眠中完全恢复计算机设备100。
在第一阶段中,引导级加载器128可以控制从休眠中部分恢复计算设备100的处理,以便在操作系统环境116中使能核心级恢复加载器122。引导级加载器128可以响应于来自计算机用户的恢复输入或其他适当事件而被触发操作。所述引导级加载器可以像在常规计算机系统中一样地操作。但是可以对其进行编程,以便将控制权传送到用于下一个恢复阶段的加载器。在图示实施例中,在第二阶段,核心级恢复加载器122可以控制将保存在hiberfile 108的第二部分114中的休眠信息传送到易失存储器102的处理。保存在部分114中的休眠信息可以包括保持计算设备100在休眠时的状态的状态信息121。核心级恢复加载器122可以运行这些指令来完成从休眠中恢复计算设备100的处理,以及恢复计算设备100在休眠时的状态。
与预操作系统环境118相比,诸如操作系统环境116之类的作为运行第一组计算机可执行指令的结果而建立的环境可以具有更丰富的资源集合。因此,操作系统环境116可以包括对于多个处理器的支持。作为替换或补充,操作系统环境116的更丰富资源集合可以包括允许异步访问包含了诸如休眠文件108之类的休眠信息的存储介质的存储器访问功能。
相应地,在第二阶段中可以使用一个以上的处理器来执行处理,以便分担完成从休眠中恢复的处理所需要的处理负载。例如,一个或多个处理器可以读取休眠信息,并且使其可供一个或多个其他处理器用于处理。这些其他处理器可以解压缩休眠信息,并且在适当时将其传送到操作存储器。这样做可以提升计算设备退出休眠模式的速度,并且将其资源恢复到完全操作状态。
对于本发明来说,使用处理器106来分担第二恢复阶段的处理负载的方式并不重要。在图2所示的实施例中,诸如处理器202之类的单个处理器可以读取hiberfile 108的第二部分114,并且使其可供处理器106之外的一个或多个其他处理器204用于处理。处理器202可以从第二部分114中读取诸如页面或页面群组之类的分段,并且将这些分段记录在易失存储器102的共享缓存器中206中。当第二部分114的一个或多个分段在共享缓存器206中可用时,这些分段可以被其他处理器204检索。在第二部分114采用压缩形式存储休眠信息的实施例中,在从共享缓存器206中检索到分段时,处理器204可以解压缩这些分段,并且将其传送到易失存储器102中的恰当位置。解压缩算法可以是基于关于所使用的压缩的信息来选择的,其中所述压缩可以基于对保存在hiberfile 108(例如报头110)中的元数据的访问来确定。
操作系统环境116内部的更丰富的资源集合可以包括允许同时由处理器202将休眠信息从非易失存储器传送到共享缓存器以及由处理器204从共享缓存器中检索休眠信息分段的存储器访问功能。这些更丰富的资源可以包括对于异步输入/输出(I/O)操作的支持。
在图示实施例中,处理器202可以同步访问非易失存储器104。同步访问可以加速从非易失存储器设备中读取信息的处理。在从非易失存储器中读取了分段之后,只要其他处理器可用于将这些分段恢复到活动存储器的附加处理,则可以快速执行整个恢复处理。如果多个处理器可用,则可以采用任何适当的方式来使用这些处理器,以便提供快速恢复处理。例如,多个处理器可被用于从非易失存储器中读取信息。或者,一些处理器可以解压缩分段,而其他处理器则可以将解压缩的分段拷贝到活动存储器。
应该意识到的是,多个处理器105仅仅是作为示例显示的,因为所述计算设备100可以包括单个处理器。在这种场景中,单个处理器可以执行将休眠信息的第二部分从非易失存储器读取到共享缓存器中所述部分的记录分段以及从共享缓存器中检索这些分段的处理。该处理器可以通过异步输入/输出(I/O)操作来从非易失存储器读取第二部分。因此,即使计算设备具有单个处理器,使用异步访问也可以加速恢复处理,这是因为在I/O操作处于未决状态等待从非易失存储器中读取休眠信息的另一个分段的时候,处理器可以基于休眠信息分段而在某个间隔中执行处理以恢复计算设备的状态。
图3示出了从休眠模式中恢复计算设备(例如图1和2的计算设备100)的处理300。处理300可以在任何适当的时间开始。例如,处理300可以依照定时器产生的事件而开始进行,其中所述事件促使计算设备周期性地从休眠中唤醒,以便为所述设备提供服务。在其他场景中,处理300可以在从用户那里接收到命令的时候开始进行。然而,任何适当的触发器都可以用于发起从休眠中恢复的处理,因为本发明的实施例在这个方面是不受限制的。
在方框302,处理器300被显示成可选地包括接收从休眠中恢复的命令。该命令可以是用任何适当的方式接收的。例如,计算设备用户可以提供输入(例如经由电源按钮或是其他输入设备)来从休眠中恢复计算设备。作为替换或补充,所述恢复命令可以是从计算设备100的适当组件接收的。
在方框304,处于计算设备的预操作系统环境中的引导加载器可被执行。该引导加载器可以是保存在计算设备固件中的引导级恢复加载器(例如图1和2的引导级恢复加载器128)。该引导级恢复加载器可以控制从非易失存储器中传送保存在所述非易失存储器中的适当位置的休眠信息的一部分的处理。举个例子,在一些实施例中,休眠信息可以保存在被称为休眠文件(例如图1和2的hiberfile 108)的组件中。为了经由多个阶段来恢复计算设备,hiberfile 108可以独立存储要在每一个恢复阶段中恢复的信息。举个例子,如图2所示,要在第一阶段中恢复的信息可以保存在hiberfile 108的第一部分112中。要在第二阶段恢复的信息可以保存在hiberfile 108的第二部分114中。
接下来,在方框306,可以从休眠文件中读取休眠信息的第一部分(例如hiberfile 108的第一部分112)。可以在计算设备上运行引导级恢复加载器,以便控制将休眠信息从非易失存储器传送到计算设备的操作存储器的处理。
作为从非易失存储器104中读取休眠信息的第一部分的结果,在方框308,在易失存储器102中可以恢复休眠信息的第一部分的内容。从休眠中恢复的处理的第一阶段309包括方框304-308的处理,其中所述第一阶段有可能需要恢复足以通过操作系统来完成恢复处理的操作系统核心的一部分。
相应地,处理300可以继续至方框310,在那里可以在操作系统的核心中运行恢复加载器,作为核心级恢复加载器(例如图1和2的核心级恢复加载器122)。
将控制权转移到核心级恢复加载器的处理可以采用任何适当的方式进行。例如,作为阶段1中部分恢复状态的结果,核心级恢复加载器可以保存在预先定义的存储位置。引导级恢复加载器可以促使分支跳转到这些位置以便转移控制权。由此,作为补充或替换,其他机制也是可以使用的。例如,在运行了第一阶段之后,核心级恢复加载器的活动存储器中的位置可以记录在与休眠信息相关联的元数据中,并且引导级加载器可以被配置成读取该元数据并分支跳转到恰当位置。作为另一种可能性,引导级加载器可以从休眠信息之外的其他来源加载核心级加载器,然后开始运行所述核心级加载器。
在方框312,核心级恢复加载器可以控制从非易失存储器中读取休眠信息的第二部分的处理。该信息可以包括关于计算系统在休眠时的状态的信息。在方框314,在易失存储器102中可以恢复休眠信息的第二部分的内容。结果,计算系统在休眠时的状态可以传送到易失存储器102中,从而完全从休眠中恢复计算设备。因此,对于包含方框310-314的处理的从休眠中恢复的处理的第二阶段315可以完成所述从休眠中恢复的处理。
应该意识到的是,即使图3的从休眠中恢复的处理包含了两个阶段309和315,依照一些实施例的从休眠中恢复的处理也可以包括两个以上的恢复阶段。在这样的场景中,每一个恢复阶段可以恢复和/或建立足以进一步恢复计算设备的资源。这种从休眠中递增恢复的处理最终会导致完全恢复计算设备。
在一些实施例中,完成从休眠中恢复的处理的恢复阶段是在具有更丰富的资源集合的环境中实现的。举例来说,该环境可以包括操作系统环境(例如图1和2的操作系统环境116)。这种环境可以为多个处理器提供支持,其中所述处理器可以访问从非易失存储器传送到适当存储介质(例如图2的共享缓存器206)的休眠信息。共享缓存器206可以包括能被参与在易失存储器中恢复休眠信息的一个或多个部分(例如保存在hiberfile 108的第二部分114)的内容的多个处理器中的每一个访问的存储位置。
单个处理器(例如图2的处理器202)可以从非易失存储器中读取休眠信息的第二部分,并且借助同步盘I/O操作来将该信息记录到共享缓存器中。在单个处理器从非易失存储器中读取休眠信息的第二部分的同时,其他处理器(例如图2的处理器204)可以访问和检索记录在共享缓存器中的休眠信息。
为了有效使用存储器资源,休眠信息可以采用压缩形式保存在非易失存储器中。由此,访问和检索记录在共享缓存器中的信息的多个处理器可以解压缩检索到的信息,并且将解压缩的信息移动到易失存储器。通过由多个处理器来从共享缓存器中检索和解压缩休眠信息,可以提高重新创建计算设备的目标状态的速度。
在从休眠中恢复的过程中,每一个阶段都可以建立用于另一个阶段的环境。例如,包含恢复计算设备操作系统核心的一部分的阶段可以建立一个具有更丰富的资源集合的环境,例如操作系统环境。这种环境可以包括对于多个处理器的支持。
图4示意性示出了计算设备100的操作系统环境116所支持的多个处理器的操作。举例来说,方框402包括受核心级加载器122的一部分控制的处理。核心级恢复加载器122可以控制传送来自休眠文件一部分的信息的处理。在这里示出的示例中,该部分包括hiberfile 108的部分114。在一些实施例中,方框402的处理可以由单个处理器执行,例如计算设备(图2)的多个处理器106中的处理器202。
方框404和406中的每一个都示出了由多个处理器106中的一个或多个其他处理器(例如图2的处理器204)执行的处理。在一些实施例中,方框404和406的处理可以与方框402的处理同时执行。
图4所示的处理可以在任何适当的时间开始进行。在其中一个恢复阶段期间,该处理可以作为从休眠中恢复的处理的一部分来发起。例如,它可以是在完成了所述恢复处理中恢复了足以完成所述恢复的操作系统资源的在先阶段的时候发起的。
图4示出了方框402可以包括方框408,其中在方框408,处理器202可以读取休眠信息的第二部分的分段。然后,在方框410,所述分段可以记录在共享缓存器中(例如图2的共享缓存器206)。接下来,在判定框412中可以确定是否还有要被传送到共享缓存器的休眠信息可用。如果在判定框412确定休眠信息可用,则方框402的处理可以分支跳转回到方框408,在那里可以从非易失存储器中读取休眠信息的另一个分段。如果在判定框412确定没有其他休眠信息可用,那么方框402的处理可以结束。处理器202可以借助同步输入/输出(I/O)操作来从非易失存储器中读取休眠信息的第二部分的分段。
方框404包括由处理器204中的处理器执行的处理。在方框414,该处理器可以访问共享缓存器。接下来,在判定框416,该处理器可以确定在共享缓存器中是否有休眠信息的第二部分的一个或多个分段可用。当在判定框416中确定在共享缓存器中有至少一个分段可用时,这表明借助方框402的处理在共享缓存器中记录了休眠信息的至少一部分,处理器可以从共享缓存器中检索分段。
然后,在方框420,检索到的分段可被解压缩。计算设备中的任何适当的组件都可以存储由所述处理器运行来解压缩所述信息的计算机可执行指令。适当的解压缩算法可以是基于所使用的压缩算法来选择的,其中所使用的压缩算法在与存储了指示所使用压缩的特性的参数值的休眠信息相关联的元数据中被标识。
在方框422,解压缩的信息可被传送到操作存储器。所述信息被送抵的易失存储器中的位置可以作为元数据与休眠文件中的信息记录在一起。
当确定所述信息在共享缓存器中不可用时,处理器可以返回到方框414,在那里所述处理器可以再次访问共享缓存器。这种在其中处理器可以不断检查休眠信息的第二部分的分段在共享文件中的存在性的操作可以称为忙等待。如图4中的箭头421所示,方框402和404的处理可以同时执行。在这种实施例中可以使用某种信令机制来仲裁由哪一个处理器处理共享缓存器中的每一个分段。在一些实施例中,可以使用用于多处理器计算机的操作系统所支持的上下文切换机制。然而在图示实施例中,图4示出的处理是在已经恢复了操作系统的任何部分的环境中进行的。相应地,上下文切换是不可用的,可以使用更简单的系统,例如信号量(semaphore)。
方框406的处理包括与方框404的相应方框414、416、418、420和421执行相同操作的方框415、417、419、421和423。来自处理器204且不同于执行方框404的处理的处理器的另一个处理器可以执行方框406的处理。方框406是为了出于例证目的描述的,其例证的是多个处理器可以如箭头425显示的那样同时执行对共享文件的访问,并且如果信息在共享文件中是可用的,则读取和解压缩所述信息,然后将其移动回到操作存储器。
应该意识到的是,在从休眠中恢复的期间不同的处理可以由处理器204作为恢复计算设备目标状态的处理的一部分来执行。
图5示出了根据本发明一些实施例的计算设备进入休眠模式的处理500。处理500可以在任何适当的时间开始进行。例如,该处理可以在接收到指令计算设备休眠的适当用户输入的时候开始。虽然在图5中没有显示,但是包括本领域已知类型的处理在内的不同或附加的处理都是可以执行的。例如,在写休眠信息之前可以收集每一个处理器的状态(例如堆栈指针、寄存器计数器等等),并且该状态可以作为用于要在第一阶段中恢复的休眠信息的元数据的一部分来保存。
在一些实施例中,为了分多个阶段来实现从休眠中恢复的处理,来自操作存储器且将在每一个恢复阶段被恢复的信息可以被独立记录。因此,可以将所述休眠信息分区,从而使得为每一个先前阶段记录的信息在被移动回到操作存储器的时候,建立用于后续阶段的环境。
无论以何种方式发起处理500,在方框502,该处理都可以确定易失存储器中的第一信息以便记录在诸如休眠文件(例如图1的hiberfile 108)之类的休眠信息中的第一部分中。举例来说,这种第一信息可以是易失存储器102中的状态信息120(图1)。
第一信息可以采用任何适当的方式确定,并且可以包括将会在从休眠中恢复的处理的第一恢复阶段中恢复的信息。选择该信息,从而使得所述信息在恢复过程中被移动回到操作存储器时建立用于后续恢复阶段的环境。
在一些实施例中,计算设备休眠时的状态可以用于确定为每一个恢复阶段记录什么信息。在一些实施例中,通过用关于要被恢复的操作系统的组件集合的信息来编程休眠实用工具132,以便执行所述恢复处理的第二阶段。在该场景中,休眠实用工具132可以通过识别分配给这些组件或是这些组件使用中的任何活动存储器页面来识别第一部分。然而任何适当的技术都可以用于识别第一部分。识别所述内容的信息可以作为元数据来记录,例如记录在休眠文件108的报头110中。
在一些实施例中,恢复处理的第一阶段可以建立用于第二阶段的环境。在结合图1和2示出的示例中,第二阶段可以在支持多个处理器的操作系统环境116中运行。由此,第一恢复阶段可以恢复足够数量的处理器状态,以使使得所述处理器能在第二阶段期间读取和解压缩休眠信息。
在一些实施例中,休眠信息的第一部分中的第一信息可以采用压缩方式保存。由此,接下来在方框504,在方框502中确定的第一信息可以使用第一压缩算法来压缩。如结合图6A和6B论述的那样,用于压缩第一信息的压缩算法可以是基于要被用于访问第一部分来将第一信息存入操作存储器的计算设备的至少一个组件的能力而动态选择的。与休眠信息一起保存的元数据可以包括用于指示第一压缩算法的特性的参数值。
应该意识到的是,在一些实施例中,第一信息可以不必以压缩形式保存在休眠信息的第一部分中。在这样的实施例中,方框504的处理可被省略,并且处理500可以将未压缩的第一信息保存在休眠信息的第一部分中。
在方框506,经过压缩的第一信息可以记录在非易失存储器中的hiberfile的第一部分中。
然后,处理500可以继续进行至方框508,在那里该处理可以确定易失存储器中的第二信息以便记录在休眠信息的第二部分中。第二信息的示例包括易失存储器102中的状态信息 21(图1)。记录在休眠信息的第二部分中的第二信息可以是与记录在休眠信息的第一部分中的第一信息分开记录的。
在第二恢复阶段,记录在休眠信息的第二部分中的第二信息将会使用在第一阶段中恢复的信息恢复。在这个示例中,第一阶段可以通过恢复操作系统核心的一部分来部分恢复计算设备。之后,在第二阶段中可以使用操作系统核心的已恢复部分在具有更丰富的资源集合的操作系统环境中恢复计算设备的硬件资源和目标状态。
在方框508,第二信息可以是用任何适当的方式确定的,因为本发明的实施例在这个方面是不受限制的。举例来说,第二信息可以包括计算设备在休眠时的状态。
接下来,在方框510,第二信息可被压缩。如结合图6A和6B所述,适当的第二压缩算法是可以动态选择的。所述第二压缩算法可以不同于用以压缩保存在休眠信息的第一部分中的第一信息的第一压缩算法。与休眠信息一起保存的元数据可以包括指示第二压缩算法的特性的参数值。
在方框512,经过压缩的第二信息可被记录在hiberfile的第二部分。在将休眠信息记录到非易失存储器时,计算设备的硬件可以断电,由此,所述硬件在计算设备休眠的时候不会消耗电力。然后,处理500可以结束。
如上所述,一些或所有休眠信息可以采用压缩形式记录在计算设备的非易失存储器中。压缩休眠信息可以减少从休眠模式中恢复计算设备所耗费的时间。但是,对于恢复处理速度的影响有可能取决于相对于计算时间的存储器访问时间。相应地,在非易失存储器很慢或是具有强大的处理能力可用的时候,压缩处理将会是非常有用的。
在一些实施例中,适当的压缩算法可被动态选择,以便压缩休眠信息。压缩算法可以是基于多个不同标准选择的,例如计算设备的处理器能力和盘I/O。举个例子,压缩算法可以是在计算设备中基于处理器的数量和处理速度以及基于盘的I/O速度而被选择的。
在一些实施例中,在各个恢复阶段中被移动回到操作存储器的休眠信息的一个以上的部分可以采用压缩形式来记录。在这样的情形中,不同的压缩算法可被选择,以便压缩保存在休眠信息的不同部分的信息。由于不同的恢复阶段可以在不同的环境中执行,因此,在不同的阶段可以使用计算设备的不同资源。由此,可以动态选择压缩算法,以便基于计算设备在各个恢复阶段可用的资源来压缩保存在休眠信息的区段中的信息。
压缩算法可以是基于在有更多处理能力可用时使用更大压缩度的标准来选择的。在针对保存了休眠信息的盘或其他非易失存储器的访问时间较慢的时候,该标准也可以偏向于更大的压缩度。图6A和6B示出了两个根据一些实施例来动态选择压缩算法的示例。压缩算法可以是在休眠时以及在当计算设备的适当组件(例如图1和2的休眠实用工具132)确定将什么信息作为休眠信息加以保存、如何划分休眠信息以及在从休眠中恢复的每一个阶段有什么计算设备可用的时候选择的。
图6A显示了在处理600的方框602中,为了选择压缩算法,可以首先评估计算设备中的处理器的能力。接下来,在判定框604中可以确定处理器的数量和速度是否超出某个阈值。该阈值可以是采用任何适当的方式确定的。例如,操作系统可以访问硬件信息来确定计算设备中需要的怎样的处理能力。应该意识到的是,在方框604中仅仅通过举例显示了评估处理器的数量和速度。任何适当的处理器性能特性都是可以评估的,因为实施例在这个方面是不受限制的。
当在判定框604中确定处理器的数量和速度处于或者超出阈值时,处理600可以分支跳转到方框606,在那里可以选择具有较高压缩度的压缩算法。作为替换,当在判定框604中确定处理器的速度和数量低于阈值时,处理600可以分支跳转到方框608,在那里可以选择具有较低压缩度的压缩算法。
图6B示出了根据一些实施例来动态选择压缩算法的技术的另一个示例。在这个示例中,压缩算法可以是在计算设备中基于处理器的能力(例如数量和处理速度)以及基于盘的I/O速度而被选择的。
如图6B所示,处理700可以始于可以对盘I/O速度以及诸如处理器数量和速度之类的处理器能力或是其他任何适当的处理器特性进行评估的方框702。接下来,当在判定框704中确定盘速度I/O快于处理器时,处理700可以分支跳转到可以选择具有较高压缩度的压缩算法的方框706。如果在判定框704确定盘速度I/O不快于处理器,那么处理700可以分支跳转到可以选择具有较低压缩度的压缩算法的方框708。
在一些实施例中,与休眠信息一起保存的元数据可以包括指示所使用的压缩的特性的参数值。由此,在从休眠中恢复的过程中,恰当的解压缩算法可以是基于这些参数值而被选择的。由于可以为休眠信息的各部分使用不同的压缩算法,因此,在恢复阶段可以使用各种不同的解压缩算法来解压缩信息。
应该意识到的是,压缩算法可以是基于任何适当的标准选择的,因为本发明的实施例在这个方面是不受限制的。例如,可以考虑要压缩的信息量。
应该意识到的是,图6A和6B示出了用于选择压缩算法的简单方法。在每一种情况中,选择都是基于单个标准而在两个压缩算法之间做出的。在其他实施例中,可以基于同时考虑的多个标准在两个以上的算法之间做出选择。例如,对于计算设备被配置成使用的每一种算法来说,在给出了检测到的计算设备的硬件的情况下,恢复时间或恢复速率都是可以计算的。可以选择具有最快时间或速率的算法。
图7示出了其上可以实现本发明的适当计算系统环境800的示例。计算系统环境800仅仅是适当的计算环境的一个示例,其并不打算暗示任何对本发明的使用或功能的范围的限制。计算环境800也不应该被解释成具有与在例示操作环境800中示出的任一组件或组件组合相关联的任何依赖性或要求。
本发明可以与众多的其他通用或专用计算系统环境或配置一起操作。适合与本发明一起使用的众所周知的计算系统、环境和/或配置的示例包括但不局限于个人计算机、服务器计算机、手持或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费类电子设备、网络PC、小型计算机、大型计算机、包含了上述系统或设备中任何一个的分布式计算环境等等。
该计算环境可以执行计算机可执行指令,例如程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明还可以在由那些通过通信网络连接的远程处理设备执行任务的分布式计算环境中实施。在分布式计算环境中,程序模块可以位于本地和远程计算机存储媒体上,其中包括存储器存储设备。
参考图7,用于实现本发明的例示系统包括计算机810形式的通用计算设备。计算机810的组件可以包括但不局限于处理单元820、系统存储器830以及将包括系统存储器在内的各种不同系统组件耦合到处理单元820的系统总线821。系统总线821可以是若干种总线结构中的任何一种,其中包括存储器总线或存储器控制器、外设总线以及使用了多种总线架构中的任何一种的本地总线。作为示例而不是限制,这种架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线以及也被称为夹层(Mezzanine)总线的外设组件互连(PCI)总线。
计算机810通常包括了多种计算机可读媒体。计算机可读媒体可以是能被计算机810访问的任何可用媒体,并且同时包括易失和非易失媒体,可移除和不可移除媒体。作为示例而不是限制,计算机可读媒体可以包括存储媒体和通信媒体。计算机存储媒体同时包括用于存储计算机可读指令、数据结构、程序模块或其他数据之类的信息的通过任何方法或技术实现的易失和非易失、可移除和不可移除媒体。计算存储媒体包括但不局限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多用途盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或是其他任何可以用于存储期望信息并能被计算机810访问的介质。通信媒体通常包含诸如载波或其他传输机制之类的已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据,并且包含了任何信息递送媒体。术语“调制数据信号”指的是这样一种信号,其中该信号的一个或多个特性以一种在信号中编码信息的方式被设置或改变。作为示例而不是限制,通信媒体包括有线网络或直接线路连接之类的有线媒体,以及无线媒体,例如声学、RF、红外及其他无线媒体。上述各项的任何组合同样应该包含在计算机可读媒体的范围以内。
系统存储器830包括采用易失和/或非易失存储器形式的计算机存储媒体,例如只读存储器(ROM)831和随机存取存储器(RAM)832。基本输入/输出系统833(BIOS)包含例如在启动过程中帮助在计算机810内部的元件之间传送信息的基本例程,该系统通常被存储在ROM 831中。RAM 832通常包括可以由处理单元820直接访问和/或即时操作的数据和/或程序模块。作为示例而不是限制,图7示出了操作系统834、应用程序835、其他程序模块836以及程序数据837。
计算机810还可以包括其他的可移除/不可移除、易失/非易失计算机存储媒体。仅仅作为示例,图7示出了读取或写入不可移除的非易失磁媒体的硬盘驱动器840,读取或写入可移除的非易失磁盘852的磁盘驱动器851,以及读取或写入CD-ROM或其他光媒体之类的可移除的非易失光盘856的光盘驱动器855。硬盘驱动器840 可以被实现为包含了一个或多个能够读写磁媒体的磁头的旋转磁介质。能在例示操作环境中使用的其他的可移除/不可移除、易失/非易失计算机存储媒体包括但不局限于磁带盒、闪存卡、数字多用途盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器841通常经由接口840之类的不可移除存储器接口连接到系统总线821,并且磁盘驱动器851和光盘驱动器855通常通过接口850之类的可移除存储器接口连接到系统总线821。
在上文中论述并在图7中示出的驱动器以及与之关联的计算机存储媒体为计算机810提供计算机可读指令、数据结构、程序模块以及其他数据的存储。例如在图7中,硬盘驱动器841被例证成存储操作系统844、应用程序845、其他程序模块846以及程序数据847。应该指出的是,这些组件与操作系统834、应用程序835、其他程序模块836以及程序数据937可以是相同或不同的。在这里给予操作系844、应用程序845、其他程序模块846以及程序数据847不同的数字来例证它们至少是不同拷贝。用户可以通过输入设备将命令和信息输入计算机810,所述输入设备例如是键盘862和通常被称为鼠标、轨迹球或触摸板的指示设备861。其他输入设备(未显示)可以包括麦克风、摇杆、游戏板、碟式卫星天线、扫描仪等等。这些和其他输入设备通常通过与系统总线相连的用户输入接口860连接到处理单元820,但是也可以通过其他接口和总线结构来连接,例如并行端口、游戏端口或通用串行总线(USB)。监视器891或其他类型的显示设备也经由诸如视频接口890之类的接口连接到系统总线821。除了监视器之外,计算机还可以包括可以通过输出外设接口895连接的其他外设输出设备,例如扬声器897和打印机896。
计算机810可以使用与诸如远程计算机880之类的一个或多个远程计算机相连的逻辑连接而在联网环境中操作。远程计算机880可以是个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常包括在上文中相对于计算机810描述的众多或所有元件,但在图7中只示出了存储器存储设备881。图7描述的逻辑连接包括局域网(LAN)871和广域网(WAN)873,但是也可以包括其他网络。这些联网环境在办公室、企业级计算机网络、内部网以及因特网中是很普通的。
当在LAN联网环境中使用时,计算机810通过网络接口或适配器870连接到LAN 871。当在WAN联网环境中使用时,计算机810通常包括调制解调器872或是用于在因特网之类的WAN 873上建立通信的其他装置。调制解调器872可以处于内部或外部,它可以经由用户输入接口860或其他恰当机制连接到系统总线821。在联网环境中,相对于计算机810描述的程序模块或是其某些部分可以保存在远程存储器存储设备中。作为示例而不是限制,图7示出了驻留在存储器设备881上的远程应用程序885。应该意识到的是,所显示的网络连接是例示性的,用于在计算机之间建立通信链路的其他装置也是可以使用的。
在这样描述了本发明至少一个实施例的若干个方面之后,可以意识到的是,对本领域技术人员来说,不同的替换、修改和改进都是很容易想到的。
例如,所描述的是根据一些实施例的计算设备可以包括多个处理器。由于恢复处理可以在支持多个处理器的操作系统环境中完成,因此,通过在操作系统环境中进行的恢复阶段期间使用这些处理器,可以提高计算设备从休眠中恢复的速度。然而应该意识到,计算设备可以包括单个处理器。即使在这种场景中,使用异步访问也可以加速恢复,这是因为在I/O操作处于未决状态等待从非易失存储器中读取休眠信息的另一个分段的时候,处理器可以基于休眠信息分段而在某个间隔中执行处理以恢复计算设备的状态。
任何适当的技术都可以用于确定要在休眠信息的每一个部分中存储哪些信息,因为本发明的实施例在这个方面并不受限制。此外,这些实施例并不受限于用以确定同时压缩休眠信息的第一和第二部分还是只压缩其中一部分的方式。压缩算法和相应的解压缩技术可以是以任何适当的方式选择的。
还应该意识到的是,虽然在这里描述了从休眠中恢复的两个阶段,但是所述恢复可以借助任何适当数量的阶段进行,因为本发明在这个方面是不受限制的。每一个阶段都可以将计算设备恢复到可以恢复下一个阶段的点上。所述恢复处理可以采用任何适当的方式分成阶段。
这种替换、修改和改进都预定是本公开的一部分,并且预定将处于本发明的精神和范围以内。相应地,之前的描述和附图都仅仅是作为示例的。
本发明的上述实施例可以采用多种方式中的任何一种来实现。例如,这些实施例可以使用硬件、软件或是其组合来实现。当在软件中实现时,软件代码可以在任何适当的处理器或处理器集合上运行,无论所述处理器是在单个计算机中提供还是分布在多个计算机中。此类处理器可以作为集成电路来实现,其中一个或多个处理器处于集成电路组件中。然而,处理器也可以使用任何适当格式的电路来实现。
此外还应该意识到,计算机可以采用多种形式来实现,例如安装在机架上的计算机、台式计算机、膝上计算机或平板计算机。此外,计算机可以被嵌入在通常不被视为计算机但却具有适当处理能力的设备中,包括个人数字助理(PDA)、智能电话或是其他任何适当的便携或固定电子设备。
此外,计算机还可以具有一个或多个输入和输出设备。这些设备尤其可以用于引入一个用户接口。可用于提供用户接口的输出设备的示例包括用于视觉呈现输出的打印机或显示屏,或是用于音频呈现输出的扬声器或其他声音生成设备。可用于用户接口的输入设备的示例包括键盘和指示设备,例如鼠标、触摸板和数字化平板。另举一例,计算机可以通过语音识别或其他音频格式来接收输入信息。
此类计算机可以由一个或多个网络采用任何适当的形式互连,其中包括局域网或广域网,例如企业网或因特网。此类网络可以基于任何适当的技术,并且可以依照任何适当的协议操作,以及可以包括无线网络、有线网络或光纤网络。
此外,这里概述的各种不同方法或处理可以编码成能在使用了多种操作系统或平台中任何一个的一个或多个处理器上运行的软件。另外,此类软件可以采用多种适当的编程语言和/或编程或脚本工具撰写,并且还可以编译成是在主机或虚拟机上运行的可执行机器语言代码或中间代码。
在这个方面,本发明可以作为使用一种或多种程序编码的计算机可读存储介质(或多个计算机可读媒体)(例如计算机存储器,一个或多个软盘,紧凑型碟片,光盘,数字视频盘(DVD),磁带,闪速存储器,现场可编程门阵列或其他半导体设备中的电路配置,或其他非瞬态、有形计算机存储介质)来实现,其中当在一个或多个计算机或其他处理器上运行所述程序时,所述程序将会执行实现上述本发明的各种不同实施例的方法。计算机可读存储介质或媒体是可运输的,由此,其上保存的一个或多个程序可被加载到一个或多个不同计算机或其他处理器上,以便实现如上所述的本发明的各个不同方面。这里使用的术语“非瞬态计算机可读存储介质”仅仅包括可被视为制造产品(即制品)或机器的计算机可读介质。作为替换或补充,本发明可以作为计算机可读存储介质之外的计算机可读介质来实施,例如传播信号。
这里使用的术语“程序”或“软件”在一般意义上被用来指可以用于对计算机或其他处理器进行编程,以便实现如上所述的本发明的各个不同方面的任何类型的计算机代码或计算机可执行指令集合。此外还应该意识到,根据本发明的一个方面,在运行时执行本发明方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以采用模块化的形式分布在多个不同的计算机或处理器之中,以便实现本发明的各个不同方面。
计算机可执行指令可以采用多种形式由一个或多个计算机或其他设备运行,例如程序模块的形式。一般来说,程序模块包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等等。通常,在各种不同的实施例中可以根据需要来组合或分布程序模块的功能。
此外,数据结构可以采用任何适当的形式存入计算机可读媒体。为了易于例证,数据结构可被显示成具有通过在数据结构中的位置相关联的字段。这种关联同样可以通过为字段的存储分配计算机可读介质中传递字段之间关系的位置来实现。但是,任何适当的机制均可用于在数据结构的字段中的信息之间建立关联,这其中包括通过使用在数据元素之间建立关联的指针、标签或其他机制。
本发明的各个不同方面既可以单独使用,也可以组合使用,还可以采用上述实施例中没有具体论述的多种安排使用,由此,本发明各个方面的应用并不仅限于如上所述或是在附图中例证的组件的细节和安排。例如,在一个实施例中描述的方面可以采用任何方式与其他实施例中的方面相结合。
此外,本发明可以作为方法来实现,并且在这里已经提供了关于所述方法的一个示例。作为方法一部分执行的操作可以采用任何适当的方式排序。相应地,在这里可以构造以与所例证的顺序不同的顺序来执行操作的实施例,其中所述实施例可以包括同时执行某些操作,即使这些操作在说明性实施例中被显示成是连续操作。
在权利要求中使用了“第一”、“第二”、“第三”等顺序术语来修饰权利要求要素其本身并不意味着一个权利要求要素相对于另一个要素的任何优先级、优先权、顺序或是执行方法操作的时间顺序,而是仅仅用作标签以便将具有某个名称的权利要求要素与另一个具有相同名称(如果没有使用顺序术语)的要素区分开来,以便区分所述权利要求元素。
此外,这里使用的措辞和术语是用于描述目的地的,而不应该将其视为限制。这里使用的“包括”、“包含”或者“具有”“含有”、“涉及”及其不同变体意味着包含了其后列举的项目及其等价物和附加项目。

Claims (8)

1.一种操作包括多个处理器的计算设备的方法,该方法包括:
通过从非易失存储器中检索第一休眠信息来恢复计算设备的操作系统的第一部分,从休眠模式中部分恢复计算设备;以及
使用操作系统的已恢复的第一部分来从非易失存储器中检索第二休眠信息,以便恢复计算设备的操作系统的第二部分和恢复计算设备在进入休眠模式时的状态,其中操作系统的第二部分包括多处理器支持;并且
其中,从非易失存储器检索第二休眠信息利用在检索操作系统的第一部分时计算环境中不支持的处理器之一。
2.权利要求1的方法,还包括:以压缩形式将第二休眠信息保存在非易失存储器中。
3.权利要求2的方法,其中:
恢复计算设备在进入休眠模式时的状态包括:从非易失存储器中读取经过压缩的第二休眠信息的第一部分,以及将经过压缩的第二休眠信息的第一部分记录到缓存器中;以及
当在缓存器中记录经过压缩的第二休眠信息的第一部分时,从缓存器中检索第二压缩休眠信息的第一部分,以及在从非易失存储器中读取经过压缩的第二休眠信息的第二部分的同时,解压缩经过压缩的第二休眠信息的第一部分。
4.权利要求3的方法,其中:
从缓存器中检索和解压缩经过压缩的第二休眠信息的第一部分的处理是由所述多个处理器中的第一处理器执行的;以及
从非易失存储器中读取经过压缩的第二休眠信息的第二部分的处理是由所述多个处理器中的第二处理器执行的。
5.权利要求1的方法,其中:
部分恢复计算设备包括:在计算设备的预操作系统环境中运行恢复加载器;以及
所述操作系统的所述第一部分包括计算设备的操作系统中的核心加载器。
6.一种操作包括多个处理器的计算设备的系统,包括:
易失存储介质;
包含休眠信息的非易失存储介质,所述休眠信息包括:
第一部分;
第二部分,以及
识别第一部分和第二部分的报头信息;以及
固件,包括:
在被运行时实现第一恢复加载器以便基于第一部分将休眠信息保存在易失存储介质中的计算机可执行指令;
其中第一部分包括计算机可执行指令的表示,所述指令在被运行时实现第二恢复加载器,以便基于第二部分来将休眠信息保存在易失存储介质中;并且
其中休眠信息的第一部分包括用于恢复计算设备的操作系统的一部分的数据,该计算设备包括多于一个处理器,并且其中实现第二恢复加载器包括利用在从非易失存储介质中检索休眠信息的第一部分时计算环境中不支持的处理器之一来从非易失存储介质中检索休眠信息的第二部分。
7.权利要求6的系统,其中:
第二部分是以压缩形式保存在非易失存储介质中的。
8.权力要求7的系统,其中第二恢复加载器恢复系统在休眠时的状态,所述恢复包括,利用多个处理器:
由多个处理器中的第一处理器从非易失存储介质中读取经过压缩的第二部分的分段,以及将经过压缩的第二部分的分段记录在缓存器中;以及
从缓存器中检索第二部分的分段以及解压缩所述经过压缩的分段。
CN201210043344.1A 2011-02-24 2012-02-24 从休眠中多阶段恢复 Active CN102708064B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US13/034,480 2011-02-24
US13/034,480 US8694764B2 (en) 2011-02-24 2011-02-24 Multi-phase resume from hibernate
US13/034480 2011-02-24
US13/037,272 2011-02-28
US13/037272 2011-02-28
US13/037,272 US8533449B2 (en) 2011-02-24 2011-02-28 Multi-phase resume from hibernate

Publications (2)

Publication Number Publication Date
CN102708064A CN102708064A (zh) 2012-10-03
CN102708064B true CN102708064B (zh) 2016-12-14

Family

ID=46719817

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210043344.1A Active CN102708064B (zh) 2011-02-24 2012-02-24 从休眠中多阶段恢复

Country Status (6)

Country Link
US (3) US8694764B2 (zh)
EP (1) EP2678775A4 (zh)
JP (1) JP5911892B2 (zh)
KR (1) KR20140014146A (zh)
CN (1) CN102708064B (zh)
WO (1) WO2012161777A2 (zh)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US8464183B2 (en) * 2010-06-03 2013-06-11 Hewlett-Packard Development Company, L.P. System and method for distinguishing multimodal commands directed at a machine from ambient human communications
US11449394B2 (en) 2010-06-04 2022-09-20 Commvault Systems, Inc. Failover systems and methods for performing backup operations, including heterogeneous indexing and load balancing of backup and indexing resources
US8694764B2 (en) * 2011-02-24 2014-04-08 Microsoft Corporation Multi-phase resume from hibernate
KR101813641B1 (ko) * 2011-11-15 2018-01-02 에스프린팅솔루션 주식회사 화상형성장치 및 하이버네이션 기능을 갖는 화상형성장치를 부팅하는 방법
US9069551B2 (en) * 2011-12-22 2015-06-30 Sandisk Technologies Inc. Systems and methods of exiting hibernation in response to a triggering event
US9389673B2 (en) 2011-12-22 2016-07-12 Sandisk Technologies Inc. Systems and methods of performing a data save operation
US9092150B2 (en) 2011-12-22 2015-07-28 Sandisk Technologies Inc. Systems and methods of performing a data save operation
US8914594B2 (en) 2011-12-22 2014-12-16 Sandisk Technologies Inc. Systems and methods of loading data from a non-volatile memory to a volatile memory
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9383812B2 (en) * 2012-09-28 2016-07-05 Intel Corporation Method and apparatus for efficient store/restore of state information during a power state
US9904559B2 (en) * 2012-10-25 2018-02-27 Canon Kabushiki Kaisha Information processing apparatus and activation method therefor for processing data of a hibernation image
JP2014106546A (ja) * 2012-11-22 2014-06-09 Mitsubishi Electric Corp レジューム方法及び情報処理装置
US20140181038A1 (en) 2012-12-21 2014-06-26 Commvault Systems, Inc. Systems and methods to categorize unprotected virtual machines
US9223597B2 (en) * 2012-12-21 2015-12-29 Commvault Systems, Inc. Archiving virtual machines in a data storage system
US9703584B2 (en) 2013-01-08 2017-07-11 Commvault Systems, Inc. Virtual server agent load balancing
US20140201162A1 (en) 2013-01-11 2014-07-17 Commvault Systems, Inc. Systems and methods to restore selected files from block-level backup for virtual machines
CN103136043B (zh) * 2013-01-28 2016-05-25 华为技术有限公司 一种异步io的迁移方法、系统和网络节点
US20140237475A1 (en) * 2013-02-15 2014-08-21 Apple Inc. Sleep/wake with suppression and donated importance
US9239610B2 (en) * 2013-02-28 2016-01-19 Sandisk Technologies Inc. Systems and methods for managing data in a system for hibernation states
US9641378B1 (en) * 2013-03-12 2017-05-02 Western Digital Technologies, Inc. Adjustment of compression ratios for data storage
US20150074536A1 (en) 2013-09-12 2015-03-12 Commvault Systems, Inc. File manager integration with virtualization in an information management system, including user control and storage management of virtual machines
US9600369B2 (en) 2013-12-10 2017-03-21 Huawei Technologies Co., Ltd. Operating system recovery method and apparatus, and terminal device
CN103729211B (zh) * 2013-12-10 2017-08-04 华为技术有限公司 一种操作系统恢复方法、装置及终端设备
WO2015089488A1 (en) 2013-12-12 2015-06-18 Memory Technologies Llc Channel optimized storage modules
JP6399916B2 (ja) * 2014-01-20 2018-10-03 キヤノン株式会社 情報処理装置およびその制御方法
US9811427B2 (en) 2014-04-02 2017-11-07 Commvault Systems, Inc. Information management by a media agent in the absence of communications with a storage manager
CN106258006A (zh) * 2014-04-29 2016-12-28 惠普发展公司,有限责任合伙企业 使用状态信息恢复系统
US20160019317A1 (en) 2014-07-16 2016-01-21 Commvault Systems, Inc. Volume or virtual machine level backup and generating placeholders for virtual machine files
US9417968B2 (en) 2014-09-22 2016-08-16 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
US9436555B2 (en) 2014-09-22 2016-09-06 Commvault Systems, Inc. Efficient live-mount of a backed up virtual machine in a storage management system
US9710465B2 (en) 2014-09-22 2017-07-18 Commvault Systems, Inc. Efficiently restoring execution of a backed up virtual machine based on coordination with virtual-machine-file-relocation operations
CN107077117B (zh) * 2014-10-29 2019-10-01 西门子公司 基于上下文知识的自动压缩算法选择和参数调节
US10776209B2 (en) 2014-11-10 2020-09-15 Commvault Systems, Inc. Cross-platform virtual machine backup and replication
US9983936B2 (en) 2014-11-20 2018-05-29 Commvault Systems, Inc. Virtual machine change block tracking
US9632562B2 (en) 2014-11-20 2017-04-25 Qualcomm Incorporated Systems and methods for reducing volatile memory standby power in a portable computing device
EP3201763A4 (en) * 2015-01-29 2018-07-11 Hewlett-Packard Development Company, L.P. Resuming a system-on-a-chip device
CN106332241A (zh) * 2015-06-29 2017-01-11 苏州简约纳电子有限公司 物理层和上层的同步方法
US10055236B2 (en) * 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
CN107015847A (zh) * 2016-01-28 2017-08-04 扬智科技股份有限公司 电子装置及其工作模式切换方法
US10592350B2 (en) 2016-03-09 2020-03-17 Commvault Systems, Inc. Virtual server cloud file system for virtual machine restore to cloud operations
US10747630B2 (en) 2016-09-30 2020-08-18 Commvault Systems, Inc. Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including operations by a master monitor node
US10152251B2 (en) 2016-10-25 2018-12-11 Commvault Systems, Inc. Targeted backup of virtual machine
US10162528B2 (en) 2016-10-25 2018-12-25 Commvault Systems, Inc. Targeted snapshot based on virtual machine location
US20180131749A1 (en) * 2016-11-10 2018-05-10 Ingram Micro Inc. System and Method for Optimizing Data Transfer using Selective Compression
US10678758B2 (en) 2016-11-21 2020-06-09 Commvault Systems, Inc. Cross-platform virtual machine data and memory backup and replication
CN108459882B (zh) * 2017-02-21 2022-04-05 佳能株式会社 电子设备及其控制方法
US10896100B2 (en) 2017-03-24 2021-01-19 Commvault Systems, Inc. Buffered virtual machine replication
US10387073B2 (en) 2017-03-29 2019-08-20 Commvault Systems, Inc. External dynamic virtual machine synchronization
CN107346261A (zh) * 2017-06-30 2017-11-14 联想(北京)有限公司 虚拟机时间同步方法、物理主机及虚拟机
US10877928B2 (en) 2018-03-07 2020-12-29 Commvault Systems, Inc. Using utilities injected into cloud-based virtual machines for speeding up virtual machine backup operations
US11200124B2 (en) 2018-12-06 2021-12-14 Commvault Systems, Inc. Assigning backup resources based on failover of partnered data storage servers in a data storage management system
US10996974B2 (en) 2019-01-30 2021-05-04 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data
US10768971B2 (en) 2019-01-30 2020-09-08 Commvault Systems, Inc. Cross-hypervisor live mount of backed up virtual machine data
US11467753B2 (en) 2020-02-14 2022-10-11 Commvault Systems, Inc. On-demand restore of virtual machine data
TWI738235B (zh) * 2020-03-03 2021-09-01 慧榮科技股份有限公司 用來進行恢復管理的方法以及記憶裝置及其控制器以及電子裝置
US11442768B2 (en) 2020-03-12 2022-09-13 Commvault Systems, Inc. Cross-hypervisor live recovery of virtual machines
US11099956B1 (en) 2020-03-26 2021-08-24 Commvault Systems, Inc. Snapshot-based disaster recovery orchestration of virtual machine failover and failback operations
CN113467923A (zh) * 2020-03-31 2021-10-01 华为技术有限公司 一种设备休眠方法及计算设备
US11748143B2 (en) 2020-05-15 2023-09-05 Commvault Systems, Inc. Live mount of virtual machines in a public cloud computing environment
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection
US11467850B2 (en) 2020-11-11 2022-10-11 Micron Technology, Inc. Computing device reboot
KR20230060817A (ko) 2021-10-28 2023-05-08 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US12045508B2 (en) * 2022-05-24 2024-07-23 SanDisk Technologies, Inc. Data storage device and method for device-initiated hibernation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809223A (en) * 1995-11-07 1998-09-15 Samsung Electronics Co., Ltd. Network hibernation system and a control method thereof
CN101263456A (zh) * 2005-09-15 2008-09-10 英特尔公司 用于快速恢复的方法和装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970071232A (ko) 1996-04-26 1997-11-07 김광호 다중 리줌 기능을 갖는 하이버네이션 방법
JPH11242631A (ja) * 1998-02-26 1999-09-07 Toshiba Corp コンピュータシステムおよび同システムにおけるデータ保存/復元方法
US6101601A (en) 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
JP3204251B2 (ja) * 1999-06-30 2001-09-04 インターナショナル・ビジネス・マシーンズ・コーポレーション ハイバネーション装置及び方法、それを格納した記録媒体並びにそれを適用したコンピュータ
US6546472B2 (en) * 2000-12-29 2003-04-08 Hewlett-Packard Development Company, L.P. Fast suspend to disk
US7386046B2 (en) * 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6883037B2 (en) * 2001-03-21 2005-04-19 Microsoft Corporation Fast data decoder that operates with reduced output buffer bounds checking
US6851065B2 (en) 2001-09-10 2005-02-01 Dell Products L.P. System and method for executing resume tasks during a suspend routine
US7017037B2 (en) 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time
US7793127B2 (en) 2005-12-30 2010-09-07 Intel Corporation Processor state restoration and method for resume
US7519808B2 (en) * 2006-04-25 2009-04-14 Apple Inc. Method and apparatus for quickly reanimating devices from hibernation
JP2007334383A (ja) * 2006-06-12 2007-12-27 Sony Corp 情報処理装置とその起動方法およびプログラム
US7971081B2 (en) 2007-12-28 2011-06-28 Intel Corporation System and method for fast platform hibernate and resume
JP5207792B2 (ja) * 2008-02-19 2013-06-12 キヤノン株式会社 情報処理装置及び情報処理方法
US8621144B2 (en) 2008-06-26 2013-12-31 Intel Corporation Accelerated resume from hibernation in a cached disk system
JP4399020B1 (ja) * 2008-08-26 2010-01-13 株式会社東芝 情報処理装置およびメモリ管理方法
US20110107020A1 (en) * 2009-10-30 2011-05-05 Duan Binghua Hibernation solution for embedded devices and systems
US8694764B2 (en) * 2011-02-24 2014-04-08 Microsoft Corporation Multi-phase resume from hibernate

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809223A (en) * 1995-11-07 1998-09-15 Samsung Electronics Co., Ltd. Network hibernation system and a control method thereof
CN101263456A (zh) * 2005-09-15 2008-09-10 英特尔公司 用于快速恢复的方法和装置

Also Published As

Publication number Publication date
WO2012161777A2 (en) 2012-11-29
JP2014506708A (ja) 2014-03-17
US9075629B2 (en) 2015-07-07
JP5911892B2 (ja) 2016-04-27
EP2678775A2 (en) 2014-01-01
US20120221843A1 (en) 2012-08-30
EP2678775A4 (en) 2015-08-05
US20120221875A1 (en) 2012-08-30
KR20140014146A (ko) 2014-02-05
CN102708064A (zh) 2012-10-03
US8533449B2 (en) 2013-09-10
US8694764B2 (en) 2014-04-08
US20140164751A1 (en) 2014-06-12
WO2012161777A3 (en) 2013-02-28

Similar Documents

Publication Publication Date Title
CN102708064B (zh) 从休眠中多阶段恢复
CN101989206B (zh) 一种计算机开机处理方法及系统
CN1261868C (zh) 计算机快速启动方法
US9823877B2 (en) Virtual machine backup from storage snapshot
EP2487583B1 (en) Booting apparatus and method using snapshot image
RU2568280C2 (ru) Быстрый запуск компьютера
CN102707966B (zh) 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端
CN102567047B (zh) 快速计算机启动
CN101650660A (zh) 从中央存储装置引导计算机系统
CN102446111A (zh) 快速计算机启动
CN105574141B (zh) 一种对数据库进行数据迁移的方法和装置
CN110704161B (zh) 虚拟机创建方法、装置及计算机设备
US10789087B2 (en) Insight usage across computing nodes running containerized analytics
WO2018006833A1 (zh) 可变长编码文件的解码方法以及装置
US20170060640A1 (en) Routine task allocating method and multicore computer using the same
CN114490023B (zh) 一种基于arm和fpga的高能物理可计算存储设备
US8650160B1 (en) Systems and methods for restoring multi-tier applications
US20220374256A1 (en) Information processing system, information processing apparatus, method of controlling the same, and storage medium
TWI465889B (zh) 休眠管理方法及相關裝置
US8176274B2 (en) Electronic data reproduction
US20230134506A1 (en) System and method for managing vm images for high-performance virtual desktop services
EP4116825A1 (en) Device sleep method and computing device
US20080320248A1 (en) Computer system architecture and operating method for the operating system thereof
KR20140040018A (ko) 하이버네이션 기반 스냅샷 이미지 생성 및 부팅 장치 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for 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: 20150618

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

Effective date of registration: 20150618

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

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

Effective date of registration: 20160712

Address after: Cayman Islands, George Town

Applicant after: IValley Holding Co., Ltd.

Address before: Washington State

Applicant before: Micro soft technique license Co., Ltd

C14 Grant of patent or utility model
GR01 Patent grant