專利名稱:快速計(jì)算機(jī)啟動(dòng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及快速計(jì)算機(jī)啟動(dòng)。
背景技術(shù):
計(jì)算機(jī)具有范圍為從完全操作到完全關(guān)閉的若干操作模式。在完全操作中,定義操作系統(tǒng)的執(zhí)行部分的軟件已經(jīng)從非易失性存儲(chǔ)器加載到易失性存儲(chǔ)器中,從該易失性存儲(chǔ)器中,所述執(zhí)行部分可以更快速地執(zhí)行。該計(jì)算機(jī)通過“啟動(dòng)”過程(process)進(jìn)入該完全操作模式。啟動(dòng)過程配置硬件并且加載計(jì)算機(jī)的操作系統(tǒng)。作為啟動(dòng)過程的一部分,驅(qū)動(dòng)程序被安裝,并且操作系統(tǒng)服務(wù)被啟動(dòng)。一旦計(jì)算機(jī)為任何用戶的操作做好準(zhǔn)備,則用戶就可以登錄到該計(jì)算機(jī)。該登錄還可以包括基于所登錄的用戶專用的簡檔來配置該計(jì)算機(jī)。要么自動(dòng)地,要么響應(yīng)于用戶輸入,應(yīng)用然后可以被加載,使得這些應(yīng)用可以在利用該計(jì)算設(shè)備的硬件和操作系統(tǒng)服務(wù)的能力的情況下執(zhí)行。在無論是為操作系統(tǒng)還是應(yīng)用加載軟件的過程中,存儲(chǔ)器都可以被分配,軟件的參數(shù)可以基于計(jì)算機(jī)的硬件配置或用戶簡檔被賦值,并且其他配置動(dòng)作可以被執(zhí)行。這些動(dòng)作建立計(jì)算設(shè)備的“狀態(tài)”。對(duì)系統(tǒng)的存儲(chǔ)器和定義該系統(tǒng)的操作狀態(tài)的其他參數(shù)的進(jìn)一步改變還可以在用戶提供命令以與執(zhí)行中的應(yīng)用或操作系統(tǒng)服務(wù)交互時(shí)進(jìn)行。在完全關(guān)閉模式下,不給計(jì)算機(jī)的硬件組件供電。未在易失性存儲(chǔ)器中存儲(chǔ)軟件或狀態(tài)信息,因?yàn)樵摯鎯?chǔ)器不能在掉電時(shí)保留信息。更具體而言,在非易失性存儲(chǔ)器中存儲(chǔ)將在后面用于重新配置計(jì)算機(jī)以用于完全操作模式的任何信息。計(jì)算機(jī)通過稱為關(guān)閉的過程進(jìn)入關(guān)閉模式。在關(guān)閉期間,為了重新配置計(jì)算機(jī)可能需要的任何信息在還未存儲(chǔ)在非易失性存儲(chǔ)中的情況下都可以存儲(chǔ)在非易失性存儲(chǔ)器中。已經(jīng)從非易失性存儲(chǔ)器復(fù)制到易失性存儲(chǔ)器中的軟件和其他配置信息不被復(fù)制回非易失性存儲(chǔ)器,因?yàn)檫@些信息可以在隨后的啟動(dòng)過程時(shí)被重新創(chuàng)建。然而,在易失性存儲(chǔ)器高速緩存了從非易失性存儲(chǔ)器所復(fù)制的數(shù)據(jù)并且該數(shù)據(jù)在被復(fù)制以后已經(jīng)被修改(有時(shí)稱為“臟”數(shù)據(jù))的條件下,該數(shù)據(jù)在關(guān)閉期間被復(fù)制到非易失性存儲(chǔ)器。另一變型稱為注銷(log off)。在支持用戶會(huì)話的計(jì)算機(jī)中,用戶可以登錄到該計(jì)算機(jī)以訪問其功能。盡管關(guān)閉有效地使用戶注銷,但是可能在執(zhí)行了單獨(dú)的注銷過程以后計(jì)算機(jī)未被掉電。更具體而言,操作系統(tǒng)保持為被加載的,并且準(zhǔn)備好供另一用戶登錄。在注銷期間,計(jì)算機(jī)“中止”用戶會(huì)話。中止用戶會(huì)話可能需要關(guān)閉用戶起動(dòng)的應(yīng)用,并且存儲(chǔ)還未處于非易失性存儲(chǔ)器中的用戶專用數(shù)據(jù)。除了完全關(guān)閉或注銷以外,還可以存在省電模式,其中關(guān)閉計(jì)算機(jī)的一些或所有硬件組件的電源。在有時(shí)稱為睡眠模式的省電模式下,關(guān)閉計(jì)算機(jī)處理器、網(wǎng)絡(luò)接口以及可能還有其他組件的電源。然而,為易失性存儲(chǔ)器保留電源。通過這種方式,在計(jì)算機(jī)的引導(dǎo)或隨后操作期間所創(chuàng)建的任何狀態(tài)信息都被保留在易失性存儲(chǔ)器中。當(dāng)再次給處理器供電時(shí),該處理器可以將操作恢復(fù)到處理器在進(jìn)入睡眠模式以后所離開的狀態(tài)。另一模式有時(shí)稱為休眠模式。計(jì)算機(jī)通過稱為休眠的過程進(jìn)入該模式。在休眠期間,捕捉計(jì)算機(jī)的操作狀態(tài)的文件被創(chuàng)建并且被存儲(chǔ)在非易失性存儲(chǔ)器中、通常為硬盤中。 在從休眠恢復(fù)的過程期間,該文件可以被從該盤中讀取,并且用于重新創(chuàng)建在休眠時(shí)曾經(jīng)存在的計(jì)算機(jī)狀態(tài)。從休眠的恢復(fù)在易失性存儲(chǔ)器中還原操作期間的在休眠時(shí)曾經(jīng)存在的軟件副本或參數(shù)集,使得任何用戶狀態(tài)也被還原。處于若干原因,從休眠的恢復(fù)可以比執(zhí)行完全啟動(dòng)更快。一個(gè)原因是,將休眠文件中的狀態(tài)信息復(fù)制到易失性存儲(chǔ)器中將重新創(chuàng)建完全啟動(dòng)過程的結(jié)果,同時(shí)避免在執(zhí)行啟動(dòng)過程的步驟(比如CPU消耗、設(shè)備初始化)以及在引導(dǎo)期間必須進(jìn)行的許多其它類型的工作方面花費(fèi)時(shí)間。附加地,在啟動(dòng)期間所訪問的信息存儲(chǔ)在許多不同的文件中,這些文件表示為了加載和配置有可能操作系統(tǒng)中的上萬個(gè)組件而被訪問的不同組件。這些組件以及為了配置它們而被訪問的信息可以隨機(jī)地分布在硬盤上。由于硬盤驅(qū)動(dòng)器、以及其他一些形式的高容量存儲(chǔ)在訪問順序的數(shù)據(jù)方面是最高效的,因此訪問隨機(jī)分布的數(shù)據(jù)可能包括顯著的盤訪問時(shí)間,從而導(dǎo)致長時(shí)間的啟動(dòng)過程。相比之下,讀取休眠文件的訪問時(shí)間是更少的,因?yàn)樵撐募械男畔⒖梢皂樞虻卮鎯?chǔ)在盤上。從休眠的恢復(fù)與啟動(dòng)之間的另一區(qū)別是,休眠然后恢復(fù)將還原計(jì)算機(jī)的完全狀態(tài),包括計(jì)算機(jī)的用戶在計(jì)算機(jī)休眠時(shí)的任何用戶狀態(tài)。相比之下,直到用戶登錄為止,啟動(dòng)都將通用地為任何用戶配置計(jì)算機(jī)。然后,特定用戶可以登錄或以其他方式采取動(dòng)作以為他們自己配置該計(jì)算機(jī)。出于該原因,打算暫時(shí)離開計(jì)算機(jī)、但是打算返回該計(jì)算機(jī)的用戶通常選擇休眠。如下的用戶通常使用關(guān)閉該用戶打算較長時(shí)間離開計(jì)算機(jī),可能根本不返回該計(jì)算機(jī)或者預(yù)期其他用戶可能在該用戶返回以前使用該計(jì)算機(jī)。
發(fā)明內(nèi)容
為了改善用戶體驗(yàn),計(jì)算機(jī)可以被配置為通過進(jìn)入休眠模式來響應(yīng)用于關(guān)閉的用戶命令。這樣的計(jì)算機(jī)可以在用戶提供用于啟動(dòng)計(jì)算機(jī)的命令以后更快地準(zhǔn)備好以供用戶操作。為了使得計(jì)算機(jī)能夠快速地準(zhǔn)備好以供在與用戶預(yù)期一致的狀態(tài)下操作,休眠文件捕捉實(shí)現(xiàn)用戶預(yù)期的目標(biāo)狀態(tài)。響應(yīng)于關(guān)閉命令,計(jì)算機(jī)在休眠以前通過僅僅執(zhí)行關(guān)閉過程中的步驟的一部分來創(chuàng)建該目標(biāo)狀態(tài)。所執(zhí)行的步驟可以將計(jì)算機(jī)置于目標(biāo)狀態(tài)中,該狀態(tài)對(duì)應(yīng)于操作系統(tǒng)保持被加載但用戶會(huì)話已經(jīng)中止的狀態(tài)。在接收到啟動(dòng)命令以后,計(jì)算機(jī)系統(tǒng)可以不是通過加載和配置軟件來創(chuàng)建操作狀態(tài),而是通過將休眠文件復(fù)制到易失性存儲(chǔ)器中來重新創(chuàng)建目標(biāo)狀態(tài)。然后,計(jì)算機(jī)可以僅僅執(zhí)行啟動(dòng)序列的部分。這些部分可以包括按常規(guī)將在操作系統(tǒng)被加載以后的啟動(dòng)序列期間發(fā)生的操作。這些步驟例如可以包括與用戶交互以執(zhí)行用戶登錄并且加載定義用戶狀態(tài)的應(yīng)用。在一些實(shí)施例中,可以響應(yīng)于指示關(guān)閉的用戶命令來執(zhí)行有條件的處理。計(jì)算設(shè)備例如可以確定計(jì)算設(shè)備是否處于需要完全關(guān)閉的操作狀態(tài)中或者創(chuàng)建將響應(yīng)于隨后的啟動(dòng)命令來使用的休眠文件是否是合適的。這樣的狀態(tài)可以以多種方式中的任何方式來標(biāo)識(shí)出,包括通過確定所安裝的一些組件的配置設(shè)定已被改變并且將不被應(yīng)用直到該組件再次作為完全啟動(dòng)序列的一部分被加載??商娲?,可以提供編程應(yīng)用接口,該編程應(yīng)用接口允許應(yīng)用組件在需要完全關(guān)閉時(shí)注冊(cè)。如果檢測到這樣的條件,則可以執(zhí)行常規(guī)關(guān)閉處理,直到計(jì)算設(shè)備被完全下電。如果不是,則可以執(zhí)行關(guān)閉序列,直到計(jì)算設(shè)備處于可從中制定休眠文件的目標(biāo)狀態(tài)。在一些實(shí)施例中,可以響應(yīng)于用于啟動(dòng)的用戶命令來執(zhí)行有條件的處理。該有條件的處理可以包括確定是否存在休眠文件。如果是這樣,則可以進(jìn)一步檢查是否可能計(jì)算設(shè)備的目標(biāo)狀態(tài)已經(jīng)在休眠文件被創(chuàng)建的時(shí)間與啟動(dòng)命令被接收到的時(shí)間之間發(fā)生了改變。如果檢測到可能已經(jīng)導(dǎo)致狀態(tài)改變的事件,則計(jì)算設(shè)備可以執(zhí)行完全啟動(dòng)序列。以上是對(duì)由所附權(quán)利要求書所定義的本發(fā)明的非限定性的概述。
附圖不旨在按比例繪制。在附圖中,各個(gè)附圖中示出的每個(gè)相同或近乎完全相同的組件由同樣的附圖標(biāo)記來表示。出于簡明的目的,不是每個(gè)組件在每張附圖中均被標(biāo)記。 在附圖中圖1是示出了計(jì)算設(shè)備中的啟動(dòng)序列的概念框圖;圖2是示出了計(jì)算設(shè)備中的從休眠序列的恢復(fù)的功能框圖;圖3是根據(jù)本發(fā)明的一些實(shí)施例的快速啟動(dòng)序列的功能框圖;圖4是根據(jù)本發(fā)明的一些實(shí)施例的用于響應(yīng)于啟動(dòng)命令來操作計(jì)算機(jī)的方法的流程圖;圖5是示出根據(jù)本發(fā)明的一些實(shí)施例的用于響應(yīng)于關(guān)閉命令來操作計(jì)算設(shè)備的方法的流程圖;圖6是根據(jù)本發(fā)明的一些實(shí)施例的可以被有條件地執(zhí)行的啟動(dòng)序列的一部分的流程圖;圖7是圖形用戶界面的一部分的草圖,通過該圖形用戶界面,用戶可以在致使計(jì)算設(shè)備在關(guān)閉以后的不同行為的命令之間進(jìn)行選擇;以及圖8是一示例性計(jì)算設(shè)備的框圖,該計(jì)算設(shè)備示出了本發(fā)明的各實(shí)施例可以在其中操作的示例性環(huán)境。
具體實(shí)施例方式本發(fā)明已經(jīng)認(rèn)識(shí)到和理解的是,通過結(jié)合計(jì)算設(shè)備的關(guān)閉和/或啟動(dòng)序列的部分使用休眠文件,可以改善計(jì)算設(shè)備的用戶體驗(yàn)。這樣的文件可以選擇性地在關(guān)閉以后創(chuàng)建并且選擇性地在啟動(dòng)以后使用,使得計(jì)算設(shè)備的性能與用戶預(yù)期相匹配。即時(shí)當(dāng)休眠文件被創(chuàng)建或使用時(shí),仍然可以執(zhí)行常規(guī)關(guān)閉或啟動(dòng)序列的部分。為了提供計(jì)算設(shè)備的與用戶預(yù)期一致的操作,可以結(jié)合計(jì)算設(shè)備的將該計(jì)算設(shè)備置于目標(biāo)狀態(tài)中的傳統(tǒng)關(guān)閉序列的部分來使用休眠。這些部分可以包括在接收到關(guān)閉命令以后中止用戶會(huì)話的操作。另外,作為對(duì)關(guān)閉命令的響應(yīng)的一部分,在用戶會(huì)話被中止以后保留在易失性存儲(chǔ)器中、但是打算保留在非易失性存儲(chǔ)器中的信息被移動(dòng)到非易失性存儲(chǔ)器。例如,可以執(zhí)行常規(guī)的高速緩存轉(zhuǎn)儲(chǔ)清除操作,所述操作模擬在常規(guī)關(guān)閉期間所執(zhí)行的操作。
相反,在處理啟動(dòng)命令以后,從休眠的恢復(fù)可以與啟動(dòng)序列的部分一起執(zhí)行。該序列可以包括啟動(dòng)序列的在操作系統(tǒng)被加載并且為操作準(zhǔn)備好以后發(fā)生的任何部分。啟動(dòng)序列的該部分例如可以包括用戶登錄和加載應(yīng)用。另外,為了提供與用戶體驗(yàn)一致的操作,可以根據(jù)動(dòng)態(tài)確定的事件來調(diào)節(jié)作為關(guān)閉或啟動(dòng)的一部分的休眠文件的創(chuàng)建或使用。在組件已經(jīng)在操作會(huì)話期間被重新配置使得配置改變?cè)谠摻M件下次被加載以前一直不被應(yīng)用的場景中,不創(chuàng)建休眠文件。響應(yīng)于來自用戶的下一啟動(dòng)命令,該計(jì)算機(jī)將檢測到?jīng)]有休眠文件為可用的,并且通過重新加載操作系統(tǒng)來創(chuàng)建目標(biāo)狀態(tài)??商娲鼗蚋郊拥?,操作系統(tǒng)可以提供如下的接口 通過該接口,其他組件可以注冊(cè)以用信號(hào)通知它們需要完全關(guān)閉或啟動(dòng)以有效地運(yùn)行。當(dāng)執(zhí)行中的組件被注冊(cè)時(shí),可以響應(yīng)于關(guān)閉命令執(zhí)行完全關(guān)閉序列。另外,在一些實(shí)施例中,為了與用戶預(yù)期一致地運(yùn)行,可以提供如下的用戶界面 通過該用戶界面,用戶可以指定是執(zhí)行常規(guī)關(guān)閉還是經(jīng)修改的關(guān)閉,其中創(chuàng)建目標(biāo)狀態(tài)并且然后執(zhí)行休眠過程。這樣的用戶界面可以呈現(xiàn)用于常規(guī)關(guān)閉以及合并了休眠的經(jīng)修改的關(guān)閉序列的單獨(dú)選項(xiàng)。計(jì)算設(shè)備可以響應(yīng)于被標(biāo)記為常規(guī)關(guān)閉命令的輸入而有條件地調(diào)用經(jīng)修改的關(guān)閉序列。單獨(dú)的命令選項(xiàng)可以通過可被用戶用來指定常規(guī)關(guān)閉的界面來提供?,F(xiàn)在轉(zhuǎn)到圖1,示出了完全啟動(dòng)序列的功能框圖。圖1是示出了可以適于根據(jù)本發(fā)明的實(shí)施例操作的計(jì)算設(shè)備100的功能框圖。在該示例中,計(jì)算設(shè)備100包括易失性存儲(chǔ)器120。易失性存儲(chǔ)器120可以使用 DRAM或任何其他合適的存儲(chǔ)器組件來實(shí)現(xiàn)。由計(jì)算設(shè)備100執(zhí)行的啟動(dòng)序列包括在易失性存儲(chǔ)器120內(nèi)創(chuàng)建狀態(tài)信息,該狀態(tài)信息允許計(jì)算設(shè)備100執(zhí)行本領(lǐng)域中已知的計(jì)算操作。在該示例中,該狀態(tài)信息被示為具有兩個(gè)部分用戶狀態(tài)信息130和系統(tǒng)狀態(tài)信息140。系統(tǒng)狀態(tài)信息140表示通用地配置計(jì)算系統(tǒng)100以供任何用戶進(jìn)行操作的狀態(tài)信息。相比之下,用戶狀態(tài)信息130表示可以在計(jì)算設(shè)備100被操作或配置為供特定用戶操作時(shí)被生成的狀態(tài)信息。系統(tǒng)狀態(tài)信息140和用戶狀態(tài)信息130可以根據(jù)本領(lǐng)域中已知的啟動(dòng)過程在易失性存儲(chǔ)器120中創(chuàng)建。圖1以簡化的概念化形式示出了常規(guī)啟動(dòng)序列中的步驟。這樣的序列例如可以在計(jì)算設(shè)備100被上電或者其他用信號(hào)通知啟動(dòng)的命令被提供時(shí)被發(fā)起。計(jì)算設(shè)備100可以包括本領(lǐng)域已知的組件。這些組件可以包括處理器110。處理器110可以實(shí)現(xiàn)為本領(lǐng)域已知的微處理器、或者微處理器或處理器核的集合。在此所述的操作可以是處理器110執(zhí)行軟件指令的結(jié)果。附加地,計(jì)算設(shè)備100可以合并多種類型的計(jì)算機(jī)存儲(chǔ)介質(zhì)。在這種情況下,這些類型包括易失性存儲(chǔ)器和非易失性存儲(chǔ)器。在該示例中,示出了易失性存儲(chǔ)器120。各種類型的信息存儲(chǔ)在非易失性存儲(chǔ)器150和152中。引導(dǎo)存儲(chǔ)器IM也是非易失性存儲(chǔ)器??梢允褂貌煌奈锢碓O(shè)備來實(shí)現(xiàn)非易失性存儲(chǔ)器150和152以及引導(dǎo)存儲(chǔ)器154。例如,非易失性存儲(chǔ)器150可以是盤,比如旋轉(zhuǎn)式硬盤或固態(tài)驅(qū)動(dòng)器。非易失性存儲(chǔ)器152可以類似于盤,并且可以是用于實(shí)現(xiàn)非易失性存儲(chǔ)器150的同一盤、同一盤上的不同分區(qū)、或者整個(gè)不同的盤。非易失性存儲(chǔ)器154同樣可以是用于實(shí)現(xiàn)非易失性存儲(chǔ)器150和152的同一設(shè)備的一部分。但是在所示的實(shí)施例中,非易失性存儲(chǔ)器巧4可以是連接到處理器110的非易失性存儲(chǔ)器芯片。因此,應(yīng)當(dāng)理解,圖1僅僅表示存儲(chǔ)器架構(gòu)的一個(gè)示例,并且可以使用任何合適的存儲(chǔ)器架構(gòu)。在該示例中,示出了非易失性存儲(chǔ)器和易失性存儲(chǔ)器。這樣的配置表示傳統(tǒng)的計(jì)算機(jī)架構(gòu)。但是不要求使用該特定架構(gòu)。更確切而言,易失性存儲(chǔ)器120是操作存儲(chǔ)器的一示例。在計(jì)算設(shè)備100的操作期間,處理器110可以主要從易失性存儲(chǔ)器120訪問軟件和數(shù)據(jù)以執(zhí)行操作。該存儲(chǔ)器可以為相對(duì)高速的,使得操作可以由處理器110快速地執(zhí)行。相比之下,諸如非易失性存儲(chǔ)器150和152之類的非易失性存儲(chǔ)器能夠存儲(chǔ)大量數(shù)據(jù),但是可能比易失性存儲(chǔ)器120更慢地操作。一般而言,在這樣的非易失性存儲(chǔ)器中存儲(chǔ)信息的成本與在易失性存儲(chǔ)器120中存儲(chǔ)信息的成本相比可能是相對(duì)小的。為了實(shí)現(xiàn)成本效益、還有高速的操作,信息可以在非易失性存儲(chǔ)器與易失性存儲(chǔ)器之間傳輸。這些傳輸被執(zhí)行以在易失性存儲(chǔ)器120內(nèi)創(chuàng)建支持計(jì)算設(shè)備100的所期望的操作的狀態(tài)??梢源嬖谟?jì)算系統(tǒng)的其他組件,但是這些組件為簡單起見被省略。下面結(jié)合圖8 提供可在其他實(shí)施例中存在的組件的更多細(xì)節(jié)。然而,圖1中的簡圖足以解釋啟動(dòng)過程。響應(yīng)于啟動(dòng)命令,處理器110可以訪問和執(zhí)行引導(dǎo)存儲(chǔ)器154中的指令。弓丨導(dǎo)存儲(chǔ)器巧4可以包含如下指令所述指令致使處理器110訪問非易失性存儲(chǔ)器150和152、以及基于存儲(chǔ)在這些存儲(chǔ)器中的軟件和數(shù)據(jù)在易失性存儲(chǔ)器120中生成合適的狀態(tài)。引導(dǎo)存儲(chǔ)器154中的指令可以致使處理器110從非易失性存儲(chǔ)器150加載軟件。 作為加載軟件組件的一部分,處理器110可以將軟件指令傳輸?shù)揭资源鎯?chǔ)器120,其中該軟件可以從該易失性存儲(chǔ)器120中被執(zhí)行。但是加載軟件可以包括其他操作,包括執(zhí)行一些組件。從易失性存儲(chǔ)器120執(zhí)行一些組件可以將使軟件從該軟件被存儲(chǔ)的狀態(tài)變換為該軟件被用于致使其他組件從非易失性存儲(chǔ)器傳輸?shù)揭资源鎯?chǔ)器120的狀態(tài)。在加載軟件的過程中,處理器110可以基于存儲(chǔ)在非易失性存儲(chǔ)器152中的數(shù)據(jù)或其他信息來配置該軟件。該信息例如可以包括關(guān)于安裝在計(jì)算設(shè)備100中的硬件組件的信息。因此,圖1 示出了 啟動(dòng)過程的第二和第三步驟可以是從非易失性存儲(chǔ)器150獲取軟件以及從非易失性存儲(chǔ)器152獲取數(shù)據(jù)。在該過程中加載的第一軟件可以建立系統(tǒng)狀態(tài)140。最初加載的軟件可以向系統(tǒng)狀態(tài)140添加控制硬件組件的驅(qū)動(dòng)程序146。在加載驅(qū)動(dòng)程序以前,可以標(biāo)識(shí)出與計(jì)算設(shè)備100相關(guān)聯(lián)的硬件組件并且選擇合適的驅(qū)動(dòng)程序。一旦驅(qū)動(dòng)程序被安裝,則操作系統(tǒng)服務(wù)以及其他組件就可以與通過該驅(qū)動(dòng)程序被控制的設(shè)備進(jìn)行交互。然后,可以加載操作系統(tǒng)服務(wù)142。這樣的服務(wù)的一個(gè)示例是文件管理器144。文件管理器144可以將易失性存儲(chǔ)器中的數(shù)據(jù)組織為使得執(zhí)行中的操作系統(tǒng)服務(wù)和應(yīng)用可以訪問非易失性存儲(chǔ)器中的根據(jù)文件組織的數(shù)據(jù)。由操作系統(tǒng)所提供的其他服務(wù)可以包括與用戶界面交互;建立網(wǎng)絡(luò)連接;或者向打印機(jī)發(fā)送信息。但是特定的操作系統(tǒng)服務(wù) 142不是對(duì)本發(fā)明的限制。附加地,在建立系統(tǒng)狀態(tài)140的過程期間,處理器110可以存儲(chǔ)系統(tǒng)狀態(tài)數(shù)據(jù)148。 這樣的數(shù)據(jù)可以從諸如非易失性存儲(chǔ)器152之類的非易失性存儲(chǔ)器來復(fù)制,或者可以通過執(zhí)行軟件組件來生成。例如,該數(shù)據(jù)可以在處理器110執(zhí)行發(fā)現(xiàn)安裝在計(jì)算設(shè)備100內(nèi)的設(shè)備的指令時(shí)被生成。作為特定的示例,在發(fā)現(xiàn)特定網(wǎng)絡(luò)接口卡以后,處理器110可以作為系統(tǒng)狀態(tài)數(shù)據(jù)148的一部分記錄網(wǎng)絡(luò)接口卡的類型或能力。然后,該數(shù)據(jù)可以在計(jì)算設(shè)備的操作期間被用于控制與網(wǎng)絡(luò)接口卡的交互。但是應(yīng)當(dāng)理解,作為系統(tǒng)狀態(tài)數(shù)據(jù)148所存儲(chǔ)的特定數(shù)據(jù)對(duì)于本發(fā)明而言不是關(guān)鍵性的。無論特定操作系統(tǒng)服務(wù)142和在系統(tǒng)狀態(tài)信息140中所創(chuàng)建的系統(tǒng)狀態(tài)數(shù)據(jù)148 如何,當(dāng)該系統(tǒng)狀態(tài)信息140被創(chuàng)建時(shí),計(jì)算設(shè)備100都可以準(zhǔn)備好以供用戶進(jìn)行操作。因此,啟動(dòng)序列可以繼續(xù)有時(shí)稱為用戶登錄的過程。作為用戶登錄的一部分,可以標(biāo)識(shí)出特定用戶,并且可以在易失性存儲(chǔ)器120中創(chuàng)建另外的狀態(tài)信息以允許計(jì)算設(shè)備100為該用戶執(zhí)行操作。在該示例中,用戶狀態(tài)信息130被示為包含應(yīng)用指令132和用戶狀態(tài)數(shù)據(jù)134。如同表示操作系統(tǒng)組件的指令和表示系統(tǒng)狀態(tài)的數(shù)據(jù)那樣,應(yīng)用指令132可以基于存儲(chǔ)在易失性存儲(chǔ)器150上的軟件被加載到存儲(chǔ)器中。但是加載軟件的過程可能需要執(zhí)行合適地配置軟件或計(jì)算設(shè)備以供操作的功能。該配置可以取決于系統(tǒng)狀態(tài)數(shù)據(jù)148或用戶狀態(tài)數(shù)據(jù)134。僅作為一個(gè)示例,在加載實(shí)現(xiàn)web瀏覽器的應(yīng)用指令以后,處理器110可以要么從非易失性存儲(chǔ)器152、要么從用戶狀態(tài)數(shù)據(jù)134中訪問表示用戶數(shù)據(jù)的信息,所述信息標(biāo)識(shí)出已經(jīng)被用戶標(biāo)識(shí)為“最喜愛項(xiàng)目”的特定web站點(diǎn)。在該示例中,建立用戶狀態(tài)數(shù)據(jù)130 根據(jù)用戶偏好來配置web瀏覽器以供執(zhí)行,這將包括呈現(xiàn)為已經(jīng)登錄到計(jì)算設(shè)備100的特定用戶定制的最喜愛項(xiàng)目的列表。一旦用戶登錄完成,該用戶然后就可以于計(jì)算設(shè)備100交互。這些交互可以導(dǎo)致更多軟件被加載或者一些加載的應(yīng)用被關(guān)閉。附加地,用戶交互可以設(shè)置參數(shù)或者采取可以要么改變用戶狀態(tài)130要么改變系統(tǒng)狀態(tài)140的其他動(dòng)作。這些交互可以繼續(xù),直到用戶輸入指示結(jié)束會(huì)話的意圖的命令。該會(huì)話可以以多種方式結(jié)束。例如,當(dāng)用戶完成與計(jì)算設(shè)備100的交互的會(huì)話時(shí), 該用戶可以注銷和/或關(guān)閉計(jì)算設(shè)備100。注銷導(dǎo)致用戶會(huì)話被中止,使得用戶狀態(tài)信息 130不再在存儲(chǔ)器120中可用。注銷序列的一部分可能需要從系統(tǒng)狀態(tài)140中移除用戶專用的設(shè)定。通過這種方式,第二用戶可以登錄到計(jì)算設(shè)備100而不受由在先用戶所生成的狀態(tài)信息的影響或者不能訪問該狀態(tài)信息。實(shí)現(xiàn)該結(jié)果的操作有時(shí)可以被描述成中止用戶會(huì)話。系統(tǒng)狀態(tài)140可以在注銷以后保留,因?yàn)榇鎯?chǔ)器120的電源可以維持。相比之下, 關(guān)閉可以導(dǎo)致用戶狀態(tài)130和系統(tǒng)狀態(tài)140 二者都被從易失性存儲(chǔ)器120中移除。由于易失性存儲(chǔ)器120的電源被關(guān)閉,所以易失性存儲(chǔ)器120中的任何信息在關(guān)閉序列結(jié)束時(shí)都將丟失。因此,為了重新創(chuàng)建該狀態(tài)所需的任何信息在還未存儲(chǔ)在非易失性存儲(chǔ)器中的情況下都可以移動(dòng)到非易失性存儲(chǔ)器。注銷和/或關(guān)閉序列不一定是啟動(dòng)序列的逆反,因?yàn)椴恍枰祷貜姆且资源鎯?chǔ)器中生成的任何信息。該相同的信息可以在隨后的啟動(dòng)以后再次生成。然而,用戶狀態(tài)130 的在會(huì)話期間被動(dòng)態(tài)地生成并且不能從來自非易失性存儲(chǔ)器的信息中重新創(chuàng)建的部分可以作為注銷或關(guān)閉操作的一部分被記錄在非易失性存儲(chǔ)器中。類似地,在關(guān)閉以后,系統(tǒng)狀態(tài)數(shù)據(jù)148的不能在再次執(zhí)行啟動(dòng)序列以后重新創(chuàng)建的部分可以作為關(guān)閉序列的一部分被傳輸?shù)椒且资源鎯?chǔ)器。
作為一個(gè)示例,系統(tǒng)狀態(tài)數(shù)據(jù)148可以包含高速緩存,其中該高速緩存旨在充當(dāng)存儲(chǔ)在非易失性存儲(chǔ)器152中的數(shù)據(jù)項(xiàng)的工作復(fù)本。高速緩存通過在易失性存儲(chǔ)器中建立應(yīng)當(dāng)保留在非易失性存儲(chǔ)器中的信息的副本來使計(jì)算設(shè)備100的操作加速。在較快的易失性存儲(chǔ)器位置處讀取或?qū)懭胄畔⑴c在非易失性存儲(chǔ)器中訪問相同數(shù)據(jù)相比將使計(jì)算設(shè)備的操作加速。當(dāng)易失性存儲(chǔ)器中的數(shù)據(jù)的副本被改變時(shí),該副本不再與非易失性存儲(chǔ)器中的相應(yīng)數(shù)據(jù)匹配。高速緩存中的數(shù)據(jù)被稱為是“臟”的。為了保持非易失性存儲(chǔ)器與高速緩存中的副本同步,臟數(shù)據(jù)不時(shí)地被復(fù)制到非易失性存儲(chǔ)器中。臟數(shù)據(jù)常常在計(jì)算機(jī)在其他方面不繁忙時(shí)被復(fù)制回。但是延遲臟數(shù)據(jù)的復(fù)制將導(dǎo)致的可能性是,在關(guān)閉時(shí),高速緩存中的數(shù)據(jù)將不與非易失性存儲(chǔ)器中的數(shù)據(jù)相匹配。為了避免不一致,在關(guān)閉計(jì)算設(shè)備100以前,可以執(zhí)行有時(shí)被稱為轉(zhuǎn)儲(chǔ)清除臟數(shù)據(jù)的操作。在該操作期間,臟數(shù)據(jù)被復(fù)制到非易失性存儲(chǔ)。盡管圖1所示的啟動(dòng)序列是所期望的,因?yàn)槠渑渲糜?jì)算設(shè)備100以供用戶操作,但是該啟動(dòng)序列在一些實(shí)例中可能是令人沮喪的源頭。用戶所期望的操作系統(tǒng)和應(yīng)用可以集體地包含成千上萬個(gè)組件。因此,啟動(dòng)序列可能需要從非易失性存儲(chǔ)器150和152的多個(gè)讀取操作。由于這些存儲(chǔ)器通常緩慢地操作,因此整個(gè)過程可能是相對(duì)慢的。附加地,啟動(dòng)序列可能需要除了與存儲(chǔ)相關(guān)的操作以外的耗時(shí)操作。附加地,可以例如在由CPU作出的計(jì)算或設(shè)備初始化方面花費(fèi)的時(shí)間。圖2示出了用于在易失性存儲(chǔ)器中創(chuàng)建狀態(tài)信息的可替代方案。圖2示出了在操作序列期間的計(jì)算設(shè)備100,在該操作序列中,狀態(tài)信息作為從休眠序列的恢復(fù)的一部分被創(chuàng)建在易失性存儲(chǔ)器120中
休眠是一種可以通過將狀態(tài)信息從易失性存儲(chǔ)器復(fù)制到非易失性存儲(chǔ)器來創(chuàng)建的操作模式。這樣的狀態(tài)信息可以以任何合適的方式來組織。在圖2所示的實(shí)施例中,該狀態(tài)信息被示為存儲(chǔ)在非易失性存儲(chǔ)器152中的休眠文件210中。在休眠期間,處理器110 可以將包括用戶狀態(tài)信息130和系統(tǒng)狀態(tài)信息140的狀態(tài)信息復(fù)制到休眠文件210中。然后,通過關(guān)閉計(jì)算機(jī)系統(tǒng)100的組件的全部或一部分的電源來進(jìn)入休眠模式。當(dāng)電源被關(guān)閉時(shí),易失性存儲(chǔ)器120中的狀態(tài)信息丟失。然而,該信息可以隨著從休眠中的恢復(fù)通過將休眠文件復(fù)制到易失性存儲(chǔ)器中來重新創(chuàng)建。因此,圖2示出了 從休眠序列的恢復(fù)可以以與圖1所示的啟動(dòng)序列類似的方式通過處理器Iio訪問存儲(chǔ)在引導(dǎo)存儲(chǔ)器巧4中的指令來開始。這些指令致使處理器110檢查休眠文件210的存在。在該示例中,在檢測到休眠文件210以后,處理器110將休眠文件 210的內(nèi)容復(fù)制到易失性存儲(chǔ)器120中。該復(fù)制可能需要直接復(fù)制或者可能需要處理,以便在信息被復(fù)制時(shí)以某種方式(比如對(duì)該文件解壓縮)來轉(zhuǎn)換該信息。無論處理是否作為該處理的一部分來執(zhí)行,最終結(jié)果都將導(dǎo)致還原狀態(tài)信息。一旦狀態(tài)信息被還原,用戶可以恢復(fù)在休眠時(shí)被中斷的計(jì)算會(huì)話。系統(tǒng)狀態(tài)數(shù)據(jù)148和用戶狀態(tài)數(shù)據(jù)134 二者都將被返回給易失性存儲(chǔ)器120。附加地,應(yīng)用132、操作系統(tǒng)服務(wù)142和驅(qū)動(dòng)程序146同樣將被返回給易失性存儲(chǔ)器120并且為執(zhí)行做好準(zhǔn)備。從休眠的恢復(fù)常常將要比執(zhí)行結(jié)合圖1所示的完全啟動(dòng)序列更快。盡管在從休眠的恢復(fù)和完全啟動(dòng)期間,相同量的信息可能最終被放置到易失性存儲(chǔ)器120中,但是簡單
10地將從文件復(fù)制該信息將比通過加載軟件和配置數(shù)據(jù)來生成該信息更快。然而,進(jìn)入休眠模式并且然后從休眠恢復(fù)不總是執(zhí)行關(guān)閉并且然后執(zhí)行啟動(dòng)序列的合適替代動(dòng)作。本申請(qǐng)人已經(jīng)認(rèn)識(shí)到和理解,響應(yīng)于關(guān)閉計(jì)算設(shè)備的用戶命令而執(zhí)行休眠并且隨后響應(yīng)于來自用戶的啟動(dòng)計(jì)算設(shè)備的命令而從休眠恢復(fù)可能得不到計(jì)算設(shè)備的滿足用戶預(yù)期的操作。本發(fā)明人已經(jīng)標(biāo)識(shí)出一種用于提供更快的操作體驗(yàn)而不違背現(xiàn)有用戶預(yù)期的方式。圖3示出了計(jì)算機(jī)設(shè)備100可以有條件地將休眠合并到關(guān)閉序列中的功能框圖。附加地,計(jì)算設(shè)備可以有條件地將從休眠的恢復(fù)合并到啟動(dòng)序列中。在圖3所示的實(shí)施例中,計(jì)算設(shè)備100被示為包含狀態(tài)信息,該狀態(tài)信息被復(fù)制到非易失性存儲(chǔ)器152中。在該實(shí)施例中,狀態(tài)信息被格式化為休眠文件310。休眠文件310 可以為本領(lǐng)域已知的休眠文件的形式。但是應(yīng)當(dāng)理解,可以使用任何合適的格式來將狀態(tài)信息存儲(chǔ)在非易失性存儲(chǔ)器中。與存儲(chǔ)在休眠文件210中的信息相比,休眠文件310包含系統(tǒng)狀態(tài)140。用戶狀態(tài) 130不需要作為休眠文件310的一部分來存儲(chǔ),但是在一些實(shí)施例中,可以存儲(chǔ)用戶狀態(tài)的部分。因此,當(dāng)用戶向計(jì)算設(shè)備100提供啟動(dòng)命令時(shí),處理器110可以開始執(zhí)行來自引導(dǎo)存儲(chǔ)器1 的指令,這類似于在圖2所示的操作模式下所發(fā)生的動(dòng)作。在檢測到休眠文件310 的存在以后,處理器110將休眠文件310的內(nèi)容復(fù)制到易失性存儲(chǔ)器120中。該復(fù)制在易失性存儲(chǔ)器120中重新創(chuàng)建系統(tǒng)狀態(tài)140。該狀態(tài)可以模擬計(jì)算設(shè)備100在圖1所示的啟動(dòng)序列期間在操作系統(tǒng)軟件被加載以后但在用戶登錄發(fā)生以前的狀態(tài)。因此,為了完成狀態(tài)信息在易失性存儲(chǔ)器120中的創(chuàng)建,處理器110可以執(zhí)行上面結(jié)合圖1所述的啟動(dòng)序列的在系統(tǒng)狀態(tài)被創(chuàng)建以后發(fā)生的步
馬聚ο在這種情況下,這些操作可以包括通過從非易失性存儲(chǔ)器150中讀取軟件指令以及基于非易失性存儲(chǔ)器152中的數(shù)據(jù)對(duì)其進(jìn)行配置來加載應(yīng)用指令132和創(chuàng)建用戶狀態(tài)數(shù)據(jù)Π4。在完成這些操作序列以后,易失性存儲(chǔ)器120中的狀態(tài)信息可能與由于執(zhí)行如上面結(jié)合圖1所述的啟動(dòng)序列所加載的狀態(tài)信息相似。然而,使用圖3所示序列來響應(yīng)啟動(dòng)命令所需的時(shí)間可以比執(zhí)行結(jié)合圖1所述的啟動(dòng)序列所需的時(shí)間更短。在圖3所示示例中,休眠文件310盡管與休眠文件210(圖幻的格式相同,但是包含不同的信息。附加地,休眠文件310是以與休眠文件210不同的方式創(chuàng)建的。如上所述, 休眠文件210 (圖2、記錄了計(jì)算設(shè)備100的在易失性存儲(chǔ)器120中所表示的在休眠命令時(shí)的狀態(tài)。相比之下,休眠文件310是響應(yīng)于關(guān)閉命令創(chuàng)建的。但是在休眠文件310中所捕捉的狀態(tài)信息不表示計(jì)算設(shè)備100在關(guān)閉命令時(shí)的完全狀態(tài)。更確切而言,可以執(zhí)行一些處理來將計(jì)算設(shè)備100置于休眠文件310可能被創(chuàng)建時(shí)的目標(biāo)狀態(tài)中。在所示實(shí)施例中,目標(biāo)狀態(tài)表示在加載操作系統(tǒng)以后但是在沒有用戶登錄到計(jì)算設(shè)備100的情況下已經(jīng)生成的狀態(tài)。這樣的目標(biāo)狀態(tài)可以至少部分通過執(zhí)行關(guān)閉序列的一部分來創(chuàng)建。例如,該部分可以包括注銷計(jì)算設(shè)備100的一個(gè)或多個(gè)用戶或者以其他方式中止用戶連接。這樣的處理可以使用本領(lǐng)域已知的技術(shù)來執(zhí)行??商娲鼗蚋郊拥兀梢詧?zhí)行其他處理以用于將計(jì)算設(shè)備100置于目標(biāo)狀態(tài)中。例如,處理可以包括轉(zhuǎn)儲(chǔ)清除來自系統(tǒng)狀態(tài)數(shù)據(jù)148的臟數(shù)據(jù)。此外,如上所述,為了保護(hù)用戶對(duì)計(jì)算設(shè)備100對(duì)關(guān)閉命令的反應(yīng)的預(yù)期,涉及休眠的關(guān)閉序列可以有條件地基于在該時(shí)間可能存在的條件來執(zhí)行。類似地,啟動(dòng)序列可以有條件地包括從休眠的恢復(fù)。圖4、5和6示出了這樣的有條件的處理。圖4示出了諸如可以由計(jì)算設(shè)備100響應(yīng)于啟動(dòng)命令執(zhí)行的啟動(dòng)序列。啟動(dòng)命令例如可以通過用戶按下按鈕、向計(jì)算設(shè)備100供電或者通過以其他方式發(fā)起計(jì)算設(shè)備100 的操作被提供給計(jì)算設(shè)備100。無論發(fā)起啟動(dòng)序列的方式如何,該過程都可以在框410開始。在框410,處理器110 可以從發(fā)起該過程的引導(dǎo)存儲(chǔ)器IM中取指令和執(zhí)行該指令。但是,在該過程的后面的步驟,可以從非易失性存儲(chǔ)器150中或者從任何其他合適的源、包括通過網(wǎng)絡(luò)連接來取指令。無論用于控制處理器110發(fā)起啟動(dòng)序列的指令的源如何,該過程都可以根據(jù)是否在非易失性存儲(chǔ)器152中檢測到休眠文件來在判定框412分支。如果是這樣,則該過程可以分支到終止點(diǎn)A,以繼續(xù)圖6所示的過程。相反,如果不存在休眠文件,則該過程可以行進(jìn)到子過程450。子過程450可以表示實(shí)現(xiàn)本領(lǐng)域公知的啟動(dòng)序列的操作序列。在該示例中,框 420、422、似4、似6、似8、430和432的處理可以表示如在已知的啟動(dòng)序列中的處理。但是,應(yīng)當(dāng)理解,可以使用任何合適的技術(shù)來使用任何合適的操作序列。無論所使用的特定方案如何,子過程450中的處理都可以在框420開始。在框420, 處理器110執(zhí)行操作系統(tǒng)加載器。這樣的加載器可以是軟件組件,該軟件組件在被執(zhí)行時(shí)將操作系統(tǒng)的組件從非易失性存儲(chǔ)器150加載到易失性存儲(chǔ)器120。在框422,可以配置如下操作所述操作配置操作系統(tǒng)的作為系統(tǒng)狀態(tài)140的一部分所創(chuàng)建的映像。該配置可以包括任何合適的處理,包括設(shè)置被加載到易失性存儲(chǔ)器中的組件的參數(shù)值、或者執(zhí)行配置系統(tǒng)狀態(tài)140的其他方面的指令。也作為啟動(dòng)子過程450的一部分,計(jì)算設(shè)備100可以檢測設(shè)備??梢詸z測任何合適的設(shè)備,比如打印機(jī)、網(wǎng)絡(luò)接口或連接到計(jì)算設(shè)備100的其他外圍設(shè)備?;谒鶛z測到的設(shè)備,可以在框4 執(zhí)行驅(qū)動(dòng)程序加載器。驅(qū)動(dòng)程序加載器可以是使用加載驅(qū)動(dòng)程序的已知技術(shù)所構(gòu)造的軟件組件。驅(qū)動(dòng)加載器的執(zhí)行可以包括標(biāo)識(shí)出和加載所檢測到的設(shè)備的驅(qū)動(dòng)程序軟件。一旦驅(qū)動(dòng)程序已經(jīng)被加載,則可以在框4 啟動(dòng)這些驅(qū)動(dòng)程序。該處理可以使驅(qū)動(dòng)程序及其控制的設(shè)備可供加載在計(jì)算設(shè)備100上的其他組件使用。該過程可以繼續(xù)到框430,其中可以啟動(dòng)操作系統(tǒng)服務(wù)。一旦設(shè)備和操作系統(tǒng)的服務(wù)可供使用,則處理就可以行進(jìn)到框432。在框432,可以加載應(yīng)用組件。該處理可以使用本領(lǐng)域已知技術(shù)或者任何其他合適方式在用戶登錄過程的一部分時(shí)執(zhí)行。當(dāng)應(yīng)用組件被加載時(shí),圖4中所示的過程可以根據(jù)在框432所加載的應(yīng)用組件的屬性來分支。在判定框444分支將允許計(jì)算設(shè)備改善在一個(gè)或多個(gè)應(yīng)用組件在計(jì)算設(shè)備 100使用休眠而不是常規(guī)關(guān)閉序列執(zhí)行關(guān)閉序列時(shí)未正確運(yùn)行的情況下發(fā)生的問題。一些組件可能需要重新引導(dǎo),這意味著,當(dāng)計(jì)算設(shè)備下次被上電時(shí)將執(zhí)行完全啟動(dòng)序列,使得該狀態(tài)將使用加載過程來重新創(chuàng)建。作為一示例,如果執(zhí)行圖3所示的合并了休眠的關(guān)閉序列,則根據(jù)計(jì)算設(shè)備100啟動(dòng)的時(shí)間不同地執(zhí)行操作的應(yīng)用組件可能不按照用戶所預(yù)期的那樣執(zhí)行。對(duì)于這些組件而
12言,當(dāng)執(zhí)行隨后的啟動(dòng)時(shí),如果該啟動(dòng)是基于從休眠的還原執(zhí)行的,則可以基于從休眠文件 310還原的狀態(tài)信息來配置該應(yīng)用組件。該狀態(tài)信息可以包含對(duì)計(jì)算機(jī)上次執(zhí)行完全啟動(dòng)序列的時(shí)間的指示。因此,在加載以后基于該狀態(tài)信息配置的應(yīng)用組件將不用表示圖4所示的啟動(dòng)序列何時(shí)被發(fā)起的時(shí)間值來配置。與可能的用戶預(yù)期相比,該組件將用表示完全啟動(dòng)序列被執(zhí)行時(shí)的在先時(shí)間的時(shí)間值來配置。在這種情況下,該應(yīng)用組件的行為將基于與用戶預(yù)期不同的時(shí)間,因?yàn)樵撚脩艨赡茴A(yù)期基于圖4的過程開始的時(shí)間來配置該應(yīng)用組件。因此,當(dāng)這樣的應(yīng)用組件被加載到計(jì)算設(shè)備100上時(shí),所期望的可能是,響應(yīng)于來自用戶的關(guān)閉命令而確定該組件需要完全關(guān)閉序列。當(dāng)這樣的組件執(zhí)行時(shí),計(jì)算設(shè)備可以通過執(zhí)行完全關(guān)閉序列來響應(yīng)關(guān)閉命令。通過這種方式,在隨后接收到啟動(dòng)命令以后,將沒有休眠文件可用,并且將執(zhí)行例如圖1所示的完全啟動(dòng)序列。在其他時(shí)間,計(jì)算設(shè)備可以用圖3所示的合并了休眠的關(guān)閉序列來響應(yīng)關(guān)閉命令。為了支持與用戶預(yù)期一致的這樣的行為,可以為應(yīng)用程序提供一種機(jī)制以指定其需要執(zhí)行完全關(guān)閉和完全啟動(dòng)序列。在圖4的示例中,該機(jī)制可以通過計(jì)算設(shè)備100的操作系統(tǒng)所支持的應(yīng)用編程接口(API)來實(shí)現(xiàn)。即使應(yīng)用組件在所有實(shí)例中都不需要完全關(guān)閉和完全啟動(dòng)序列,仍然可以通過這樣的API進(jìn)行調(diào)用。因此,如果在框440確定所加載的應(yīng)用組件需要重新引導(dǎo),則處理可以分支到框 442。在框442,可以調(diào)用應(yīng)用編程接口來注冊(cè)該應(yīng)用組件。在該示例中,API允許操作系統(tǒng)跟蹤在隨后接收到啟動(dòng)命令時(shí)請(qǐng)求重新引導(dǎo)的應(yīng)用組件是否仍然在執(zhí)行。但是應(yīng)當(dāng)理解, 這樣的調(diào)用可以在任何時(shí)間進(jìn)行。例如,任何如下組件都可以通過API進(jìn)行調(diào)用被重新配置或以其他方式遇到其確定執(zhí)行完全關(guān)閉和完全啟動(dòng)序列的操作狀態(tài)。如果未通過API進(jìn)行這樣的調(diào)用,則當(dāng)隨后接收到關(guān)閉命令時(shí),操作系統(tǒng)可以確定可以使用圖3所示的合并了休眠的關(guān)閉序列。相反,如果已經(jīng)通過API進(jìn)行了調(diào)用以用信號(hào)通知請(qǐng)求了完全關(guān)閉和完全啟動(dòng)序列,則操作系統(tǒng)可以執(zhí)行完全關(guān)閉序列而不創(chuàng)建休眠文件,使得在隨后接收到啟動(dòng)命令以后,可以執(zhí)行完全啟動(dòng)序列??梢允褂萌魏魏线m的機(jī)制來確定應(yīng)用組件是否需要包括完全關(guān)閉和隨后的完全啟動(dòng)序列的重新引導(dǎo)。作為一個(gè)示例,可以對(duì)應(yīng)用組件進(jìn)行編程以在框442所指示的那樣調(diào)用API??商娲?,操作系統(tǒng)可以包括計(jì)算機(jī)可執(zhí)行指令以在應(yīng)用組件被加載時(shí)分析這些應(yīng)用組件以標(biāo)識(shí)出需要重新引導(dǎo)的功能。在該場景中,判定框440處的處理可以包括在每個(gè)應(yīng)用組件被加載時(shí)分析該應(yīng)用組件。但是可以在判定框440使用任何合適的技術(shù)來基于所加載的應(yīng)用組件確定是否需要重新引導(dǎo)。盡管圖4示出了基于所加載的應(yīng)用組件來確定是否需要重新引導(dǎo),但是可以為計(jì)算設(shè)備100的其他元件執(zhí)行類似的處理,例如,可以為操作系統(tǒng)組件執(zhí)行類似的處理??商娲鼗蚋郊拥兀梢曰诎惭b在計(jì)算能設(shè)備100中的設(shè)備或者計(jì)算設(shè)備100所連接到的設(shè)備來執(zhí)行類似的處理。無論在判定框440中所標(biāo)識(shí)出的可能指示需要重新引導(dǎo)的條件如何,如果這些條件被標(biāo)識(shí)出,則處理就可以分支到框442,在那里,指示被存儲(chǔ)。該指示可以響應(yīng)于來自用戶的關(guān)閉命令來觸發(fā)完全關(guān)閉,或者可替代地或附加地,可以響應(yīng)于啟動(dòng)的用戶命令即使在休眠文件可用的情況下仍然觸發(fā)完全啟動(dòng)序列。如果未檢測到這些條件,則處理可以行進(jìn)
13到框444。在框444,可以收集數(shù)據(jù)以允許計(jì)算設(shè)備100確定使用合并了休眠的啟動(dòng)序列的有效性。在該示例中,框444的處理記錄執(zhí)行子過程450的時(shí)間,其在該示例中指示完全啟動(dòng)序列的執(zhí)行。該信息可以以任何合適的方式來記錄。例如,關(guān)于啟動(dòng)時(shí)間的信息可以記錄在非易失性存儲(chǔ)器152中。該信息可以作為單獨(dú)的啟動(dòng)時(shí)間來記錄,所述啟動(dòng)時(shí)間指示每當(dāng)完全啟動(dòng)序列被執(zhí)行時(shí)為了執(zhí)行這樣的完全啟動(dòng)序列所需的時(shí)間??商娲兀撔畔⒖梢宰鳛槎鄠€(gè)完全啟動(dòng)序列的運(yùn)行平均值、或者以任何其他合適的方式來記錄。關(guān)于啟動(dòng)時(shí)間的信息可以在框444以任何合適的方式來確定。作為一個(gè)示例,定時(shí)器可以在發(fā)起子過程450時(shí)被啟動(dòng),并且在處理到達(dá)框444時(shí)被讀取。但是還有其他時(shí)間測量技術(shù)是已知的,并且可以用在框444。一旦啟動(dòng)時(shí)間被記錄,則處理就可以行進(jìn)到框446。在此,可以進(jìn)行計(jì)算設(shè)備100 的常規(guī)操作。這樣的操作可以繼續(xù),直到接收到關(guān)閉命令。圖5示出了可以響應(yīng)于這樣的關(guān)閉命令執(zhí)行的處理。圖5所示的過程包括框510, 該框510表示計(jì)算機(jī)100使用本領(lǐng)域已知技術(shù)的操作。在操作期間,可以接收關(guān)閉命令512。 關(guān)閉命令512可以通過用戶輸入以任何合適的方式、比如通過圖形用戶界面或硬件控制來生成。在一些實(shí)施例中,計(jì)算設(shè)備100可以支持多種類型的可以觸發(fā)關(guān)閉序列的用戶輸入。圖7是可被用戶用來輸入關(guān)閉命令的圖形用戶界面的圖示。在該示例中,圖形用戶界面710通過按下出現(xiàn)在由計(jì)算機(jī)操作系統(tǒng)所呈現(xiàn)的用戶界面上的標(biāo)記有“啟動(dòng)”的按鈕來調(diào)用。但是應(yīng)當(dāng)理解,不同的操作系統(tǒng)支持不同的界面,并且可以使用任何合適的技術(shù)來調(diào)用用戶界面。響應(yīng)于按下該按鈕,圖形用戶界面710可以由操作系統(tǒng)使用本領(lǐng)域已知技術(shù)來呈現(xiàn)。通過圖形用戶界面710,計(jì)算設(shè)備100的用戶可以在用于結(jié)束計(jì)算設(shè)備上的當(dāng)前會(huì)話的多個(gè)可能的命令中進(jìn)行選擇。在此,示出了 3個(gè)選項(xiàng)。在此,命令714被標(biāo)記為“關(guān)閉”。這樣的關(guān)閉命令在許多計(jì)算設(shè)備上是常見的,并且傳統(tǒng)上已經(jīng)用于指示該計(jì)算機(jī)應(yīng)當(dāng)執(zhí)行完全關(guān)閉序列。然而,在圖5所示的實(shí)施例中,對(duì)關(guān)閉命令714的用戶選擇可以導(dǎo)致計(jì)算設(shè)備 100的操作系統(tǒng)確定是否相反可以執(zhí)行合并了休眠的部分關(guān)閉系列。在該實(shí)施例中,操作系統(tǒng)以可能與命令對(duì)用戶所具有的語義含義不一致的方式為該命令使用標(biāo)簽。盡管如此, 有條件的處理保護(hù)了用戶預(yù)期。但是,如果用戶想要保證完全關(guān)閉序列被執(zhí)行,則可以出于該原因提供具有不同標(biāo)簽的單獨(dú)的命令。如果用戶期望指示計(jì)算設(shè)備執(zhí)行完全關(guān)閉而不創(chuàng)建休眠文件,使得在隨后的啟動(dòng)命令以后,將通過從非易失性存儲(chǔ)器150加載軟件以及用來自非易失性存儲(chǔ)器 152的數(shù)據(jù)對(duì)其進(jìn)行配置來生成操作系統(tǒng)狀態(tài),則用戶可以選擇命令715。在該示例中,命令715被標(biāo)記為“重新引導(dǎo)”。這樣的標(biāo)記被用于向用戶標(biāo)識(shí)出將執(zhí)行完全關(guān)閉序列,使得根據(jù)隨后的啟動(dòng)命令,將執(zhí)行完全啟動(dòng)序列。在這種情況下,命令715執(zhí)行與常規(guī)計(jì)算系統(tǒng)中在發(fā)出“關(guān)閉”命令時(shí)所執(zhí)行的那些動(dòng)作類似的動(dòng)作。然而,在呈現(xiàn)圖形用戶界面710的計(jì)算設(shè)備中,與傳統(tǒng)關(guān)閉命令相關(guān)聯(lián)的語義標(biāo)簽已經(jīng)應(yīng)用于命令714。因此,向命令715賦予不同的標(biāo)簽。圖形用戶界面710還可以包含用于結(jié)束用戶會(huì)話的其他選項(xiàng)。在該示例中,圖形用戶界面710包括命令716。在選中命令716以后,計(jì)算設(shè)備100可以通過中止指定用戶的會(huì)話來做出響應(yīng)。這樣的計(jì)算設(shè)備行為是本領(lǐng)域已知的。在這種情況下,命令716可以對(duì)應(yīng)常規(guī)的注銷命令。盡管在圖形用戶界面710中可以包括許多合適的命令選項(xiàng),但是在所示的實(shí)施例中,僅僅對(duì)命令714或716的選中將導(dǎo)致發(fā)起圖5所示的過程。無論接收關(guān)閉命令的方式及其屬性如何,響應(yīng)于該命令的接收,處理都可以從框 510轉(zhuǎn)移到框514。在框514,可以執(zhí)行關(guān)閉序列的開始部分。關(guān)閉序列的在框514所執(zhí)行的部分可以包括常規(guī)的處理。在該示例中,框514的處理結(jié)束計(jì)算設(shè)備100上的任何用戶會(huì)話或會(huì)話。如上面結(jié)合圖1所述,這樣的處理可以包括關(guān)閉應(yīng)用以及保存用戶狀態(tài)數(shù)據(jù) 134或者執(zhí)行任何其他合適的動(dòng)作。作為這些動(dòng)作的結(jié)果,用戶狀態(tài)130中的從一個(gè)用戶會(huì)話持久保持到下一用戶會(huì)話的任何信息都從用戶狀態(tài)數(shù)據(jù)134移動(dòng)到諸如非易失性存儲(chǔ)器152之類的非易失性存儲(chǔ)器。無論為了結(jié)束用戶會(huì)話或以其他方式持久保持用戶狀態(tài)數(shù)據(jù)134的所采取的特定步驟如何,當(dāng)這些步驟完成時(shí),處理都可以行進(jìn)到判定框516。在判定框516,圖5的過程可以根據(jù)是否已經(jīng)請(qǐng)求重新引導(dǎo)來分支。在框516的處理可以用任何合適的方式來執(zhí)行。 可以在判定框516應(yīng)用任何一個(gè)或多個(gè)標(biāo)準(zhǔn)來確定是否已經(jīng)請(qǐng)求了重新引導(dǎo)。作為一個(gè)示例,可以在判定框516使用用戶輸入來確定是否已經(jīng)請(qǐng)求了重新引導(dǎo)。例如,當(dāng)用戶選中重新引導(dǎo)命令715(圖7)時(shí),該用戶選中可以充當(dāng)表示已經(jīng)請(qǐng)求了重新引導(dǎo)的指示。作為另一示例,已經(jīng)結(jié)合圖4描述了 應(yīng)用組件可以比如通過在框442調(diào)用 API (圖4)來請(qǐng)求重新引導(dǎo)。如果已經(jīng)進(jìn)行了這樣的調(diào)用,則判定框516處的處理可以確定已經(jīng)請(qǐng)求了重新引導(dǎo)。但是在一些實(shí)施例中,在判定框516的處理可以根據(jù)多種標(biāo)準(zhǔn)來調(diào)節(jié)。例如,處理可以確定應(yīng)用組件已經(jīng)通過在框442對(duì)API的調(diào)用注冊(cè)了針對(duì)重新引導(dǎo)的請(qǐng)求。判定框516處的進(jìn)一步處理可以確定是否應(yīng)當(dāng)履行這樣的請(qǐng)求。這樣的處理例如可以包括確定進(jìn)行請(qǐng)求的應(yīng)用組件在圖5的過程被執(zhí)行時(shí)是否仍然在執(zhí)行??商娲鼗蚋郊拥兀卸?16處的處理可能需要確定進(jìn)行請(qǐng)求的組件是否具有命令重新引導(dǎo)的足夠訪問特權(quán)。無論在判定框516所執(zhí)行的處理的屬性如何,如果作為該處理的結(jié)果而確定已經(jīng)請(qǐng)求了重新引導(dǎo),則該過程就分支到框530。在該場景中,框530表示完全關(guān)閉序列。這樣的完全關(guān)閉序列可以如本領(lǐng)域已知的那樣執(zhí)行。該關(guān)閉序列可能需要中止用戶會(huì)話、轉(zhuǎn)儲(chǔ)清除臟數(shù)據(jù)以及使計(jì)算設(shè)備下電。無論在執(zhí)行關(guān)閉序列時(shí)所采取的特定步驟如何,在完成以后,圖5的過程就可以結(jié)束,從而使計(jì)算設(shè)備100處于下電狀態(tài)。相反,如果在判定框516還未請(qǐng)求重新引導(dǎo),則該過程可以行進(jìn)到判定框518。判定框518處的處理是有條件的處理的示例,以確定是應(yīng)當(dāng)執(zhí)行完全關(guān)閉序列還是部分關(guān)閉并然后應(yīng)當(dāng)執(zhí)行休眠。一般而言,判定框518處的處理可能需要應(yīng)用任何合適的策略。這樣的策略可以在接收到關(guān)閉命令時(shí)被評(píng)估。在所示示例中,所應(yīng)用的策略涉及使用休眠所實(shí)現(xiàn)的時(shí)間節(jié)省。在判定框518,可以確定是否通過從休眠啟動(dòng)來實(shí)現(xiàn)時(shí)間節(jié)省。這樣的確定可以通過如下方式進(jìn)行將所記錄的關(guān)于用于將計(jì)算設(shè)備100置于操作狀態(tài)中的相對(duì)時(shí)間的信息與完全啟動(dòng)序列或者從休眠中恢復(fù)然后部分驅(qū)動(dòng)序列相比較。關(guān)于用于執(zhí)行完全啟動(dòng)的時(shí)間的信息例如可以基于在框444(圖4)所存儲(chǔ)的信息。關(guān)于為了將計(jì)算設(shè)備100置于操作狀態(tài)中并然后從休眠恢復(fù)所需的時(shí)間的信息可以以類似方式基于在圖6的過程執(zhí)行結(jié)束時(shí)所記錄的信息來確定。如果用于基于恢復(fù)來創(chuàng)建操作狀態(tài)并然后部分啟動(dòng)的時(shí)間比用于執(zhí)行完全啟動(dòng)的時(shí)間更慢,則處理可以從判定框518分支到子過程530。相反,如果判定框518處的處理確定從休眠恢復(fù)然后部分執(zhí)行啟動(dòng)序列是優(yōu)選的,則處理可以行進(jìn)到判定框520。在判定框520,可以執(zhí)行另一有條件的處理以確定計(jì)算設(shè)備100是否處于適用于合并了休眠的部分關(guān)閉序列的狀態(tài)。這樣的處理可能需要確定在當(dāng)前會(huì)話期間,是否已經(jīng)為任何組件指定了配置改變。如果這樣的配置改變需要重新引導(dǎo)以變?yōu)橛行?,則包括休眠的關(guān)閉可能未實(shí)現(xiàn)用于對(duì)計(jì)算設(shè)備100的行為的用戶預(yù)期,因?yàn)檫x中關(guān)閉命令714(圖7) 與傳統(tǒng)上將致使計(jì)算設(shè)備在下次啟動(dòng)時(shí)應(yīng)用配置改變的標(biāo)簽相關(guān)聯(lián)。如果計(jì)算設(shè)備100響應(yīng)于具有傳統(tǒng)上用于指示完全啟動(dòng)的標(biāo)簽的命令而實(shí)現(xiàn)包括休眠的關(guān)閉序列,則在隨后的啟動(dòng)以后,這些組件的狀態(tài)將恢復(fù)其上一狀態(tài)而不是基于配置改變的狀態(tài)。因此,可能存在如下場景在該場景中,用戶對(duì)調(diào)用可能以其他方式與完全關(guān)閉序列相關(guān)聯(lián)的命令的預(yù)期將不阻止預(yù)期的行為。為了避免計(jì)算設(shè)備100以與預(yù)期用戶行為不一致的方式操作,圖5的過程根據(jù)計(jì)算設(shè)備是否自動(dòng)地確定了完全關(guān)閉序列應(yīng)當(dāng)執(zhí)行以便獲得與用戶預(yù)期一致的操作而分支。如果是這樣,則該過程分支到子過程530,在那里,如上述那樣執(zhí)行完全關(guān)閉序列。在所示實(shí)施例中,要執(zhí)行完全關(guān)閉序列的條件是通過如下方式被標(biāo)識(shí)出的確定任何組件是否在當(dāng)前會(huì)話期間已經(jīng)改變了配置設(shè)定??梢栽谂卸?20應(yīng)用本領(lǐng)域已知的用于做出該確定的技術(shù)。作為一個(gè)示例,用于改變執(zhí)行中的組件的配置設(shè)定的處理可能需要設(shè)置標(biāo)志或者以其他方式記錄對(duì)配置改變的指示。在該場景中,判定框520處的處理可能需要檢查狀態(tài)標(biāo)志的值。但是可以可替代地或附加地使用其他合適的處理。例如,處理可能需要掃描一個(gè)或多個(gè)存儲(chǔ)器位置以檢測未應(yīng)用的配置設(shè)定。無論在判定框520如何做出該確定,如果不存在需要完全關(guān)閉和/或隨后的完全啟動(dòng)的條件,則處理就可以行進(jìn)到判定框522。在框522,執(zhí)行用于將計(jì)算設(shè)備100完全置于從中進(jìn)行休眠的目標(biāo)狀態(tài)中。如上面結(jié)合圖3所述的那樣,該目標(biāo)狀態(tài)可以對(duì)應(yīng)于如下狀態(tài)在該狀態(tài)下,操作系統(tǒng)狀態(tài)被維持,但是所有用戶會(huì)話已經(jīng)被中止,并且在隨后的用戶登錄以后所需的任何用戶狀態(tài)都已經(jīng)以合適的形式被持久保持在非易失性存儲(chǔ)器中??梢詧?zhí)行以實(shí)現(xiàn)該目標(biāo)狀態(tài)的操作的示例是轉(zhuǎn)儲(chǔ)清除臟數(shù)據(jù)??商娲鼗蚋郊拥?,如果作為系統(tǒng)狀態(tài)數(shù)據(jù)148的一部分所存儲(chǔ)的其他數(shù)據(jù)涉及登錄的用戶的會(huì)話,則框 522處的處理可能需要將該數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器152。無論執(zhí)行何種操作來完全實(shí)現(xiàn)目標(biāo)狀態(tài),處理然后都可以行進(jìn)到框524???24, 可以取得之后可以用于弄清休眠文件對(duì)于在計(jì)算設(shè)備100上創(chuàng)建目標(biāo)狀態(tài)而言的合適性的信息。作為一示例,一些計(jì)算設(shè)備可以用多個(gè)操作系統(tǒng)或者操作系統(tǒng)的多個(gè)實(shí)例來配置。 作為操作系統(tǒng)的特定實(shí)例的關(guān)閉的一部分所創(chuàng)建的休眠文件可以用于僅僅響應(yīng)于用于啟動(dòng)操作系統(tǒng)的相同實(shí)例的命令而復(fù)原操作系統(tǒng)狀態(tài)。然而,計(jì)算設(shè)備可以與同在休眠文件被創(chuàng)建時(shí)所使用的操作系統(tǒng)不同的系統(tǒng)一起運(yùn)行的可能性所造成的可能性是,該操作系統(tǒng)將在休眠文件被創(chuàng)建的時(shí)間與將觸發(fā)基于該文件的狀態(tài)重新創(chuàng)建的隨后啟動(dòng)命令之間的時(shí)間在該計(jì)算設(shè)備上運(yùn)行。另一操作系統(tǒng)或同一操作系統(tǒng)的另一實(shí)例的居間操作可能造成的可能性是,在休眠文件中所捕捉的狀態(tài)不再表示該計(jì)算設(shè)備的為了實(shí)現(xiàn)與用戶預(yù)期一致的操作所應(yīng)當(dāng)創(chuàng)建的狀態(tài)。例如,如果用戶在關(guān)閉第一操作系統(tǒng)的操作以后加載了第二操作系統(tǒng)并且對(duì)供第一操作系統(tǒng)使用的任何數(shù)據(jù)或其他組件做出了改變,則在該實(shí)例中,從休眠文件恢復(fù)將導(dǎo)致創(chuàng)建未反映居間用戶改變的狀態(tài)。因此,可以采用一種機(jī)制來確定在隨后的啟動(dòng)命令以后,休眠文件是否適于用于重新創(chuàng)建計(jì)算設(shè)備100的操作狀態(tài)。在圖5所示的實(shí)施例中,該機(jī)制需要在休眠文件被創(chuàng)建時(shí)存儲(chǔ)信息。在該特定示例中,該信息是由文件系統(tǒng)維護(hù)的序列號(hào)。具體而言,該序列號(hào)可以由NTFS文件系統(tǒng)或可以在計(jì)算設(shè)備上操作的其他文件系統(tǒng)來維護(hù)。這樣的序列號(hào)可以每當(dāng)盤存儲(chǔ)的卷被加載時(shí)就遞增。因此,框5M處的處理可能需要存儲(chǔ)與包含休眠文件的卷相關(guān)聯(lián)的NTFS序列號(hào)以及與該操作系統(tǒng)相關(guān)聯(lián)的其他數(shù)據(jù)。該值可以存儲(chǔ)在非易失性存儲(chǔ)器中,使得其可以結(jié)合隨后的啟動(dòng)命令被訪問。無論在框5M所記錄的用于允許隨后確定休眠文件的可用性的特定信息如何,該過程都可以行進(jìn)到子過程526。子過程5 可以包括存儲(chǔ)休眠文件??? 處的處理可以使用與計(jì)算設(shè)備的休眠相關(guān)聯(lián)的常規(guī)技術(shù)來執(zhí)行。但是,應(yīng)當(dāng)理解,可以使用執(zhí)行休眠文件的任何合適技術(shù)。無論用于作為子過程526的一部分存儲(chǔ)休眠文件的特定技術(shù)如何,在存儲(chǔ)休眠文件以后,就可以關(guān)閉計(jì)算設(shè)備100的電源。計(jì)算設(shè)備100可以保持在下電狀態(tài),直到接收到啟動(dòng)命令。隨后的啟動(dòng)命令可以如圖4和圖6所示那樣來處理。圖4示出了可以響應(yīng)于接收到啟動(dòng)命令而執(zhí)行的處理。該處理包括框410處和判定框412處的處理。當(dāng)處理到達(dá)判定框412時(shí),該過程可以根據(jù)是否存在休眠文件來分支,比如休眠文件在子過程5 在緊接著在前的關(guān)閉期間被執(zhí)行的情況下可以存在。當(dāng)存在休眠文件時(shí),圖4的過程可以通過標(biāo)記為A的連接點(diǎn)而分支以繼續(xù)圖6所示的處理。圖6處的處理示出了在存在休眠文件時(shí)可以執(zhí)行的過程。圖6的處理可以在框 601開始。在框601,該處理可以根據(jù)在判定框412(圖4)所檢測到的休眠文件是否表示如結(jié)合子過程5 所示那樣捕捉關(guān)閉期間的目標(biāo)狀態(tài)的休眠文件而分支。如果是這樣,則該過程可以行進(jìn)到判定框610。可替代地,休眠文件可以表示除了系統(tǒng)狀態(tài)信息以外還合并了用戶狀態(tài)的常規(guī)休眠文件。這樣的休眠文件可以根據(jù)用于復(fù)原該狀態(tài)的常規(guī)技術(shù)來使用。該常規(guī)處理可以在子過程670執(zhí)行,其中休眠文件被用于重新建立計(jì)算設(shè)備在之前休眠時(shí)的包括用戶狀態(tài)的狀態(tài)。在完成子過程670以后,處理可以繼續(xù)到框638。相反,如果休眠文件如在判定框601所確定的那樣是作為關(guān)閉過程的一部分被記錄的,則該過程繼續(xù)到判定框610。在判定框610開始,可以執(zhí)行一個(gè)或多個(gè)操作來確定 響應(yīng)于啟動(dòng)命令,是應(yīng)當(dāng)執(zhí)行完全啟動(dòng)序列還是應(yīng)當(dāng)執(zhí)行從休眠恢復(fù)并且然后是部分啟動(dòng)序列。在該示例中,可以檢查多個(gè)條件以確定是否應(yīng)當(dāng)即使在確定存在休眠文件的情況下仍然執(zhí)行從休眠的恢復(fù)。在判定框610所檢查的一個(gè)這樣的條件需要確定對(duì)于計(jì)算設(shè)備 100而言是否已存在硬件配置的改變,使得從休眠的恢復(fù)可能導(dǎo)致重新創(chuàng)建與當(dāng)前計(jì)算機(jī)配置不匹配的狀態(tài)信息。這樣的改變可以以任何合適的方式來檢測,包括檢查硬件組件的在上一次計(jì)算設(shè)備的會(huì)話期間被創(chuàng)建并被存儲(chǔ)在非易失性存儲(chǔ)器中的目錄??梢詸z查計(jì)算設(shè)備在隨后啟動(dòng)以后的硬件配置以保證該目錄上的每個(gè)項(xiàng)目都被安裝。但是應(yīng)當(dāng)理解,檢查目錄僅僅是可以如何執(zhí)行這樣的處理的一個(gè)示例。無論該確定是如何做出的,如果硬件配置已經(jīng)改變,則該處理就可以從判定框610分支到子過程650。子過程650可能需要重新加載操作系統(tǒng)。子過程650處的處理可以使用本領(lǐng)域已知的技術(shù)來執(zhí)行。在子過程650加載了操作系統(tǒng)以后,該過程可以行進(jìn)到框632。相反 ,如果判定框610處的處理確定未進(jìn)行硬件配置,則處理可以行進(jìn)到框612。 在框612,可以執(zhí)行另一處理以動(dòng)態(tài)地確定計(jì)算設(shè)備100是否處于要從中執(zhí)行從休眠的恢復(fù)的狀態(tài)下。在這種情況下,判定框612處的處理可以利用在框524(圖5)所存儲(chǔ)的信息來確定在創(chuàng)建休眠文件之間發(fā)生的改變?cè)趫?zhí)行從休眠的恢復(fù)的情況下是否使得將不滿足用戶預(yù)期。在該示例中,框612處的處理包括檢查與包含休眠文件的卷相關(guān)聯(lián)的NTFS序列號(hào)。如果該卷自從休眠文件被創(chuàng)建以來還未被加載,則在框612所讀取的序列號(hào)將與在框 524所存儲(chǔ)的序列號(hào)相差一個(gè)已知量,該已知量表示該序列號(hào)在啟動(dòng)以后的改變。相反,如果序列號(hào)的差異大于該已知量,則框612處的處理將標(biāo)識(shí)出改變可能是在創(chuàng)建休眠文件的時(shí)間與觸發(fā)從休眠的恢復(fù)的啟動(dòng)命令之間做出的。在判定框620,該過程可以基于在框612所執(zhí)行比較而分支。如果序列號(hào)不一致, 則該過程分支到子過程750。這樣的分支可以發(fā)生在序列號(hào)的差異指示休眠文件不能建立與用戶預(yù)期一致的計(jì)算設(shè)備操作狀態(tài)時(shí)。因此,執(zhí)行子過程650,其中通過重新加載操作系統(tǒng)軟件來創(chuàng)建系統(tǒng)狀態(tài)140。相反,如果在框612處所執(zhí)行的比較指示序列號(hào)一致,則該過程可以行進(jìn)到子過程630。當(dāng)采取該分支時(shí),已經(jīng)確定休眠文件適于重新建立計(jì)算設(shè)備的狀態(tài)。因此,子過程 630需要從休眠文件重新建立計(jì)算設(shè)備的目標(biāo)狀態(tài)。子過程630可以使用用于從休眠恢復(fù)的已知技術(shù)來執(zhí)行。但是在該場景中,不是重新建立計(jì)算設(shè)備的包括用戶狀態(tài)的狀態(tài),而是基于休眠文件的恢復(fù)重新創(chuàng)建在休眠文件曾被創(chuàng)建時(shí)的目標(biāo)狀態(tài)。該狀態(tài)例如可以表示計(jì)算設(shè)備在子過程526 (圖5)開始時(shí)的狀態(tài)。但是在其他實(shí)施例中,可以在休眠文件中存儲(chǔ)部分用戶狀態(tài),這比如可能發(fā)生在操作系統(tǒng)預(yù)測到應(yīng)用很可能在完成啟動(dòng)序列以后被用戶打開,并且存儲(chǔ)休眠文件以捕捉計(jì)算設(shè)備在這些應(yīng)用仍然為打開時(shí)的狀態(tài)時(shí)。在完成子過程630以后,圖6的過程可以行進(jìn)到框632。無論處理是通過子過程 630還是650到達(dá)框632,都可以在框632記錄為了響應(yīng)啟動(dòng)命令所需的時(shí)間。所記錄的值的含義可以取決于處理到達(dá)框632的路徑。當(dāng)處理通過子過程630到達(dá)框632時(shí),該時(shí)間表示用于作為該處理的一部分使用從休眠的恢復(fù)來啟動(dòng)的時(shí)間,并且被相應(yīng)地記錄。相反, 當(dāng)處理通過子過程650到達(dá)框632時(shí),該時(shí)間表示用于使用完全啟動(dòng)序列來啟動(dòng)的時(shí)間,并且被相應(yīng)地記錄???32處的處理可以以任何合適的方式來執(zhí)行,包括使用結(jié)合框444(圖 4)所描述的技術(shù)。作為在框632記錄信息的結(jié)果,判定框518 (圖5)處的處理可以具有可用于將用于基于包括從休眠恢復(fù)的完全啟動(dòng)序列來響應(yīng)啟動(dòng)命令的時(shí)間與該啟動(dòng)序列的一部分相比較的信息。該信息可以以任何合適的方式來記錄和比較。然后,處理可以行進(jìn)到子過程634。在子過程634,可以執(zhí)行啟動(dòng)序列的一部分以為計(jì)算設(shè)備創(chuàng)建所期望的操作狀態(tài)。該部分可以包括登錄用戶。該操作可以以任何已知方式來執(zhí)行,并且可以包括自動(dòng)登錄或者可以呈現(xiàn)登錄屏,通過該登錄屏,用戶可以呈現(xiàn)信息以人工地執(zhí)行登錄過程。在處理通過子過程650達(dá)到子過程634的場景中,子過程650和子過程634處的處理的組合可以表示完全啟動(dòng)序列。相反,如果處理通過子過程630到達(dá)子過程634,則對(duì)啟動(dòng)命令的響應(yīng)包括從休眠恢復(fù)以及啟動(dòng)序列的一部分。在該示例中,啟動(dòng)序列的該部分表示在子過程634中登錄用戶。這樣的處理可以使用常規(guī)技術(shù)來執(zhí)行。但是用于在從休眠恢復(fù)以后完成啟動(dòng)序列的特定步驟可以是任何合適的技術(shù)。然后,該過程可以行進(jìn)到框638,其中可以使休眠文件無效化。處理還可以在子過程670以后到達(dá)框638。無論處理如何到達(dá)框638,休眠文件都可以以在休眠文件可能重新創(chuàng)建不正確的操作狀態(tài)時(shí)指示不應(yīng)在后面使用該休眠文件的任何合適方式被無效化。例如可以通過以某種方式修改休眠文件的內(nèi)容、在單獨(dú)的存儲(chǔ)器中記錄該文件無效的結(jié)構(gòu)或者通過刪除該文件來使休眠文件無效化。然后,圖6的過程結(jié)束。當(dāng)該過程結(jié)束使,計(jì)算設(shè)備100可以被配置為操作狀態(tài), 并且此后可以繼續(xù)操作直到接收到關(guān)閉或重新引導(dǎo)命令。圖8示出了可在其上實(shí)現(xiàn)本發(fā)明的合適的計(jì)算系統(tǒng)環(huán)境800的示例。計(jì)算系統(tǒng)環(huán)境800只是合適計(jì)算環(huán)境的一個(gè)示例,而非意在暗示對(duì)本發(fā)明使用范圍或功能有任何限制。也不應(yīng)該將計(jì)算環(huán)境800解釋為對(duì)示例性操作環(huán)境800中示出的任一組件或其組合有任何依賴性或要求。本發(fā)明可用各種其他通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來操作。適合在本發(fā)明中使用的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、 手持或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型計(jì)算機(jī)、包含上述系統(tǒng)或設(shè)備中的任一個(gè)的分布式計(jì)算環(huán)境等。該計(jì)算環(huán)境可以執(zhí)行計(jì)算機(jī)可執(zhí)行指令,如程序模塊。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。本發(fā)明也可以在其中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。參考圖8,用于實(shí)現(xiàn)本發(fā)明的示例性系統(tǒng)包括計(jì)算機(jī)810形式的通用計(jì)算設(shè)備。 計(jì)算機(jī)810的組件可包括,但不限于,處理單元820、系統(tǒng)存儲(chǔ)器830、以及將包括系統(tǒng)存儲(chǔ)器的各種系統(tǒng)組件耦合到處理單元820的系統(tǒng)總線821。系統(tǒng)總線821可以是若干類型的總線結(jié)構(gòu)中的任一種,包括使用各種總線體系結(jié)構(gòu)中的任一種的存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、以及局部總線。作為示例而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì) (VESA)局部總線,以及也稱為夾層總線的外圍部件互連(PCI)總線。計(jì)算機(jī)810通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是能由計(jì)算機(jī) 810訪問的任何可用介質(zhì),而且包含易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于, RAM、ROM、EEPROM、閃存或其他存儲(chǔ)器技術(shù),CD-ROM、數(shù)字多功能盤(DVD)或其他光盤存儲(chǔ)設(shè)備,磁帶盒、磁帶、磁盤存儲(chǔ)設(shè)備或其他磁存儲(chǔ)設(shè)備,或者能用于存儲(chǔ)所需信息且可以由計(jì)算機(jī)810訪問的任何其他介質(zhì)。通信介質(zhì)通常以諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任意信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號(hào)”是指具有以在信號(hào)中編碼信息的方式被設(shè)定或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì), 以及諸如聲學(xué)、RF、紅外及其他無線介質(zhì)之類的無線介質(zhì)。上述中任一組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。系統(tǒng)存儲(chǔ)器830包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如只讀存儲(chǔ)器(ROM) 831和隨機(jī)存取存儲(chǔ)器(RAM) 832?;据斎?輸出系統(tǒng)833 (BIOS)包括如在啟動(dòng)期間幫助在計(jì)算機(jī)810內(nèi)的元件之間傳輸信息的基本例程,它通常儲(chǔ)存在ROM 831 中。RAM 832通常包含處理單元820可立即訪問和/或目前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非限制,圖8示出了操作系統(tǒng)834、應(yīng)用程序835、其他程序模塊836和程序數(shù)據(jù)837。計(jì)算機(jī)810也可以包括其他可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作為示例,圖8示出了從不可移動(dòng)、非易失性磁介質(zhì)中讀取或向其寫入的硬盤驅(qū)動(dòng)器 840,從可移動(dòng)、非易失性磁盤852中讀取或向其寫入的磁盤驅(qū)動(dòng)器851,以及從諸如⑶ROM 或其他光學(xué)介質(zhì)等可移動(dòng)、非易失性光盤856中讀取或向其寫入的光盤驅(qū)動(dòng)器855。硬盤驅(qū)動(dòng)器840可以實(shí)現(xiàn)為旋轉(zhuǎn)式磁介質(zhì),該磁介質(zhì)包含一個(gè)或多個(gè)可以對(duì)磁介質(zhì)進(jìn)行寫入或讀取的磁頭??稍谑纠圆僮鳝h(huán)境中使用的其他可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM 等。硬盤驅(qū)動(dòng)器841通常由例如接口 840等不可移動(dòng)存儲(chǔ)器接口連接至系統(tǒng)總線821,而磁盤驅(qū)動(dòng)器851和光盤驅(qū)動(dòng)器855通常由例如接口 850等可移動(dòng)存儲(chǔ)器接口連接至系統(tǒng)總線 821以上討論并在圖8中示出的驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)810提供了對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲(chǔ)。在圖8中,例如,硬盤驅(qū)動(dòng)器841被示為存儲(chǔ)操作系統(tǒng)844、應(yīng)用程序845、其他程序模塊846和程序數(shù)據(jù)847。注意, 這些組件可以與操作系統(tǒng)834、應(yīng)用程序835、其他程序模塊836和程序數(shù)據(jù)837相同,也可以與它們不同。在此操作系統(tǒng)844、應(yīng)用程序845、其他程序模塊846以及程序數(shù)據(jù)847被給予了不同的編號(hào),以說明至少它們是不同的副本。用戶可以通過輸入設(shè)備,例如鍵盤862 和定點(diǎn)設(shè)備861——通常是指鼠標(biāo)、跟蹤球或觸摸墊——向計(jì)算機(jī)810輸入命令和信息。其他輸入設(shè)備(未示出)可包括話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等。這些和其他輸入設(shè)備通常通過耦合至系統(tǒng)總線的用戶輸入接口 860連接至處理單元820,但也可以由其他接口和總線結(jié)構(gòu),例如并行端口、游戲端口或通用串行總線(USB)來連接。監(jiān)視器 891或其他類型的顯示設(shè)備也通過諸如視頻接口 890之類的接口連接至系統(tǒng)總線821。除監(jiān)視器之外,計(jì)算機(jī)也可包括諸如揚(yáng)聲器897和打印機(jī)896之類的其他外圍輸出設(shè)備,它們可以通過輸出外圍接口 895來連接。計(jì)算機(jī)810可以使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)(如遠(yuǎn)程計(jì)算機(jī)880)的邏輯連接,以在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)880可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其他常見網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括許多或所有以上關(guān)于計(jì)算機(jī)810所描述的元件, 但在圖8中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備881。圖8中所描繪的邏輯連接包括局域網(wǎng)(LAN)871 和廣域網(wǎng)(WAN)873,但還可包括其他網(wǎng)絡(luò)。這些聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、 內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見的。 當(dāng)用于LAN網(wǎng)絡(luò)環(huán)境中時(shí),計(jì)算機(jī)810通過網(wǎng)絡(luò)接口或適配器870連接到LAN 871。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)810通常包括調(diào)制解調(diào)器872或用于通過諸如因特網(wǎng)等WAN 873建立通信的其他手段。調(diào)制解調(diào)器872,可以是內(nèi)置的或外置的,可以經(jīng)由用戶輸入接口 860或其他適當(dāng)?shù)臋C(jī)制,連接到系統(tǒng)總線821。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī) 810所描述的程序模塊或其部分可被存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而非限制, 圖8示出了遠(yuǎn)程應(yīng)用程序885駐留在存儲(chǔ)器設(shè)備881上。應(yīng)當(dāng)理解,所示的網(wǎng)絡(luò)連接是示例性的,并且可使用在計(jì)算機(jī)之間建立通信鏈路的其他手段。至此描述了本發(fā)明的至少一個(gè)實(shí)施例的若干方面,可以理解,本領(lǐng)域的技術(shù)人員可容易地想到各種更改、修改和改進(jìn)。例如,所描述的是,在啟動(dòng)以后基于所觀察到的用于執(zhí)行每個(gè)序列的相對(duì)時(shí)間來確定是執(zhí)行完全啟動(dòng)序列還是從休眠恢復(fù)并然后是啟動(dòng)序列的一部分。應(yīng)當(dāng)理解,在關(guān)閉時(shí)可以執(zhí)行類似的處理。如果在關(guān)閉時(shí)執(zhí)行,則該判定可以通過存儲(chǔ)或不存儲(chǔ)休眠文件來實(shí)現(xiàn)。因此,應(yīng)當(dāng)理解,被描述為發(fā)生在啟動(dòng)以后的操作可替代地可以在關(guān)閉以后執(zhí)行,并且反之亦然。上述優(yōu)點(diǎn)可以以其他方式來實(shí)現(xiàn)。例如,除了避免計(jì)算機(jī)的CPU和諸如盤之類的其他組件的工作以外,在設(shè)置狀態(tài)的過程期間,這樣的方案允許數(shù)據(jù)響應(yīng)于關(guān)閉命令被保存在休眠文件中,該休眠文件將幫助加快用戶在對(duì)隨后啟動(dòng)命令的響應(yīng)期間和/或在啟動(dòng)命令的處理已經(jīng)完成以后的體驗(yàn)。例如,當(dāng)用戶登錄時(shí),可以起動(dòng)多個(gè)應(yīng)用(例如WINDOWS EXPLORER web瀏覽器、啟動(dòng)應(yīng)用等等)。操作系統(tǒng)可以顯式地跟蹤用戶在啟動(dòng)命令的處理完成以后所定義的間隔期間所訪問的文件(及其偏移量)。這些應(yīng)用或其他組件可以被讀取到要保存到休眠文件中的存儲(chǔ)器中,其中該休眠文件在對(duì)關(guān)閉命令的隨后處理期間被創(chuàng)建。通過這種方式,這些應(yīng)用或其他組件將相繼被從盤中讀取到存儲(chǔ)器中而不必作為起動(dòng)這些應(yīng)用的一部分隨機(jī)地讀取這些應(yīng)用。而且描述了用戶登錄和注銷。應(yīng)當(dāng)理解,可以在多個(gè)用戶登錄到計(jì)算機(jī)上的場景中提供關(guān)閉命令。如果部分地執(zhí)行關(guān)閉序列并且然后執(zhí)行休眠操作,則部分關(guān)閉序列可能導(dǎo)致多個(gè)用戶注銷,但是盡管如此仍然可以應(yīng)用上述技術(shù)。例如,在此所述的技術(shù)可以用于提供自動(dòng)服務(wù)而不用用戶介入。例如,已經(jīng)通過執(zhí)行部分關(guān)閉序列并然后休眠來響應(yīng)關(guān)閉命令的計(jì)算設(shè)備可以被配置為自動(dòng)地在未預(yù)期用戶活動(dòng)時(shí)、比如在午夜醒來。醒來以后,計(jì)算設(shè)備可以執(zhí)行維護(hù)活動(dòng),比如應(yīng)用軟件更新。對(duì)于用戶而言,就好像計(jì)算設(shè)備是在一天結(jié)束時(shí)被關(guān)閉的,使得維護(hù)活動(dòng)對(duì)用戶是透明的。例如如果計(jì)算設(shè)備響應(yīng)于關(guān)閉命令檢測到其具有要應(yīng)用的維護(hù)活動(dòng)或者補(bǔ)丁并且將其自己設(shè)置為在合適時(shí)間醒,則可以實(shí)現(xiàn)這樣的能力。當(dāng)其醒來時(shí),計(jì)算設(shè)備執(zhí)行任何必要的維護(hù)活動(dòng),比如應(yīng)用補(bǔ)丁。然后,該系統(tǒng)進(jìn)行完全重新起動(dòng)并且然后再次執(zhí)行部分關(guān)閉,然后是休眠。該場景使得軟件供應(yīng)商能夠提供使維護(hù)活動(dòng)對(duì)用戶不可見的解決方案。該能力可以應(yīng)用于消費(fèi)者和企業(yè)PC 二者。除了改善用戶體驗(yàn)以后,尤其是對(duì)于企業(yè)用戶而言,這樣的方案還可以省電。這樣的更改、修改和改進(jìn)旨在是本發(fā)明的一部分,且旨在處于本發(fā)明的精神和范圍內(nèi)。從而,上述描述和附圖僅用作示例??梢远喾N方式中的任一種來實(shí)現(xiàn)本發(fā)明的上述實(shí)施例。例如,可使用硬件、軟件或其組合來實(shí)現(xiàn)各實(shí)施例。當(dāng)使用軟件實(shí)現(xiàn)時(shí),該軟件代碼可在無論是在單個(gè)計(jì)算機(jī)中提供的還是在多個(gè)計(jì)算機(jī)之間分布的任何合適的處理器或處理器集合上執(zhí)行。該處理器可被實(shí)現(xiàn)為集成電路,集成電路組件中具有一個(gè)或多個(gè)處理器。然而,可使用電路按照任何適合的方式來實(shí)現(xiàn)處理器。此外,應(yīng)當(dāng)理解,計(jì)算機(jī)可以用多種形式中的任一種來具體化,如機(jī)架式計(jì)算機(jī)、 臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、或平板計(jì)算機(jī)。此外,計(jì)算機(jī)可以具體化在通常不被認(rèn)為是計(jì)算機(jī)但具有合適的處理能力的設(shè)備中 ,包括個(gè)人數(shù)字助理(PDA)、智能電話、或任何其他適合的便攜式或固定電子設(shè)備。同樣,計(jì)算機(jī)可以具有一個(gè)或多個(gè)輸入和輸出設(shè)備。這些設(shè)備主要可用于呈現(xiàn)用戶界面??捎糜谔峁┯脩艚缑娴妮敵鲈O(shè)備的示例包括用于可視地呈現(xiàn)輸出的打印機(jī)或顯示屏和用于可聽地呈現(xiàn)輸出的揚(yáng)聲器或其他聲音生成設(shè)備。可用于用戶界面的輸入設(shè)備的示例包括鍵盤和諸如鼠標(biāo)、觸摸板和數(shù)字化輸入板等定點(diǎn)設(shè)備。作為另一示例,計(jì)算機(jī)可以通過語音識(shí)別或以其他可聽格式來接收輸入信息。這些計(jì)算機(jī)可以通過任何合適形式的一個(gè)或多個(gè)網(wǎng)絡(luò)來互連,包括作為局域網(wǎng)或廣域網(wǎng),如企業(yè)網(wǎng)絡(luò)或因特網(wǎng)。這些網(wǎng)絡(luò)可以基于任何合適的技術(shù)并可以根據(jù)任何合適的協(xié)議來操作,并且可以包括無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或光纖網(wǎng)絡(luò)。而且,此處略述的各種方法或過程可被編碼為可在采用各種操作系統(tǒng)或平臺(tái)中任何一種的一個(gè)或多個(gè)處理器上執(zhí)行的軟件。此外,這樣的軟件可使用多種合適的程序設(shè)計(jì)語言和/或程序設(shè)計(jì)或腳本工具中的任何一種來編寫,而且它們還可被編譯為可執(zhí)行機(jī)器語言代碼或在框架或虛擬機(jī)上執(zhí)行的中間代碼。就此,本發(fā)明可被具體化為用一個(gè)或多個(gè)程序編碼的一個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì) (或多個(gè)計(jì)算機(jī)可讀介質(zhì))(例如,計(jì)算機(jī)存儲(chǔ)器、一個(gè)或多個(gè)軟盤、緊致盤(⑶)、光盤、數(shù)字視頻盤(DVD)、磁帶、閃存、現(xiàn)場可編程門陣列或其他半導(dǎo)體器件中的電路配置、或其他非瞬態(tài)的有形計(jì)算機(jī)存儲(chǔ)介質(zhì)),當(dāng)這些程序在一個(gè)或多個(gè)計(jì)算機(jī)或其他處理器上執(zhí)行時(shí),它們執(zhí)行實(shí)現(xiàn)本發(fā)明的上述各個(gè)實(shí)施例的方法。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)或媒質(zhì)可以是可轉(zhuǎn)移的, 使得其上存儲(chǔ)的一個(gè)或多個(gè)程序可被加載到一個(gè)或多個(gè)不同的計(jì)算機(jī)或其它處理器上以便實(shí)現(xiàn)本發(fā)明上述的各個(gè)方面。如此處所使用的,術(shù)語“非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”只包含可被認(rèn)為是產(chǎn)品(即,制品)或機(jī)器的計(jì)算機(jī)可讀介質(zhì)。可替代地或附加地,本發(fā)明可以體現(xiàn)為除了計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的計(jì)算機(jī)可讀截止,比如傳播信號(hào)。此處以一般的意義使用術(shù)語“程序”或“軟件”來指可被用來對(duì)計(jì)算機(jī)或其他處理器編程以實(shí)現(xiàn)本發(fā)明上述的各個(gè)方面的任何類型的計(jì)算機(jī)代碼或計(jì)算機(jī)可執(zhí)行指令集。另夕卜,應(yīng)當(dāng)理解,根據(jù)本實(shí)施例的一個(gè)方面,當(dāng)被執(zhí)行時(shí)實(shí)現(xiàn)本發(fā)明的方法的一個(gè)或多個(gè)計(jì)算機(jī)程序不必駐留在單個(gè)計(jì)算機(jī)或處理器上,而是可以按模塊化的方式分布在多個(gè)不同的計(jì)算機(jī)或處理器之間以實(shí)現(xiàn)本發(fā)明的各方面。
計(jì)算機(jī)可執(zhí)行指令可以具有可由一個(gè)或多個(gè)計(jì)算機(jī)或其他設(shè)備執(zhí)行的各種形式, 諸如程序模塊。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。通常,程序模塊的功能可以按需在多個(gè)實(shí)施例中進(jìn)行組合或分布。而且,數(shù)據(jù)結(jié)構(gòu)能以任何適合的形 式存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上。為簡化說明,數(shù)據(jù)結(jié)構(gòu)可被示為具有通過該數(shù)據(jù)結(jié)構(gòu)中的位置而相關(guān)的字段。這些關(guān)系同樣可以通過對(duì)各字段的存儲(chǔ)分配傳達(dá)各字段之間的關(guān)系的計(jì)算機(jī)可讀介質(zhì)中的位置來得到。然而,可以使用任何適合的機(jī)制在數(shù)據(jù)結(jié)構(gòu)的各字段中的信息之間建立關(guān)系,包括通過使用指針、標(biāo)簽、或在數(shù)據(jù)元素之間建立關(guān)系的其他機(jī)制。本發(fā)明的各個(gè)方面可單獨(dú)、組合或以未在前述實(shí)施例中特別討論的各種安排來使用,從而并不將其應(yīng)用限于前述描述中所述或附圖形中所示的組件的細(xì)節(jié)和安排。例如,可使用任何方式將一個(gè)實(shí)施例中描述的各方面與其他實(shí)施例中描述的各方面組合。同樣,本發(fā)明可被具體化為方法,其示例已經(jīng)提供。作為該方法的一部分所執(zhí)行的動(dòng)作可以按任何適合的方式來排序。因此,可以構(gòu)建各個(gè)實(shí)施例,其中各動(dòng)作以與所示的次序所不同的次序執(zhí)行,不同的次序可包括同時(shí)執(zhí)行某些動(dòng)作,即使這些動(dòng)作在各說明性實(shí)施例中被示為順序動(dòng)作。在權(quán)利要求書中使用諸如“第一”、“第二”、“第三”等序數(shù)詞來修飾權(quán)利要求元素本身并不意味著一個(gè)權(quán)利要求元素較之另一個(gè)權(quán)利要求元素的優(yōu)先級(jí)、先后次序或順序、 或者方法的各動(dòng)作執(zhí)行的時(shí)間順序,而僅用作將具有某一名字的一個(gè)權(quán)利要求元素與(若不是使用序數(shù)詞則)具有同一名字的另一元素區(qū)分開的標(biāo)簽以區(qū)分各權(quán)利要求元素。同樣,此處所使用的短語和術(shù)語是出于描述的目的而不應(yīng)被認(rèn)為是限制。此處對(duì) “包括”、“包含”、或“具有”、“含有”、“涉及”及其變型的使用旨在包括其后所列的項(xiàng)目及其等效物以及其他項(xiàng)目。
權(quán)利要求
1.一種用于操作包括多個(gè)硬件組件(110,870)的計(jì)算設(shè)備(100)的方法,該方法包括接收用于關(guān)閉該計(jì)算設(shè)備的命令(714);以及響應(yīng)于所接收的關(guān)閉命令部分地完成關(guān)閉序列,直到該計(jì)算設(shè)備處于目標(biāo)狀態(tài)(514,522); 當(dāng)該計(jì)算設(shè)備處于該目標(biāo)狀態(tài)時(shí),將定義該計(jì)算設(shè)備的狀態(tài)的信息傳輸?shù)椒且资源鎯?chǔ)(5 );以及使所述多個(gè)硬件組件的至少一部分下電。
2.如權(quán)利要求1所述的方法,其特征在于部分完成該關(guān)閉序列包括結(jié)束所有用戶會(huì)話(514)。
3.如權(quán)利要求1所述的方法,其特征在于,還包括 接收用于啟動(dòng)該計(jì)算設(shè)備的命令;響應(yīng)于所接收的啟動(dòng)命令使所述多個(gè)硬件組件的至少一部分上電;將定義該計(jì)算設(shè)備的狀態(tài)的信息從該非易失性存儲(chǔ)傳輸?shù)揭资源鎯?chǔ)(630);以及部分地完成啟動(dòng)序列(643)。
4.如權(quán)利要求3所述的方法,其特征在于,還包括 接收用于啟動(dòng)該計(jì)算設(shè)備的第二命令(715);響應(yīng)于所接收的第二啟動(dòng)命令 使所述多個(gè)硬件組件的至少一部分上電; 完全執(zhí)行該啟動(dòng)序列G50)。
5.如權(quán)利要求1所述的方法,其特征在于,還包括 接收用于關(guān)閉該計(jì)算設(shè)備的第二命令;響應(yīng)于所接收的第二關(guān)閉命令,完全完成該關(guān)閉序列(530)。
6.一種包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(830),所述計(jì)算機(jī)可執(zhí)行指令實(shí)現(xiàn)計(jì)算設(shè)備的操作系統(tǒng),該操作系統(tǒng)包括實(shí)現(xiàn)啟動(dòng)序列的多個(gè)組件,并且所述計(jì)算機(jī)可執(zhí)行指令在被執(zhí)行時(shí)實(shí)現(xiàn)一種方法,該方法包括接收用于啟動(dòng)該計(jì)算設(shè)備的命令; 響應(yīng)于所接收的啟動(dòng)命令將定義該計(jì)算設(shè)備的第一狀態(tài)的信息從非易失性存儲(chǔ)傳輸?shù)揭资源鎯?chǔ)(630); 選擇性地執(zhí)行所述多個(gè)組件的僅僅一部分,所述多個(gè)組件的該部分實(shí)現(xiàn)引導(dǎo)序列以創(chuàng)建該計(jì)算設(shè)備的第二狀態(tài),第二狀態(tài)不同于第一狀態(tài)(634);以及基于第二狀態(tài)操作該計(jì)算設(shè)備。
7.如權(quán)利要求6所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于 該操作系統(tǒng)還包括實(shí)現(xiàn)關(guān)閉序列的第二多個(gè)組件;以及由所述計(jì)算機(jī)可執(zhí)行指令實(shí)現(xiàn)的該方法還包括接收用于關(guān)閉該計(jì)算設(shè)備的命令(714);以及響應(yīng)于所接收的關(guān)閉命令執(zhí)行所述第二多個(gè)組件的僅僅一部分以將該計(jì)算設(shè)備置于第一狀態(tài)(514,522,5 );當(dāng)該計(jì)算設(shè)備處于第一狀態(tài)時(shí),將定義第一狀態(tài)的信息傳輸?shù)椒且资源鎯?chǔ)(526)。
8.如權(quán)利要求7所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于傳輸定義第一狀態(tài)的信息包括將該信息復(fù)制到隨后被訪問的存儲(chǔ)設(shè)備上的文件中。
9.如權(quán)利要求7所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于在該計(jì)算設(shè)備上加載至少一個(gè)驅(qū)動(dòng)程序,并且該操作系統(tǒng)的至少一個(gè)服務(wù)在第一狀態(tài)下執(zhí)行(426)。
10.如權(quán)利要求7所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于所述多個(gè)組件的實(shí)現(xiàn)啟動(dòng)序列的部分包括第一部分,并且所述多個(gè)組件包括組件的未被包括在第一部分中的第二部分;以及第二部分包括用于發(fā)現(xiàn)連接到該計(jì)算設(shè)備的設(shè)備的組件(424)。
全文摘要
本發(fā)明涉及快速計(jì)算機(jī)啟動(dòng)。通過在接收到關(guān)閉命令以后記錄表示目標(biāo)狀態(tài)的狀態(tài)信息來提供快速計(jì)算機(jī)啟動(dòng)。在該目標(biāo)狀態(tài)下,該計(jì)算設(shè)備可能已經(jīng)關(guān)閉所有用戶會(huì)話,使得沒有用戶狀態(tài)信息被包括在目標(biāo)狀態(tài)中。然而,操作系統(tǒng)可能仍然在執(zhí)行。響應(yīng)于用于啟動(dòng)計(jì)算機(jī)的命令,可以快速地從所記錄的目標(biāo)狀態(tài)信息中重新建立該目標(biāo)狀態(tài)??梢詧?zhí)行啟動(dòng)序列的部分以完成啟動(dòng)過程,包括建立用戶狀態(tài)。為了不論改變?nèi)绾味急Wo(hù)響應(yīng)于關(guān)閉命令的用戶預(yù)期,保持所記錄的狀態(tài)信息的文件的創(chuàng)建和使用可以以動(dòng)態(tài)確定的事件為條件。而且,用戶和編程接口可以提供選項(xiàng)以越過所記錄的狀態(tài)信息的創(chuàng)建或使用。
文檔編號(hào)G06F9/445GK102436387SQ20111041818
公開日2012年5月2日 申請(qǐng)日期2011年12月6日 優(yōu)先權(quán)日2010年12月6日
發(fā)明者B·E·金, E·N·威爾森, K·V·施塔克, M·伊伊根, N·簡恩, P·L·斯特門, S·張, V·卡拉古尼斯, Y·巴克 申請(qǐng)人:微軟公司