快速计算机启动的制作方法

文档序号:6441256阅读:136来源:国知局
专利名称:快速计算机启动的制作方法
技术领域
本发明涉及快速计算机启动。
背景技术
计算机具有范围为从完全操作到完全关闭的若干操作模式。在完全操作中,定义操作系统的执行部分的软件已经从非易失性存储器加载到易失性存储器中,从该易失性存储器中,所述执行部分可以更快速地执行。该计算机通过“启动”过程(process)进入该完全操作模式。启动过程配置硬件并且加载计算机的操作系统。作为启动过程的一部分,驱动程序被安装,并且操作系统服务被启动。一旦计算机为任何用户的操作做好准备,则用户就可以登录到该计算机。该登录还可以包括基于所登录的用户专用的简档来配置该计算机。要么自动地,要么响应于用户输入,应用然后可以被加载,使得这些应用可以在利用该计算设备的硬件和操作系统服务的能力的情况下执行。在无论是为操作系统还是应用加载软件的过程中,存储器都可以被分配,软件的参数可以基于计算机的硬件配置或用户简档被赋值,并且其他配置动作可以被执行。这些动作建立计算设备的“状态”。对系统的存储器和定义该系统的操作状态的其他参数的进一步改变还可以在用户提供命令以与执行中的应用或操作系统服务交互时进行。在完全关闭模式下,不给计算机的硬件组件供电。未在易失性存储器中存储软件或状态信息,因为该存储器不能在掉电时保留信息。更具体而言,在非易失性存储器中存储将在后面用于重新配置计算机以用于完全操作模式的任何信息。计算机通过称为关闭的过程进入关闭模式。在关闭期间,为了重新配置计算机可能需要的任何信息在还未存储在非易失性存储中的情况下都可以存储在非易失性存储器中。已经从非易失性存储器复制到易失性存储器中的软件和其他配置信息不被复制回非易失性存储器,因为这些信息可以在随后的启动过程时被重新创建。然而,在易失性存储器高速缓存了从非易失性存储器所复制的数据并且该数据在被复制以后已经被修改(有时称为“脏”数据)的条件下,该数据在关闭期间被复制到非易失性存储器。另一变型称为注销(log off)。在支持用户会话的计算机中,用户可以登录到该计算机以访问其功能。尽管关闭有效地使用户注销,但是可能在执行了单独的注销过程以后计算机未被掉电。更具体而言,操作系统保持为被加载的,并且准备好供另一用户登录。在注销期间,计算机“中止”用户会话。中止用户会话可能需要关闭用户起动的应用,并且存储还未处于非易失性存储器中的用户专用数据。除了完全关闭或注销以外,还可以存在省电模式,其中关闭计算机的一些或所有硬件组件的电源。在有时称为睡眠模式的省电模式下,关闭计算机处理器、网络接口以及可能还有其他组件的电源。然而,为易失性存储器保留电源。通过这种方式,在计算机的引导或随后操作期间所创建的任何状态信息都被保留在易失性存储器中。当再次给处理器供电时,该处理器可以将操作恢复到处理器在进入睡眠模式以后所离开的状态。另一模式有时称为休眠模式。计算机通过称为休眠的过程进入该模式。在休眠期间,捕捉计算机的操作状态的文件被创建并且被存储在非易失性存储器中、通常为硬盘中。 在从休眠恢复的过程期间,该文件可以被从该盘中读取,并且用于重新创建在休眠时曾经存在的计算机状态。从休眠的恢复在易失性存储器中还原操作期间的在休眠时曾经存在的软件副本或参数集,使得任何用户状态也被还原。处于若干原因,从休眠的恢复可以比执行完全启动更快。一个原因是,将休眠文件中的状态信息复制到易失性存储器中将重新创建完全启动过程的结果,同时避免在执行启动过程的步骤(比如CPU消耗、设备初始化)以及在引导期间必须进行的许多其它类型的工作方面花费时间。附加地,在启动期间所访问的信息存储在许多不同的文件中,这些文件表示为了加载和配置有可能操作系统中的上万个组件而被访问的不同组件。这些组件以及为了配置它们而被访问的信息可以随机地分布在硬盘上。由于硬盘驱动器、以及其他一些形式的高容量存储在访问顺序的数据方面是最高效的,因此访问随机分布的数据可能包括显著的盘访问时间,从而导致长时间的启动过程。相比之下,读取休眠文件的访问时间是更少的,因为该文件中的信息可以顺序地存储在盘上。从休眠的恢复与启动之间的另一区别是,休眠然后恢复将还原计算机的完全状态,包括计算机的用户在计算机休眠时的任何用户状态。相比之下,直到用户登录为止,启动都将通用地为任何用户配置计算机。然后,特定用户可以登录或以其他方式采取动作以为他们自己配置该计算机。出于该原因,打算暂时离开计算机、但是打算返回该计算机的用户通常选择休眠。如下的用户通常使用关闭该用户打算较长时间离开计算机,可能根本不返回该计算机或者预期其他用户可能在该用户返回以前使用该计算机。

发明内容
为了改善用户体验,计算机可以被配置为通过进入休眠模式来响应用于关闭的用户命令。这样的计算机可以在用户提供用于启动计算机的命令以后更快地准备好以供用户操作。为了使得计算机能够快速地准备好以供在与用户预期一致的状态下操作,休眠文件捕捉实现用户预期的目标状态。响应于关闭命令,计算机在休眠以前通过仅仅执行关闭过程中的步骤的一部分来创建该目标状态。所执行的步骤可以将计算机置于目标状态中,该状态对应于操作系统保持被加载但用户会话已经中止的状态。在接收到启动命令以后,计算机系统可以不是通过加载和配置软件来创建操作状态,而是通过将休眠文件复制到易失性存储器中来重新创建目标状态。然后,计算机可以仅仅执行启动序列的部分。这些部分可以包括按常规将在操作系统被加载以后的启动序列期间发生的操作。这些步骤例如可以包括与用户交互以执行用户登录并且加载定义用户状态的应用。在一些实施例中,可以响应于指示关闭的用户命令来执行有条件的处理。计算设备例如可以确定计算设备是否处于需要完全关闭的操作状态中或者创建将响应于随后的启动命令来使用的休眠文件是否是合适的。这样的状态可以以多种方式中的任何方式来标识出,包括通过确定所安装的一些组件的配置设定已被改变并且将不被应用直到该组件再次作为完全启动序列的一部分被加载。可替代地,可以提供编程应用接口,该编程应用接口允许应用组件在需要完全关闭时注册。如果检测到这样的条件,则可以执行常规关闭处理,直到计算设备被完全下电。如果不是,则可以执行关闭序列,直到计算设备处于可从中制定休眠文件的目标状态。在一些实施例中,可以响应于用于启动的用户命令来执行有条件的处理。该有条件的处理可以包括确定是否存在休眠文件。如果是这样,则可以进一步检查是否可能计算设备的目标状态已经在休眠文件被创建的时间与启动命令被接收到的时间之间发生了改变。如果检测到可能已经导致状态改变的事件,则计算设备可以执行完全启动序列。以上是对由所附权利要求书所定义的本发明的非限定性的概述。


附图不旨在按比例绘制。在附图中,各个附图中示出的每个相同或近乎完全相同的组件由同样的附图标记来表示。出于简明的目的,不是每个组件在每张附图中均被标记。 在附图中图1是示出了计算设备中的启动序列的概念框图;图2是示出了计算设备中的从休眠序列的恢复的功能框图;图3是根据本发明的一些实施例的快速启动序列的功能框图;图4是根据本发明的一些实施例的用于响应于启动命令来操作计算机的方法的流程图;图5是示出根据本发明的一些实施例的用于响应于关闭命令来操作计算设备的方法的流程图;图6是根据本发明的一些实施例的可以被有条件地执行的启动序列的一部分的流程图;图7是图形用户界面的一部分的草图,通过该图形用户界面,用户可以在致使计算设备在关闭以后的不同行为的命令之间进行选择;以及图8是一示例性计算设备的框图,该计算设备示出了本发明的各实施例可以在其中操作的示例性环境。
具体实施例方式本发明已经认识到和理解的是,通过结合计算设备的关闭和/或启动序列的部分使用休眠文件,可以改善计算设备的用户体验。这样的文件可以选择性地在关闭以后创建并且选择性地在启动以后使用,使得计算设备的性能与用户预期相匹配。即时当休眠文件被创建或使用时,仍然可以执行常规关闭或启动序列的部分。为了提供计算设备的与用户预期一致的操作,可以结合计算设备的将该计算设备置于目标状态中的传统关闭序列的部分来使用休眠。这些部分可以包括在接收到关闭命令以后中止用户会话的操作。另外,作为对关闭命令的响应的一部分,在用户会话被中止以后保留在易失性存储器中、但是打算保留在非易失性存储器中的信息被移动到非易失性存储器。例如,可以执行常规的高速缓存转储清除操作,所述操作模拟在常规关闭期间所执行的操作。
相反,在处理启动命令以后,从休眠的恢复可以与启动序列的部分一起执行。该序列可以包括启动序列的在操作系统被加载并且为操作准备好以后发生的任何部分。启动序列的该部分例如可以包括用户登录和加载应用。另外,为了提供与用户体验一致的操作,可以根据动态确定的事件来调节作为关闭或启动的一部分的休眠文件的创建或使用。在组件已经在操作会话期间被重新配置使得配置改变在该组件下次被加载以前一直不被应用的场景中,不创建休眠文件。响应于来自用户的下一启动命令,该计算机将检测到没有休眠文件为可用的,并且通过重新加载操作系统来创建目标状态。可替代地或附加地,操作系统可以提供如下的接口 通过该接口,其他组件可以注册以用信号通知它们需要完全关闭或启动以有效地运行。当执行中的组件被注册时,可以响应于关闭命令执行完全关闭序列。另外,在一些实施例中,为了与用户预期一致地运行,可以提供如下的用户界面 通过该用户界面,用户可以指定是执行常规关闭还是经修改的关闭,其中创建目标状态并且然后执行休眠过程。这样的用户界面可以呈现用于常规关闭以及合并了休眠的经修改的关闭序列的单独选项。计算设备可以响应于被标记为常规关闭命令的输入而有条件地调用经修改的关闭序列。单独的命令选项可以通过可被用户用来指定常规关闭的界面来提供。现在转到图1,示出了完全启动序列的功能框图。图1是示出了可以适于根据本发明的实施例操作的计算设备100的功能框图。在该示例中,计算设备100包括易失性存储器120。易失性存储器120可以使用 DRAM或任何其他合适的存储器组件来实现。由计算设备100执行的启动序列包括在易失性存储器120内创建状态信息,该状态信息允许计算设备100执行本领域中已知的计算操作。在该示例中,该状态信息被示为具有两个部分用户状态信息130和系统状态信息140。系统状态信息140表示通用地配置计算系统100以供任何用户进行操作的状态信息。相比之下,用户状态信息130表示可以在计算设备100被操作或配置为供特定用户操作时被生成的状态信息。系统状态信息140和用户状态信息130可以根据本领域中已知的启动过程在易失性存储器120中创建。图1以简化的概念化形式示出了常规启动序列中的步骤。这样的序列例如可以在计算设备100被上电或者其他用信号通知启动的命令被提供时被发起。计算设备100可以包括本领域已知的组件。这些组件可以包括处理器110。处理器110可以实现为本领域已知的微处理器、或者微处理器或处理器核的集合。在此所述的操作可以是处理器110执行软件指令的结果。附加地,计算设备100可以合并多种类型的计算机存储介质。在这种情况下,这些类型包括易失性存储器和非易失性存储器。在该示例中,示出了易失性存储器120。各种类型的信息存储在非易失性存储器150和152中。引导存储器IM也是非易失性存储器。可以使用不同的物理设备来实现非易失性存储器150和152以及引导存储器154。例如,非易失性存储器150可以是盘,比如旋转式硬盘或固态驱动器。非易失性存储器152可以类似于盘,并且可以是用于实现非易失性存储器150的同一盘、同一盘上的不同分区、或者整个不同的盘。非易失性存储器154同样可以是用于实现非易失性存储器150和152的同一设备的一部分。但是在所示的实施例中,非易失性存储器巧4可以是连接到处理器110的非易失性存储器芯片。因此,应当理解,图1仅仅表示存储器架构的一个示例,并且可以使用任何合适的存储器架构。在该示例中,示出了非易失性存储器和易失性存储器。这样的配置表示传统的计算机架构。但是不要求使用该特定架构。更确切而言,易失性存储器120是操作存储器的一示例。在计算设备100的操作期间,处理器110可以主要从易失性存储器120访问软件和数据以执行操作。该存储器可以为相对高速的,使得操作可以由处理器110快速地执行。相比之下,诸如非易失性存储器150和152之类的非易失性存储器能够存储大量数据,但是可能比易失性存储器120更慢地操作。一般而言,在这样的非易失性存储器中存储信息的成本与在易失性存储器120中存储信息的成本相比可能是相对小的。为了实现成本效益、还有高速的操作,信息可以在非易失性存储器与易失性存储器之间传输。这些传输被执行以在易失性存储器120内创建支持计算设备100的所期望的操作的状态。可以存在计算系统的其他组件,但是这些组件为简单起见被省略。下面结合图8 提供可在其他实施例中存在的组件的更多细节。然而,图1中的简图足以解释启动过程。响应于启动命令,处理器110可以访问和执行引导存储器154中的指令。弓丨导存储器巧4可以包含如下指令所述指令致使处理器110访问非易失性存储器150和152、以及基于存储在这些存储器中的软件和数据在易失性存储器120中生成合适的状态。引导存储器154中的指令可以致使处理器110从非易失性存储器150加载软件。 作为加载软件组件的一部分,处理器110可以将软件指令传输到易失性存储器120,其中该软件可以从该易失性存储器120中被执行。但是加载软件可以包括其他操作,包括执行一些组件。从易失性存储器120执行一些组件可以将使软件从该软件被存储的状态变换为该软件被用于致使其他组件从非易失性存储器传输到易失性存储器120的状态。在加载软件的过程中,处理器110可以基于存储在非易失性存储器152中的数据或其他信息来配置该软件。该信息例如可以包括关于安装在计算设备100中的硬件组件的信息。因此,图1 示出了 启动过程的第二和第三步骤可以是从非易失性存储器150获取软件以及从非易失性存储器152获取数据。在该过程中加载的第一软件可以建立系统状态140。最初加载的软件可以向系统状态140添加控制硬件组件的驱动程序146。在加载驱动程序以前,可以标识出与计算设备100相关联的硬件组件并且选择合适的驱动程序。一旦驱动程序被安装,则操作系统服务以及其他组件就可以与通过该驱动程序被控制的设备进行交互。然后,可以加载操作系统服务142。这样的服务的一个示例是文件管理器144。文件管理器144可以将易失性存储器中的数据组织为使得执行中的操作系统服务和应用可以访问非易失性存储器中的根据文件组织的数据。由操作系统所提供的其他服务可以包括与用户界面交互;建立网络连接;或者向打印机发送信息。但是特定的操作系统服务 142不是对本发明的限制。附加地,在建立系统状态140的过程期间,处理器110可以存储系统状态数据148。 这样的数据可以从诸如非易失性存储器152之类的非易失性存储器来复制,或者可以通过执行软件组件来生成。例如,该数据可以在处理器110执行发现安装在计算设备100内的设备的指令时被生成。作为特定的示例,在发现特定网络接口卡以后,处理器110可以作为系统状态数据148的一部分记录网络接口卡的类型或能力。然后,该数据可以在计算设备的操作期间被用于控制与网络接口卡的交互。但是应当理解,作为系统状态数据148所存储的特定数据对于本发明而言不是关键性的。无论特定操作系统服务142和在系统状态信息140中所创建的系统状态数据148 如何,当该系统状态信息140被创建时,计算设备100都可以准备好以供用户进行操作。因此,启动序列可以继续有时称为用户登录的过程。作为用户登录的一部分,可以标识出特定用户,并且可以在易失性存储器120中创建另外的状态信息以允许计算设备100为该用户执行操作。在该示例中,用户状态信息130被示为包含应用指令132和用户状态数据134。如同表示操作系统组件的指令和表示系统状态的数据那样,应用指令132可以基于存储在易失性存储器150上的软件被加载到存储器中。但是加载软件的过程可能需要执行合适地配置软件或计算设备以供操作的功能。该配置可以取决于系统状态数据148或用户状态数据134。仅作为一个示例,在加载实现web浏览器的应用指令以后,处理器110可以要么从非易失性存储器152、要么从用户状态数据134中访问表示用户数据的信息,所述信息标识出已经被用户标识为“最喜爱项目”的特定web站点。在该示例中,建立用户状态数据130 根据用户偏好来配置web浏览器以供执行,这将包括呈现为已经登录到计算设备100的特定用户定制的最喜爱项目的列表。一旦用户登录完成,该用户然后就可以于计算设备100交互。这些交互可以导致更多软件被加载或者一些加载的应用被关闭。附加地,用户交互可以设置参数或者采取可以要么改变用户状态130要么改变系统状态140的其他动作。这些交互可以继续,直到用户输入指示结束会话的意图的命令。该会话可以以多种方式结束。例如,当用户完成与计算设备100的交互的会话时, 该用户可以注销和/或关闭计算设备100。注销导致用户会话被中止,使得用户状态信息 130不再在存储器120中可用。注销序列的一部分可能需要从系统状态140中移除用户专用的设定。通过这种方式,第二用户可以登录到计算设备100而不受由在先用户所生成的状态信息的影响或者不能访问该状态信息。实现该结果的操作有时可以被描述成中止用户会话。系统状态140可以在注销以后保留,因为存储器120的电源可以维持。相比之下, 关闭可以导致用户状态130和系统状态140 二者都被从易失性存储器120中移除。由于易失性存储器120的电源被关闭,所以易失性存储器120中的任何信息在关闭序列结束时都将丢失。因此,为了重新创建该状态所需的任何信息在还未存储在非易失性存储器中的情况下都可以移动到非易失性存储器。注销和/或关闭序列不一定是启动序列的逆反,因为不需要返回从非易失性存储器中生成的任何信息。该相同的信息可以在随后的启动以后再次生成。然而,用户状态130 的在会话期间被动态地生成并且不能从来自非易失性存储器的信息中重新创建的部分可以作为注销或关闭操作的一部分被记录在非易失性存储器中。类似地,在关闭以后,系统状态数据148的不能在再次执行启动序列以后重新创建的部分可以作为关闭序列的一部分被传输到非易失性存储器。
作为一个示例,系统状态数据148可以包含高速缓存,其中该高速缓存旨在充当存储在非易失性存储器152中的数据项的工作复本。高速缓存通过在易失性存储器中建立应当保留在非易失性存储器中的信息的副本来使计算设备100的操作加速。在较快的易失性存储器位置处读取或写入信息与在非易失性存储器中访问相同数据相比将使计算设备的操作加速。当易失性存储器中的数据的副本被改变时,该副本不再与非易失性存储器中的相应数据匹配。高速缓存中的数据被称为是“脏”的。为了保持非易失性存储器与高速缓存中的副本同步,脏数据不时地被复制到非易失性存储器中。脏数据常常在计算机在其他方面不繁忙时被复制回。但是延迟脏数据的复制将导致的可能性是,在关闭时,高速缓存中的数据将不与非易失性存储器中的数据相匹配。为了避免不一致,在关闭计算设备100以前,可以执行有时被称为转储清除脏数据的操作。在该操作期间,脏数据被复制到非易失性存储。尽管图1所示的启动序列是所期望的,因为其配置计算设备100以供用户操作,但是该启动序列在一些实例中可能是令人沮丧的源头。用户所期望的操作系统和应用可以集体地包含成千上万个组件。因此,启动序列可能需要从非易失性存储器150和152的多个读取操作。由于这些存储器通常缓慢地操作,因此整个过程可能是相对慢的。附加地,启动序列可能需要除了与存储相关的操作以外的耗时操作。附加地,可以例如在由CPU作出的计算或设备初始化方面花费的时间。图2示出了用于在易失性存储器中创建状态信息的可替代方案。图2示出了在操作序列期间的计算设备100,在该操作序列中,状态信息作为从休眠序列的恢复的一部分被创建在易失性存储器120中
休眠是一种可以通过将状态信息从易失性存储器复制到非易失性存储器来创建的操作模式。这样的状态信息可以以任何合适的方式来组织。在图2所示的实施例中,该状态信息被示为存储在非易失性存储器152中的休眠文件210中。在休眠期间,处理器110 可以将包括用户状态信息130和系统状态信息140的状态信息复制到休眠文件210中。然后,通过关闭计算机系统100的组件的全部或一部分的电源来进入休眠模式。当电源被关闭时,易失性存储器120中的状态信息丢失。然而,该信息可以随着从休眠中的恢复通过将休眠文件复制到易失性存储器中来重新创建。因此,图2示出了 从休眠序列的恢复可以以与图1所示的启动序列类似的方式通过处理器Iio访问存储在引导存储器巧4中的指令来开始。这些指令致使处理器110检查休眠文件210的存在。在该示例中,在检测到休眠文件210以后,处理器110将休眠文件 210的内容复制到易失性存储器120中。该复制可能需要直接复制或者可能需要处理,以便在信息被复制时以某种方式(比如对该文件解压缩)来转换该信息。无论处理是否作为该处理的一部分来执行,最终结果都将导致还原状态信息。一旦状态信息被还原,用户可以恢复在休眠时被中断的计算会话。系统状态数据148和用户状态数据134 二者都将被返回给易失性存储器120。附加地,应用132、操作系统服务142和驱动程序146同样将被返回给易失性存储器120并且为执行做好准备。从休眠的恢复常常将要比执行结合图1所示的完全启动序列更快。尽管在从休眠的恢复和完全启动期间,相同量的信息可能最终被放置到易失性存储器120中,但是简单
10地将从文件复制该信息将比通过加载软件和配置数据来生成该信息更快。然而,进入休眠模式并且然后从休眠恢复不总是执行关闭并且然后执行启动序列的合适替代动作。本申请人已经认识到和理解,响应于关闭计算设备的用户命令而执行休眠并且随后响应于来自用户的启动计算设备的命令而从休眠恢复可能得不到计算设备的满足用户预期的操作。本发明人已经标识出一种用于提供更快的操作体验而不违背现有用户预期的方式。图3示出了计算机设备100可以有条件地将休眠合并到关闭序列中的功能框图。附加地,计算设备可以有条件地将从休眠的恢复合并到启动序列中。在图3所示的实施例中,计算设备100被示为包含状态信息,该状态信息被复制到非易失性存储器152中。在该实施例中,状态信息被格式化为休眠文件310。休眠文件310 可以为本领域已知的休眠文件的形式。但是应当理解,可以使用任何合适的格式来将状态信息存储在非易失性存储器中。与存储在休眠文件210中的信息相比,休眠文件310包含系统状态140。用户状态 130不需要作为休眠文件310的一部分来存储,但是在一些实施例中,可以存储用户状态的部分。因此,当用户向计算设备100提供启动命令时,处理器110可以开始执行来自引导存储器1 的指令,这类似于在图2所示的操作模式下所发生的动作。在检测到休眠文件310 的存在以后,处理器110将休眠文件310的内容复制到易失性存储器120中。该复制在易失性存储器120中重新创建系统状态140。该状态可以模拟计算设备100在图1所示的启动序列期间在操作系统软件被加载以后但在用户登录发生以前的状态。因此,为了完成状态信息在易失性存储器120中的创建,处理器110可以执行上面结合图1所述的启动序列的在系统状态被创建以后发生的步
马聚ο在这种情况下,这些操作可以包括通过从非易失性存储器150中读取软件指令以及基于非易失性存储器152中的数据对其进行配置来加载应用指令132和创建用户状态数据Π4。在完成这些操作序列以后,易失性存储器120中的状态信息可能与由于执行如上面结合图1所述的启动序列所加载的状态信息相似。然而,使用图3所示序列来响应启动命令所需的时间可以比执行结合图1所述的启动序列所需的时间更短。在图3所示示例中,休眠文件310尽管与休眠文件210(图幻的格式相同,但是包含不同的信息。附加地,休眠文件310是以与休眠文件210不同的方式创建的。如上所述, 休眠文件210 (图2、记录了计算设备100的在易失性存储器120中所表示的在休眠命令时的状态。相比之下,休眠文件310是响应于关闭命令创建的。但是在休眠文件310中所捕捉的状态信息不表示计算设备100在关闭命令时的完全状态。更确切而言,可以执行一些处理来将计算设备100置于休眠文件310可能被创建时的目标状态中。在所示实施例中,目标状态表示在加载操作系统以后但是在没有用户登录到计算设备100的情况下已经生成的状态。这样的目标状态可以至少部分通过执行关闭序列的一部分来创建。例如,该部分可以包括注销计算设备100的一个或多个用户或者以其他方式中止用户连接。这样的处理可以使用本领域已知的技术来执行。可替代地或附加地,可以执行其他处理以用于将计算设备100置于目标状态中。例如,处理可以包括转储清除来自系统状态数据148的脏数据。此外,如上所述,为了保护用户对计算设备100对关闭命令的反应的预期,涉及休眠的关闭序列可以有条件地基于在该时间可能存在的条件来执行。类似地,启动序列可以有条件地包括从休眠的恢复。图4、5和6示出了这样的有条件的处理。图4示出了诸如可以由计算设备100响应于启动命令执行的启动序列。启动命令例如可以通过用户按下按钮、向计算设备100供电或者通过以其他方式发起计算设备100 的操作被提供给计算设备100。无论发起启动序列的方式如何,该过程都可以在框410开始。在框410,处理器110 可以从发起该过程的引导存储器IM中取指令和执行该指令。但是,在该过程的后面的步骤,可以从非易失性存储器150中或者从任何其他合适的源、包括通过网络连接来取指令。无论用于控制处理器110发起启动序列的指令的源如何,该过程都可以根据是否在非易失性存储器152中检测到休眠文件来在判定框412分支。如果是这样,则该过程可以分支到终止点A,以继续图6所示的过程。相反,如果不存在休眠文件,则该过程可以行进到子过程450。子过程450可以表示实现本领域公知的启动序列的操作序列。在该示例中,框 420、422、似4、似6、似8、430和432的处理可以表示如在已知的启动序列中的处理。但是,应当理解,可以使用任何合适的技术来使用任何合适的操作序列。无论所使用的特定方案如何,子过程450中的处理都可以在框420开始。在框420, 处理器110执行操作系统加载器。这样的加载器可以是软件组件,该软件组件在被执行时将操作系统的组件从非易失性存储器150加载到易失性存储器120。在框422,可以配置如下操作所述操作配置操作系统的作为系统状态140的一部分所创建的映像。该配置可以包括任何合适的处理,包括设置被加载到易失性存储器中的组件的参数值、或者执行配置系统状态140的其他方面的指令。也作为启动子过程450的一部分,计算设备100可以检测设备。可以检测任何合适的设备,比如打印机、网络接口或连接到计算设备100的其他外围设备。基于所检测到的设备,可以在框4 执行驱动程序加载器。驱动程序加载器可以是使用加载驱动程序的已知技术所构造的软件组件。驱动加载器的执行可以包括标识出和加载所检测到的设备的驱动程序软件。一旦驱动程序已经被加载,则可以在框4 启动这些驱动程序。该处理可以使驱动程序及其控制的设备可供加载在计算设备100上的其他组件使用。该过程可以继续到框430,其中可以启动操作系统服务。一旦设备和操作系统的服务可供使用,则处理就可以行进到框432。在框432,可以加载应用组件。该处理可以使用本领域已知技术或者任何其他合适方式在用户登录过程的一部分时执行。当应用组件被加载时,图4中所示的过程可以根据在框432所加载的应用组件的属性来分支。在判定框444分支将允许计算设备改善在一个或多个应用组件在计算设备 100使用休眠而不是常规关闭序列执行关闭序列时未正确运行的情况下发生的问题。一些组件可能需要重新引导,这意味着,当计算设备下次被上电时将执行完全启动序列,使得该状态将使用加载过程来重新创建。作为一示例,如果执行图3所示的合并了休眠的关闭序列,则根据计算设备100启动的时间不同地执行操作的应用组件可能不按照用户所预期的那样执行。对于这些组件而
12言,当执行随后的启动时,如果该启动是基于从休眠的还原执行的,则可以基于从休眠文件 310还原的状态信息来配置该应用组件。该状态信息可以包含对计算机上次执行完全启动序列的时间的指示。因此,在加载以后基于该状态信息配置的应用组件将不用表示图4所示的启动序列何时被发起的时间值来配置。与可能的用户预期相比,该组件将用表示完全启动序列被执行时的在先时间的时间值来配置。在这种情况下,该应用组件的行为将基于与用户预期不同的时间,因为该用户可能预期基于图4的过程开始的时间来配置该应用组件。因此,当这样的应用组件被加载到计算设备100上时,所期望的可能是,响应于来自用户的关闭命令而确定该组件需要完全关闭序列。当这样的组件执行时,计算设备可以通过执行完全关闭序列来响应关闭命令。通过这种方式,在随后接收到启动命令以后,将没有休眠文件可用,并且将执行例如图1所示的完全启动序列。在其他时间,计算设备可以用图3所示的合并了休眠的关闭序列来响应关闭命令。为了支持与用户预期一致的这样的行为,可以为应用程序提供一种机制以指定其需要执行完全关闭和完全启动序列。在图4的示例中,该机制可以通过计算设备100的操作系统所支持的应用编程接口(API)来实现。即使应用组件在所有实例中都不需要完全关闭和完全启动序列,仍然可以通过这样的API进行调用。因此,如果在框440确定所加载的应用组件需要重新引导,则处理可以分支到框 442。在框442,可以调用应用编程接口来注册该应用组件。在该示例中,API允许操作系统跟踪在随后接收到启动命令时请求重新引导的应用组件是否仍然在执行。但是应当理解, 这样的调用可以在任何时间进行。例如,任何如下组件都可以通过API进行调用被重新配置或以其他方式遇到其确定执行完全关闭和完全启动序列的操作状态。如果未通过API进行这样的调用,则当随后接收到关闭命令时,操作系统可以确定可以使用图3所示的合并了休眠的关闭序列。相反,如果已经通过API进行了调用以用信号通知请求了完全关闭和完全启动序列,则操作系统可以执行完全关闭序列而不创建休眠文件,使得在随后接收到启动命令以后,可以执行完全启动序列。可以使用任何合适的机制来确定应用组件是否需要包括完全关闭和随后的完全启动序列的重新引导。作为一个示例,可以对应用组件进行编程以在框442所指示的那样调用API。可替代地,操作系统可以包括计算机可执行指令以在应用组件被加载时分析这些应用组件以标识出需要重新引导的功能。在该场景中,判定框440处的处理可以包括在每个应用组件被加载时分析该应用组件。但是可以在判定框440使用任何合适的技术来基于所加载的应用组件确定是否需要重新引导。尽管图4示出了基于所加载的应用组件来确定是否需要重新引导,但是可以为计算设备100的其他元件执行类似的处理,例如,可以为操作系统组件执行类似的处理。可替代地或附加地,可以基于安装在计算能设备100中的设备或者计算设备100所连接到的设备来执行类似的处理。无论在判定框440中所标识出的可能指示需要重新引导的条件如何,如果这些条件被标识出,则处理就可以分支到框442,在那里,指示被存储。该指示可以响应于来自用户的关闭命令来触发完全关闭,或者可替代地或附加地,可以响应于启动的用户命令即使在休眠文件可用的情况下仍然触发完全启动序列。如果未检测到这些条件,则处理可以行进
13到框444。在框444,可以收集数据以允许计算设备100确定使用合并了休眠的启动序列的有效性。在该示例中,框444的处理记录执行子过程450的时间,其在该示例中指示完全启动序列的执行。该信息可以以任何合适的方式来记录。例如,关于启动时间的信息可以记录在非易失性存储器152中。该信息可以作为单独的启动时间来记录,所述启动时间指示每当完全启动序列被执行时为了执行这样的完全启动序列所需的时间。可替代地,该信息可以作为多个完全启动序列的运行平均值、或者以任何其他合适的方式来记录。关于启动时间的信息可以在框444以任何合适的方式来确定。作为一个示例,定时器可以在发起子过程450时被启动,并且在处理到达框444时被读取。但是还有其他时间测量技术是已知的,并且可以用在框444。一旦启动时间被记录,则处理就可以行进到框446。在此,可以进行计算设备100 的常规操作。这样的操作可以继续,直到接收到关闭命令。图5示出了可以响应于这样的关闭命令执行的处理。图5所示的过程包括框510, 该框510表示计算机100使用本领域已知技术的操作。在操作期间,可以接收关闭命令512。 关闭命令512可以通过用户输入以任何合适的方式、比如通过图形用户界面或硬件控制来生成。在一些实施例中,计算设备100可以支持多种类型的可以触发关闭序列的用户输入。图7是可被用户用来输入关闭命令的图形用户界面的图示。在该示例中,图形用户界面710通过按下出现在由计算机操作系统所呈现的用户界面上的标记有“启动”的按钮来调用。但是应当理解,不同的操作系统支持不同的界面,并且可以使用任何合适的技术来调用用户界面。响应于按下该按钮,图形用户界面710可以由操作系统使用本领域已知技术来呈现。通过图形用户界面710,计算设备100的用户可以在用于结束计算设备上的当前会话的多个可能的命令中进行选择。在此,示出了 3个选项。在此,命令714被标记为“关闭”。这样的关闭命令在许多计算设备上是常见的,并且传统上已经用于指示该计算机应当执行完全关闭序列。然而,在图5所示的实施例中,对关闭命令714的用户选择可以导致计算设备 100的操作系统确定是否相反可以执行合并了休眠的部分关闭系列。在该实施例中,操作系统以可能与命令对用户所具有的语义含义不一致的方式为该命令使用标签。尽管如此, 有条件的处理保护了用户预期。但是,如果用户想要保证完全关闭序列被执行,则可以出于该原因提供具有不同标签的单独的命令。如果用户期望指示计算设备执行完全关闭而不创建休眠文件,使得在随后的启动命令以后,将通过从非易失性存储器150加载软件以及用来自非易失性存储器 152的数据对其进行配置来生成操作系统状态,则用户可以选择命令715。在该示例中,命令715被标记为“重新引导”。这样的标记被用于向用户标识出将执行完全关闭序列,使得根据随后的启动命令,将执行完全启动序列。在这种情况下,命令715执行与常规计算系统中在发出“关闭”命令时所执行的那些动作类似的动作。然而,在呈现图形用户界面710的计算设备中,与传统关闭命令相关联的语义标签已经应用于命令714。因此,向命令715赋予不同的标签。图形用户界面710还可以包含用于结束用户会话的其他选项。在该示例中,图形用户界面710包括命令716。在选中命令716以后,计算设备100可以通过中止指定用户的会话来做出响应。这样的计算设备行为是本领域已知的。在这种情况下,命令716可以对应常规的注销命令。尽管在图形用户界面710中可以包括许多合适的命令选项,但是在所示的实施例中,仅仅对命令714或716的选中将导致发起图5所示的过程。无论接收关闭命令的方式及其属性如何,响应于该命令的接收,处理都可以从框 510转移到框514。在框514,可以执行关闭序列的开始部分。关闭序列的在框514所执行的部分可以包括常规的处理。在该示例中,框514的处理结束计算设备100上的任何用户会话或会话。如上面结合图1所述,这样的处理可以包括关闭应用以及保存用户状态数据 134或者执行任何其他合适的动作。作为这些动作的结果,用户状态130中的从一个用户会话持久保持到下一用户会话的任何信息都从用户状态数据134移动到诸如非易失性存储器152之类的非易失性存储器。无论为了结束用户会话或以其他方式持久保持用户状态数据134的所采取的特定步骤如何,当这些步骤完成时,处理都可以行进到判定框516。在判定框516,图5的过程可以根据是否已经请求重新引导来分支。在框516的处理可以用任何合适的方式来执行。 可以在判定框516应用任何一个或多个标准来确定是否已经请求了重新引导。作为一个示例,可以在判定框516使用用户输入来确定是否已经请求了重新引导。例如,当用户选中重新引导命令715(图7)时,该用户选中可以充当表示已经请求了重新引导的指示。作为另一示例,已经结合图4描述了 应用组件可以比如通过在框442调用 API (图4)来请求重新引导。如果已经进行了这样的调用,则判定框516处的处理可以确定已经请求了重新引导。但是在一些实施例中,在判定框516的处理可以根据多种标准来调节。例如,处理可以确定应用组件已经通过在框442对API的调用注册了针对重新引导的请求。判定框516处的进一步处理可以确定是否应当履行这样的请求。这样的处理例如可以包括确定进行请求的应用组件在图5的过程被执行时是否仍然在执行。可替代地或附加地,判定框516处的处理可能需要确定进行请求的组件是否具有命令重新引导的足够访问特权。无论在判定框516所执行的处理的属性如何,如果作为该处理的结果而确定已经请求了重新引导,则该过程就分支到框530。在该场景中,框530表示完全关闭序列。这样的完全关闭序列可以如本领域已知的那样执行。该关闭序列可能需要中止用户会话、转储清除脏数据以及使计算设备下电。无论在执行关闭序列时所采取的特定步骤如何,在完成以后,图5的过程就可以结束,从而使计算设备100处于下电状态。相反,如果在判定框516还未请求重新引导,则该过程可以行进到判定框518。判定框518处的处理是有条件的处理的示例,以确定是应当执行完全关闭序列还是部分关闭并然后应当执行休眠。一般而言,判定框518处的处理可能需要应用任何合适的策略。这样的策略可以在接收到关闭命令时被评估。在所示示例中,所应用的策略涉及使用休眠所实现的时间节省。在判定框518,可以确定是否通过从休眠启动来实现时间节省。这样的确定可以通过如下方式进行将所记录的关于用于将计算设备100置于操作状态中的相对时间的信息与完全启动序列或者从休眠中恢复然后部分驱动序列相比较。关于用于执行完全启动的时间的信息例如可以基于在框444(图4)所存储的信息。关于为了将计算设备100置于操作状态中并然后从休眠恢复所需的时间的信息可以以类似方式基于在图6的过程执行结束时所记录的信息来确定。如果用于基于恢复来创建操作状态并然后部分启动的时间比用于执行完全启动的时间更慢,则处理可以从判定框518分支到子过程530。相反,如果判定框518处的处理确定从休眠恢复然后部分执行启动序列是优选的,则处理可以行进到判定框520。在判定框520,可以执行另一有条件的处理以确定计算设备100是否处于适用于合并了休眠的部分关闭序列的状态。这样的处理可能需要确定在当前会话期间,是否已经为任何组件指定了配置改变。如果这样的配置改变需要重新引导以变为有效,则包括休眠的关闭可能未实现用于对计算设备100的行为的用户预期,因为选中关闭命令714(图7) 与传统上将致使计算设备在下次启动时应用配置改变的标签相关联。如果计算设备100响应于具有传统上用于指示完全启动的标签的命令而实现包括休眠的关闭序列,则在随后的启动以后,这些组件的状态将恢复其上一状态而不是基于配置改变的状态。因此,可能存在如下场景在该场景中,用户对调用可能以其他方式与完全关闭序列相关联的命令的预期将不阻止预期的行为。为了避免计算设备100以与预期用户行为不一致的方式操作,图5的过程根据计算设备是否自动地确定了完全关闭序列应当执行以便获得与用户预期一致的操作而分支。如果是这样,则该过程分支到子过程530,在那里,如上述那样执行完全关闭序列。在所示实施例中,要执行完全关闭序列的条件是通过如下方式被标识出的确定任何组件是否在当前会话期间已经改变了配置设定。可以在判定框520应用本领域已知的用于做出该确定的技术。作为一个示例,用于改变执行中的组件的配置设定的处理可能需要设置标志或者以其他方式记录对配置改变的指示。在该场景中,判定框520处的处理可能需要检查状态标志的值。但是可以可替代地或附加地使用其他合适的处理。例如,处理可能需要扫描一个或多个存储器位置以检测未应用的配置设定。无论在判定框520如何做出该确定,如果不存在需要完全关闭和/或随后的完全启动的条件,则处理就可以行进到判定框522。在框522,执行用于将计算设备100完全置于从中进行休眠的目标状态中。如上面结合图3所述的那样,该目标状态可以对应于如下状态在该状态下,操作系统状态被维持,但是所有用户会话已经被中止,并且在随后的用户登录以后所需的任何用户状态都已经以合适的形式被持久保持在非易失性存储器中。可以执行以实现该目标状态的操作的示例是转储清除脏数据。可替代地或附加地,如果作为系统状态数据148的一部分所存储的其他数据涉及登录的用户的会话,则框 522处的处理可能需要将该数据存储在非易失性存储器152。无论执行何种操作来完全实现目标状态,处理然后都可以行进到框524。框524, 可以取得之后可以用于弄清休眠文件对于在计算设备100上创建目标状态而言的合适性的信息。作为一示例,一些计算设备可以用多个操作系统或者操作系统的多个实例来配置。 作为操作系统的特定实例的关闭的一部分所创建的休眠文件可以用于仅仅响应于用于启动操作系统的相同实例的命令而复原操作系统状态。然而,计算设备可以与同在休眠文件被创建时所使用的操作系统不同的系统一起运行的可能性所造成的可能性是,该操作系统将在休眠文件被创建的时间与将触发基于该文件的状态重新创建的随后启动命令之间的时间在该计算设备上运行。另一操作系统或同一操作系统的另一实例的居间操作可能造成的可能性是,在休眠文件中所捕捉的状态不再表示该计算设备的为了实现与用户预期一致的操作所应当创建的状态。例如,如果用户在关闭第一操作系统的操作以后加载了第二操作系统并且对供第一操作系统使用的任何数据或其他组件做出了改变,则在该实例中,从休眠文件恢复将导致创建未反映居间用户改变的状态。因此,可以采用一种机制来确定在随后的启动命令以后,休眠文件是否适于用于重新创建计算设备100的操作状态。在图5所示的实施例中,该机制需要在休眠文件被创建时存储信息。在该特定示例中,该信息是由文件系统维护的序列号。具体而言,该序列号可以由NTFS文件系统或可以在计算设备上操作的其他文件系统来维护。这样的序列号可以每当盘存储的卷被加载时就递增。因此,框5M处的处理可能需要存储与包含休眠文件的卷相关联的NTFS序列号以及与该操作系统相关联的其他数据。该值可以存储在非易失性存储器中,使得其可以结合随后的启动命令被访问。无论在框5M所记录的用于允许随后确定休眠文件的可用性的特定信息如何,该过程都可以行进到子过程526。子过程5 可以包括存储休眠文件。框5 处的处理可以使用与计算设备的休眠相关联的常规技术来执行。但是,应当理解,可以使用执行休眠文件的任何合适技术。无论用于作为子过程526的一部分存储休眠文件的特定技术如何,在存储休眠文件以后,就可以关闭计算设备100的电源。计算设备100可以保持在下电状态,直到接收到启动命令。随后的启动命令可以如图4和图6所示那样来处理。图4示出了可以响应于接收到启动命令而执行的处理。该处理包括框410处和判定框412处的处理。当处理到达判定框412时,该过程可以根据是否存在休眠文件来分支,比如休眠文件在子过程5 在紧接着在前的关闭期间被执行的情况下可以存在。当存在休眠文件时,图4的过程可以通过标记为A的连接点而分支以继续图6所示的处理。图6处的处理示出了在存在休眠文件时可以执行的过程。图6的处理可以在框 601开始。在框601,该处理可以根据在判定框412(图4)所检测到的休眠文件是否表示如结合子过程5 所示那样捕捉关闭期间的目标状态的休眠文件而分支。如果是这样,则该过程可以行进到判定框610。可替代地,休眠文件可以表示除了系统状态信息以外还合并了用户状态的常规休眠文件。这样的休眠文件可以根据用于复原该状态的常规技术来使用。该常规处理可以在子过程670执行,其中休眠文件被用于重新建立计算设备在之前休眠时的包括用户状态的状态。在完成子过程670以后,处理可以继续到框638。相反,如果休眠文件如在判定框601所确定的那样是作为关闭过程的一部分被记录的,则该过程继续到判定框610。在判定框610开始,可以执行一个或多个操作来确定 响应于启动命令,是应当执行完全启动序列还是应当执行从休眠恢复并且然后是部分启动序列。在该示例中,可以检查多个条件以确定是否应当即使在确定存在休眠文件的情况下仍然执行从休眠的恢复。在判定框610所检查的一个这样的条件需要确定对于计算设备 100而言是否已存在硬件配置的改变,使得从休眠的恢复可能导致重新创建与当前计算机配置不匹配的状态信息。这样的改变可以以任何合适的方式来检测,包括检查硬件组件的在上一次计算设备的会话期间被创建并被存储在非易失性存储器中的目录。可以检查计算设备在随后启动以后的硬件配置以保证该目录上的每个项目都被安装。但是应当理解,检查目录仅仅是可以如何执行这样的处理的一个示例。无论该确定是如何做出的,如果硬件配置已经改变,则该处理就可以从判定框610分支到子过程650。子过程650可能需要重新加载操作系统。子过程650处的处理可以使用本领域已知的技术来执行。在子过程650加载了操作系统以后,该过程可以行进到框632。相反 ,如果判定框610处的处理确定未进行硬件配置,则处理可以行进到框612。 在框612,可以执行另一处理以动态地确定计算设备100是否处于要从中执行从休眠的恢复的状态下。在这种情况下,判定框612处的处理可以利用在框524(图5)所存储的信息来确定在创建休眠文件之间发生的改变在执行从休眠的恢复的情况下是否使得将不满足用户预期。在该示例中,框612处的处理包括检查与包含休眠文件的卷相关联的NTFS序列号。如果该卷自从休眠文件被创建以来还未被加载,则在框612所读取的序列号将与在框 524所存储的序列号相差一个已知量,该已知量表示该序列号在启动以后的改变。相反,如果序列号的差异大于该已知量,则框612处的处理将标识出改变可能是在创建休眠文件的时间与触发从休眠的恢复的启动命令之间做出的。在判定框620,该过程可以基于在框612所执行比较而分支。如果序列号不一致, 则该过程分支到子过程750。这样的分支可以发生在序列号的差异指示休眠文件不能建立与用户预期一致的计算设备操作状态时。因此,执行子过程650,其中通过重新加载操作系统软件来创建系统状态140。相反,如果在框612处所执行的比较指示序列号一致,则该过程可以行进到子过程630。当采取该分支时,已经确定休眠文件适于重新建立计算设备的状态。因此,子过程 630需要从休眠文件重新建立计算设备的目标状态。子过程630可以使用用于从休眠恢复的已知技术来执行。但是在该场景中,不是重新建立计算设备的包括用户状态的状态,而是基于休眠文件的恢复重新创建在休眠文件曾被创建时的目标状态。该状态例如可以表示计算设备在子过程526 (图5)开始时的状态。但是在其他实施例中,可以在休眠文件中存储部分用户状态,这比如可能发生在操作系统预测到应用很可能在完成启动序列以后被用户打开,并且存储休眠文件以捕捉计算设备在这些应用仍然为打开时的状态时。在完成子过程630以后,图6的过程可以行进到框632。无论处理是通过子过程 630还是650到达框632,都可以在框632记录为了响应启动命令所需的时间。所记录的值的含义可以取决于处理到达框632的路径。当处理通过子过程630到达框632时,该时间表示用于作为该处理的一部分使用从休眠的恢复来启动的时间,并且被相应地记录。相反, 当处理通过子过程650到达框632时,该时间表示用于使用完全启动序列来启动的时间,并且被相应地记录。框632处的处理可以以任何合适的方式来执行,包括使用结合框444(图 4)所描述的技术。作为在框632记录信息的结果,判定框518 (图5)处的处理可以具有可用于将用于基于包括从休眠恢复的完全启动序列来响应启动命令的时间与该启动序列的一部分相比较的信息。该信息可以以任何合适的方式来记录和比较。然后,处理可以行进到子过程634。在子过程634,可以执行启动序列的一部分以为计算设备创建所期望的操作状态。该部分可以包括登录用户。该操作可以以任何已知方式来执行,并且可以包括自动登录或者可以呈现登录屏,通过该登录屏,用户可以呈现信息以人工地执行登录过程。在处理通过子过程650达到子过程634的场景中,子过程650和子过程634处的处理的组合可以表示完全启动序列。相反,如果处理通过子过程630到达子过程634,则对启动命令的响应包括从休眠恢复以及启动序列的一部分。在该示例中,启动序列的该部分表示在子过程634中登录用户。这样的处理可以使用常规技术来执行。但是用于在从休眠恢复以后完成启动序列的特定步骤可以是任何合适的技术。然后,该过程可以行进到框638,其中可以使休眠文件无效化。处理还可以在子过程670以后到达框638。无论处理如何到达框638,休眠文件都可以以在休眠文件可能重新创建不正确的操作状态时指示不应在后面使用该休眠文件的任何合适方式被无效化。例如可以通过以某种方式修改休眠文件的内容、在单独的存储器中记录该文件无效的结构或者通过删除该文件来使休眠文件无效化。然后,图6的过程结束。当该过程结束使,计算设备100可以被配置为操作状态, 并且此后可以继续操作直到接收到关闭或重新引导命令。图8示出了可在其上实现本发明的合适的计算系统环境800的示例。计算系统环境800只是合适计算环境的一个示例,而非意在暗示对本发明使用范围或功能有任何限制。也不应该将计算环境800解释为对示例性操作环境800中示出的任一组件或其组合有任何依赖性或要求。本发明可用各种其他通用或专用计算系统环境或配置来操作。适合在本发明中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、 手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、包含上述系统或设备中的任一个的分布式计算环境等。该计算环境可以执行计算机可执行指令,如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。参考图8,用于实现本发明的示例性系统包括计算机810形式的通用计算设备。 计算机810的组件可包括,但不限于,处理单元820、系统存储器830、以及将包括系统存储器的各种系统组件耦合到处理单元820的系统总线821。系统总线821可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会 (VESA)局部总线,以及也称为夹层总线的外围部件互连(PCI)总线。计算机810通常包括各种计算机可读介质。计算机可读介质可以是能由计算机 810访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于, RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字多功能盘(DVD)或其他光盘存储设备,磁带盒、磁带、磁盘存储设备或其他磁存储设备,或者能用于存储所需信息且可以由计算机810访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质, 以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。系统存储器830包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM) 831和随机存取存储器(RAM) 832。基本输入/输出系统833 (BIOS)包括如在启动期间帮助在计算机810内的元件之间传输信息的基本例程,它通常储存在ROM 831 中。RAM 832通常包含处理单元820可立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图8示出了操作系统834、应用程序835、其他程序模块836和程序数据837。计算机810也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图8示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器 840,从可移动、非易失性磁盘852中读取或向其写入的磁盘驱动器851,以及从诸如⑶ROM 或其他光学介质等可移动、非易失性光盘856中读取或向其写入的光盘驱动器855。硬盘驱动器840可以实现为旋转式磁介质,该磁介质包含一个或多个可以对磁介质进行写入或读取的磁头。可在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM 等。硬盘驱动器841通常由例如接口 840等不可移动存储器接口连接至系统总线821,而磁盘驱动器851和光盘驱动器855通常由例如接口 850等可移动存储器接口连接至系统总线 821以上讨论并在图8中示出的驱动器及其相关联的计算机存储介质为计算机810提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图8中,例如,硬盘驱动器841被示为存储操作系统844、应用程序845、其他程序模块846和程序数据847。注意, 这些组件可以与操作系统834、应用程序835、其他程序模块836和程序数据837相同,也可以与它们不同。在此操作系统844、应用程序845、其他程序模块846以及程序数据847被给予了不同的编号,以说明至少它们是不同的副本。用户可以通过输入设备,例如键盘862 和定点设备861——通常是指鼠标、跟踪球或触摸垫——向计算机810输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口 860连接至处理单元820,但也可以由其他接口和总线结构,例如并行端口、游戏端口或通用串行总线(USB)来连接。监视器 891或其他类型的显示设备也通过诸如视频接口 890之类的接口连接至系统总线821。除监视器之外,计算机也可包括诸如扬声器897和打印机896之类的其他外围输出设备,它们可以通过输出外围接口 895来连接。计算机810可以使用到一个或多个远程计算机(如远程计算机880)的逻辑连接,以在联网环境中操作。远程计算机880可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上关于计算机810所描述的元件, 但在图8中仅示出了存储器存储设备881。图8中所描绘的逻辑连接包括局域网(LAN)871 和广域网(WAN)873,但还可包括其他网络。这些联网环境在办公室、企业范围计算机网络、 内联网和因特网中是常见的。 当用于LAN网络环境中时,计算机810通过网络接口或适配器870连接到LAN 871。当在WAN联网环境中使用时,计算机810通常包括调制解调器872或用于通过诸如因特网等WAN 873建立通信的其他手段。调制解调器872,可以是内置的或外置的,可以经由用户输入接口 860或其他适当的机制,连接到系统总线821。在联网环境中,相对于计算机 810所描述的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制, 图8示出了远程应用程序885驻留在存储器设备881上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。例如,所描述的是,在启动以后基于所观察到的用于执行每个序列的相对时间来确定是执行完全启动序列还是从休眠恢复并然后是启动序列的一部分。应当理解,在关闭时可以执行类似的处理。如果在关闭时执行,则该判定可以通过存储或不存储休眠文件来实现。因此,应当理解,被描述为发生在启动以后的操作可替代地可以在关闭以后执行,并且反之亦然。上述优点可以以其他方式来实现。例如,除了避免计算机的CPU和诸如盘之类的其他组件的工作以外,在设置状态的过程期间,这样的方案允许数据响应于关闭命令被保存在休眠文件中,该休眠文件将帮助加快用户在对随后启动命令的响应期间和/或在启动命令的处理已经完成以后的体验。例如,当用户登录时,可以起动多个应用(例如WINDOWS EXPLORER web浏览器、启动应用等等)。操作系统可以显式地跟踪用户在启动命令的处理完成以后所定义的间隔期间所访问的文件(及其偏移量)。这些应用或其他组件可以被读取到要保存到休眠文件中的存储器中,其中该休眠文件在对关闭命令的随后处理期间被创建。通过这种方式,这些应用或其他组件将相继被从盘中读取到存储器中而不必作为起动这些应用的一部分随机地读取这些应用。而且描述了用户登录和注销。应当理解,可以在多个用户登录到计算机上的场景中提供关闭命令。如果部分地执行关闭序列并且然后执行休眠操作,则部分关闭序列可能导致多个用户注销,但是尽管如此仍然可以应用上述技术。例如,在此所述的技术可以用于提供自动服务而不用用户介入。例如,已经通过执行部分关闭序列并然后休眠来响应关闭命令的计算设备可以被配置为自动地在未预期用户活动时、比如在午夜醒来。醒来以后,计算设备可以执行维护活动,比如应用软件更新。对于用户而言,就好像计算设备是在一天结束时被关闭的,使得维护活动对用户是透明的。例如如果计算设备响应于关闭命令检测到其具有要应用的维护活动或者补丁并且将其自己设置为在合适时间醒,则可以实现这样的能力。当其醒来时,计算设备执行任何必要的维护活动,比如应用补丁。然后,该系统进行完全重新起动并且然后再次执行部分关闭,然后是休眠。该场景使得软件供应商能够提供使维护活动对用户不可见的解决方案。该能力可以应用于消费者和企业PC 二者。除了改善用户体验以后,尤其是对于企业用户而言,这样的方案还可以省电。这样的更改、修改和改进旨在是本发明的一部分,且旨在处于本发明的精神和范围内。从而,上述描述和附图仅用作示例。可以多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或其组合来实现各实施例。当使用软件实现时,该软件代码可在无论是在单个计算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器集合上执行。该处理器可被实现为集成电路,集成电路组件中具有一个或多个处理器。然而,可使用电路按照任何适合的方式来实现处理器。此外,应当理解,计算机可以用多种形式中的任一种来具体化,如机架式计算机、 台式计算机、膝上型计算机、或平板计算机。此外,计算机可以具体化在通常不被认为是计算机但具有合适的处理能力的设备中 ,包括个人数字助理(PDA)、智能电话、或任何其他适合的便携式或固定电子设备。同样,计算机可以具有一个或多个输入和输出设备。这些设备主要可用于呈现用户界面。可用于提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算机可以通过语音识别或以其他可听格式来接收输入信息。这些计算机可以通过任何合适形式的一个或多个网络来互连,包括作为局域网或广域网,如企业网络或因特网。这些网络可以基于任何合适的技术并可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。此外,这样的软件可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。就此,本发明可被具体化为用一个或多个程序编码的一个计算机可读存储介质 (或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、紧致盘(⑶)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列或其他半导体器件中的电路配置、或其他非瞬态的有形计算机存储介质),当这些程序在一个或多个计算机或其他处理器上执行时,它们执行实现本发明的上述各个实施例的方法。计算机可读存储介质或媒质可以是可转移的, 使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其它处理器上以便实现本发明上述的各个方面。如此处所使用的,术语“非瞬态计算机可读存储介质”只包含可被认为是产品(即,制品)或机器的计算机可读介质。可替代地或附加地,本发明可以体现为除了计算机可读存储介质以外的计算机可读截止,比如传播信号。此处以一般的意义使用术语“程序”或“软件”来指可被用来对计算机或其他处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或计算机可执行指令集。另夕卜,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。
计算机可执行指令可以具有可由一个或多个计算机或其他设备执行的各种形式, 诸如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以按需在多个实施例中进行组合或分布。而且,数据结构能以任何适合的形 式存储在计算机可读介质上。为简化说明,数据结构可被示为具有通过该数据结构中的位置而相关的字段。这些关系同样可以通过对各字段的存储分配传达各字段之间的关系的计算机可读介质中的位置来得到。然而,可以使用任何适合的机制在数据结构的各字段中的信息之间建立关系,包括通过使用指针、标签、或在数据元素之间建立关系的其他机制。本发明的各个方面可单独、组合或以未在前述实施例中特别讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图形中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。同样,本发明可被具体化为方法,其示例已经提供。作为该方法的一部分所执行的动作可以按任何适合的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、 或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对 “包括”、“包含”、或“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。
权利要求
1.一种用于操作包括多个硬件组件(110,870)的计算设备(100)的方法,该方法包括接收用于关闭该计算设备的命令(714);以及响应于所接收的关闭命令部分地完成关闭序列,直到该计算设备处于目标状态(514,522); 当该计算设备处于该目标状态时,将定义该计算设备的状态的信息传输到非易失性存储(5 );以及使所述多个硬件组件的至少一部分下电。
2.如权利要求1所述的方法,其特征在于部分完成该关闭序列包括结束所有用户会话(514)。
3.如权利要求1所述的方法,其特征在于,还包括 接收用于启动该计算设备的命令;响应于所接收的启动命令使所述多个硬件组件的至少一部分上电;将定义该计算设备的状态的信息从该非易失性存储传输到易失性存储(630);以及部分地完成启动序列(643)。
4.如权利要求3所述的方法,其特征在于,还包括 接收用于启动该计算设备的第二命令(715);响应于所接收的第二启动命令 使所述多个硬件组件的至少一部分上电; 完全执行该启动序列G50)。
5.如权利要求1所述的方法,其特征在于,还包括 接收用于关闭该计算设备的第二命令;响应于所接收的第二关闭命令,完全完成该关闭序列(530)。
6.一种包括计算机可执行指令的计算机可读存储介质(830),所述计算机可执行指令实现计算设备的操作系统,该操作系统包括实现启动序列的多个组件,并且所述计算机可执行指令在被执行时实现一种方法,该方法包括接收用于启动该计算设备的命令; 响应于所接收的启动命令将定义该计算设备的第一状态的信息从非易失性存储传输到易失性存储(630); 选择性地执行所述多个组件的仅仅一部分,所述多个组件的该部分实现引导序列以创建该计算设备的第二状态,第二状态不同于第一状态(634);以及基于第二状态操作该计算设备。
7.如权利要求6所述的计算机可读存储介质,其特征在于 该操作系统还包括实现关闭序列的第二多个组件;以及由所述计算机可执行指令实现的该方法还包括接收用于关闭该计算设备的命令(714);以及响应于所接收的关闭命令执行所述第二多个组件的仅仅一部分以将该计算设备置于第一状态(514,522,5 );当该计算设备处于第一状态时,将定义第一状态的信息传输到非易失性存储(526)。
8.如权利要求7所述的计算机可读存储介质,其特征在于传输定义第一状态的信息包括将该信息复制到随后被访问的存储设备上的文件中。
9.如权利要求7所述的计算机可读存储介质,其特征在于在该计算设备上加载至少一个驱动程序,并且该操作系统的至少一个服务在第一状态下执行(426)。
10.如权利要求7所述的计算机可读存储介质,其特征在于所述多个组件的实现启动序列的部分包括第一部分,并且所述多个组件包括组件的未被包括在第一部分中的第二部分;以及第二部分包括用于发现连接到该计算设备的设备的组件(424)。
全文摘要
本发明涉及快速计算机启动。通过在接收到关闭命令以后记录表示目标状态的状态信息来提供快速计算机启动。在该目标状态下,该计算设备可能已经关闭所有用户会话,使得没有用户状态信息被包括在目标状态中。然而,操作系统可能仍然在执行。响应于用于启动计算机的命令,可以快速地从所记录的目标状态信息中重新建立该目标状态。可以执行启动序列的部分以完成启动过程,包括建立用户状态。为了不论改变如何都保护响应于关闭命令的用户预期,保持所记录的状态信息的文件的创建和使用可以以动态确定的事件为条件。而且,用户和编程接口可以提供选项以越过所记录的状态信息的创建或使用。
文档编号G06F9/445GK102436387SQ20111041818
公开日2012年5月2日 申请日期2011年12月6日 优先权日2010年12月6日
发明者B·E·金, E·N·威尔森, K·V·施塔克, M·伊伊根, N·简恩, P·L·斯特门, S·张, V·卡拉古尼斯, Y·巴克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1