亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

從休眠中多階段恢復(fù)的制作方法

文檔序號(hào):6365277閱讀:200來源:國(guó)知局
專利名稱:從休眠中多階段恢復(fù)的制作方法
從休眠中多階段恢復(fù)
背景技術(shù)
計(jì)算機(jī)具有范圍從完全工作(full operation)到完全關(guān)機(jī)(full shutdown)的若干種操作模式。在完全工作中,定義操作系統(tǒng)的執(zhí)行部分的軟件被從非易失存儲(chǔ)器加載到操作存儲(chǔ)器中,所述操作存儲(chǔ)器則通常是易失存儲(chǔ)器,并且軟件可以從所述操作存儲(chǔ)器中被更快速運(yùn)行。計(jì)算機(jī)通過ー個(gè)“啟動(dòng)”過程進(jìn)入這種完全工作模式。該啟動(dòng)過程配置硬件并加載計(jì)算機(jī)的操作系統(tǒng)。作為啟動(dòng)過程的一部分,驅(qū)動(dòng)器被安裝且操作系統(tǒng)服務(wù)將被啟動(dòng)。一旦計(jì)算機(jī)準(zhǔn)備好供任何用戶操作,則用戶可以登錄到計(jì)算機(jī)。這種登錄可以涉及基于特定于登錄用戶的簡(jiǎn)檔(profile)來進(jìn)ー步配置計(jì)算機(jī)。然后,應(yīng)用可以自動(dòng)或者響應(yīng)于用戶輸入而被加載,由此所述應(yīng)用可以運(yùn)行,從而利用計(jì)算設(shè)備的硬件能力和操作系統(tǒng)服務(wù)。
無(wú)論是對(duì)操作系統(tǒng)還是對(duì)應(yīng)用來說,在加載軟件的過程中,存儲(chǔ)器都可以被分配,并且軟件的參數(shù)可以是基于計(jì)算機(jī)的硬件配置或是用戶簡(jiǎn)檔而被賦值的,此外,其他配置動(dòng)作也可以被執(zhí)行。這些動(dòng)作建立了計(jì)算設(shè)備的“狀態(tài)”。針對(duì)存儲(chǔ)器以及定義系統(tǒng)操作狀態(tài)的其他系統(tǒng)參數(shù)的進(jìn)ー步改變也可以是在用戶提供命令來與正在執(zhí)行的應(yīng)用或是操作系統(tǒng)服務(wù)進(jìn)行交互的時(shí)候進(jìn)行的。在完全關(guān)機(jī)模式中,計(jì)算機(jī)的硬件組件未被供電。由于易失存儲(chǔ)器在斷電的時(shí)候不會(huì)保持信息,因此,在易失存儲(chǔ)器中沒有保存軟件或狀態(tài)信息。相反,任何用于在以后將計(jì)算機(jī)重新配置成實(shí)施完全操作模式的信息都會(huì)保存在非易失存儲(chǔ)器中。計(jì)算機(jī)通過ー個(gè)被稱為關(guān)機(jī)的處理進(jìn)入關(guān)機(jī)模式。在關(guān)機(jī)過程中,如果尚未將重新配置計(jì)算機(jī)所需要的信息存入非易失存儲(chǔ)器中,那么這時(shí)可以將其保存在非易失存儲(chǔ)器中。從非易失存儲(chǔ)器拷貝至易失存儲(chǔ)器的軟件和其他配置信息不會(huì)被往回拷貝到非易失存儲(chǔ)器中,這是因?yàn)樗鲕浖团渲眯畔⒖梢栽诤罄m(xù)的啟動(dòng)處理過程中被重新創(chuàng)建。除了完全關(guān)機(jī)之外還存在節(jié)能模式,在該模式中,提供給計(jì)算機(jī)的ー些或全部硬件組件的電カ將被關(guān)閉。在有時(shí)也被稱為睡眠模式的節(jié)能模式中,計(jì)算機(jī)處理器、網(wǎng)絡(luò)接ロ或者可能還有其他組件的電源會(huì)被切斷。然而,易失存儲(chǔ)器的供電將會(huì)保持。這樣ー來,在引導(dǎo)過程或后續(xù)的計(jì)算機(jī)操作過程中創(chuàng)建的任何狀態(tài)信息將被保持在易失存儲(chǔ)器中。當(dāng)再次向處理器供電時(shí),它可以以在進(jìn)入睡眠模式時(shí)中斷的模式中的狀態(tài)恢復(fù)操作。還有ー種模式有時(shí)被稱為休眠模式。計(jì)算機(jī)通過被稱為休眠的處理進(jìn)入這種模式。在休眠模式中,在通常是硬盤的非易失存儲(chǔ)器中將會(huì)創(chuàng)建和存儲(chǔ)捕獲計(jì)算機(jī)操作狀態(tài)的文件。在將代表系統(tǒng)狀態(tài)的數(shù)據(jù)存入休眠文件的時(shí)候,該數(shù)據(jù)可被壓縮。在從休眠中恢復(fù)的處理過程中,該文件可被從硬盤中讀取、解壓縮以及用于重建在休眠時(shí)存在的計(jì)算機(jī)狀態(tài)。從休眠中恢復(fù)的處理會(huì)在易失存儲(chǔ)器中恢復(fù)那些在休眠時(shí)存在的操作過程中的軟件或參數(shù)集合拷貝,由此任何用戶狀態(tài)也會(huì)被恢復(fù)。由于若干理由,從休眠中恢復(fù)的處理要快于執(zhí)行整個(gè)啟動(dòng)過程的處理。這其中的ー個(gè)原因在于通過將休眠文件中的狀態(tài)信息拷貝到易失存儲(chǔ)器中可以重新創(chuàng)建整個(gè)啟動(dòng)處理的結(jié)果,同時(shí)避免耗費(fèi)時(shí)間來執(zhí)行所述啟動(dòng)處理的步驟,例如CPU消耗、設(shè)備初始化以及其他眾多類型的需要在引導(dǎo)過程中執(zhí)行的工作。此外,在啟動(dòng)過程中被訪問的信息將會(huì)保存在眾多不同的文件中,這些文件代表為了加載和配置操作系統(tǒng)中可能多達(dá)成千上萬(wàn)的組件而被訪問的不同組件。這些組件以及為了配置這些組件而被訪問的信息有可能隨機(jī)分布在硬盤中。由于硬盤驅(qū)動(dòng)器以及其他ー些類型的大容量存儲(chǔ)器在訪問順序數(shù)據(jù)的時(shí)候最為有效,因此,訪問隨機(jī)分布的數(shù)據(jù)的處理有可能包括大量的磁盤訪問時(shí)間,從而導(dǎo)致產(chǎn)生冗長(zhǎng)的啟動(dòng)過程。相比之下,在讀取休眠文件的過程中,由于該文件中的信息可以按順序保存在磁盤上,因此,訪問時(shí)間要相對(duì)較短。

發(fā)明內(nèi)容
為了提升計(jì)算設(shè)備從休眠模式中恢復(fù)的速度,計(jì)算設(shè)備可以被配置成是分多個(gè)階段而從休眠模式中恢復(fù)的。每ー個(gè)階段都可以基于休眠信息來部分恢復(fù)計(jì)算設(shè)備的狀態(tài)。 這些階段可以在不同的環(huán)境中執(zhí)行,從而使得在不同的階段使用計(jì)算設(shè)備的不同資源。在一些實(shí)施例中,在某個(gè)階段的處理可以建立一個(gè)執(zhí)行所述恢復(fù)的另ー個(gè)階段的環(huán)境。在一些實(shí)施例中,恢復(fù)處理階段可以是通過運(yùn)行第一組計(jì)算機(jī)可執(zhí)行指令來執(zhí)行的。這些指令可以是在預(yù)操作系統(tǒng)環(huán)境中運(yùn)行的。例如,這些指令可以構(gòu)成作為計(jì)算設(shè)備BIOS—部分的引導(dǎo)加載器,或者可以以其它方式處于計(jì)算設(shè)備的固件中。這些指令可以控制將非易失存儲(chǔ)器中存儲(chǔ)的休眠信息的第一部分傳送到操作存儲(chǔ)器的處理。所述第一環(huán)境可以是ー個(gè)相對(duì)稀疏的環(huán)境,這在預(yù)操作系統(tǒng)環(huán)境中是很常見的。第一組指令可以是在單個(gè)處理器上運(yùn)行的,并且不可以支持對(duì)包含休眠信息的存儲(chǔ)介質(zhì)的異步訪問。通過執(zhí)行第一組計(jì)算機(jī)可執(zhí)行指令,可以建立能夠運(yùn)行第二組計(jì)算機(jī)可執(zhí)行指令的第二環(huán)境,以便控制將休眠信息的第二部分從非易失存儲(chǔ)器傳送到操作存儲(chǔ)器的處理。所述第二環(huán)境可以具有更豐富的資源集合。舉個(gè)例子,第二環(huán)境可以包括對(duì)于多個(gè)處理器的支持。在第二階段中可以使用一個(gè)以上的處理器來執(zhí)行處理,以便分擔(dān)完成從休眠中恢復(fù)所需要的處理負(fù)載。例如,ー個(gè)或多個(gè)處理器可以讀取休眠信息,并使其可供ー個(gè)或多個(gè)其他處理器用于處理。這些讀取操作可以是同步執(zhí)行的。其他處理器可以解壓縮數(shù)據(jù),并且在適當(dāng)?shù)臅r(shí)候?qū)⑵鋫魉偷讲僮鞔鎯?chǔ)器。作為替換或補(bǔ)充,更豐富的資源集合可以包括允許異步訪問包含休眠信息的存儲(chǔ)介質(zhì)的存儲(chǔ)器訪問功能。例如,第二環(huán)境可以支持操作系統(tǒng)環(huán)境中常見的異步盤輸入/輸出(I/O)。由于在I/O操作處于未決狀態(tài)等待(pending)讀取來自非易失存儲(chǔ)器的休眠信息的另ー個(gè)分段的間隔期間,處理器可以基于休眠信息的分段來執(zhí)行處理,以便恢復(fù)計(jì)算設(shè)備的狀態(tài),因此,即便計(jì)算設(shè)備具有單個(gè)處理器,使用異步訪問也可以加速恢復(fù)處理。為了實(shí)現(xiàn)分多個(gè)階段從休眠中恢復(fù)的處理,可以獨(dú)立地記錄來自操作存儲(chǔ)器的將在每ー個(gè)恢復(fù)階段中恢復(fù)的信息。該信息可以結(jié)合用于識(shí)別要在每ー個(gè)階段恢復(fù)的信息的元數(shù)據(jù)來存儲(chǔ)。在一些實(shí)施例中,休眠信息可被分區(qū),由此,在被移動(dòng)回到操作存儲(chǔ)器時(shí),為每ー個(gè)在先階段記錄的信息都會(huì)為后續(xù)階段建立環(huán)境。在一些實(shí)施例中,在第一階段恢復(fù)的信息將會(huì)重新創(chuàng)建足以通過操作系統(tǒng)完成所述恢復(fù)處理的操作系統(tǒng)的一部分。操作系統(tǒng)的這些部分可以包括支持硬件訪問和核心模式恢復(fù)加載器的操作系統(tǒng)核心部分。
ー些或所有休眠信息可以采用壓縮形式來記錄。在一些實(shí)施例中,基于計(jì)算設(shè)備的處理器和盤I/o的能力,可以動(dòng)態(tài)選擇ー個(gè)或多個(gè)適當(dāng)?shù)膲嚎s算法。例如,壓縮算法可以是在計(jì)算設(shè)備中基于處理器的數(shù)量和處理速度以及基于盤I/o速度而被選擇的。在更多處理能力可用時(shí),壓縮算法還可以是基于偏向使用更大壓縮的標(biāo)準(zhǔn)而被選擇的。所述標(biāo)準(zhǔn)還可以在存儲(chǔ)了休眠信息的盤或其他非易失存儲(chǔ)器的訪問時(shí)間較慢的時(shí)候偏向使用更大壓縮。與休眠信息一起存儲(chǔ)的元數(shù)據(jù)可以包括指示所使用的壓縮的特性的參數(shù)值。根據(jù)ー個(gè)方面,可以實(shí)現(xiàn)一種用于操作包含了至少ー個(gè)處理器的計(jì)算設(shè)備的方法。該方法可以包括動(dòng)態(tài)選擇至少一個(gè)壓縮算法,以及在休眠的時(shí)候,將休眠信息的第一部分記錄在非易失存儲(chǔ)器中,所述第一部分包括來自操作存儲(chǔ)器的代表休眠時(shí)的計(jì)算設(shè)備狀態(tài)的信息,將休眠信息的第二部分記錄在非易失存儲(chǔ)器中,所述第二部分包括來自操作存儲(chǔ)器的代表休眠時(shí)計(jì)算設(shè)備的狀態(tài)的信息。所述第一部 分和/或第二部分可以依照至少ー個(gè)動(dòng)態(tài)選擇的壓縮算法中的一種動(dòng)態(tài)選擇的算法來壓縮,以使第一部分和第二部分具有不同的壓縮量。根據(jù)另ー個(gè)方面,可以提供一種計(jì)算機(jī)系統(tǒng),其中該系統(tǒng)包含易失存儲(chǔ)介質(zhì)以及包含休眠信息的非易失存儲(chǔ)介質(zhì)。休眠信息可以包括存儲(chǔ)指示計(jì)算機(jī)系統(tǒng)休眠時(shí)的狀態(tài)的一部分的第一信息的第一部分,以及存儲(chǔ)關(guān)于休眠時(shí)的系統(tǒng)狀態(tài)的第二信息的第二部分,其中所述第一信息是用第一壓縮算法壓縮的,所述第二信息是用第二壓縮算法壓縮的。該休眠信息還可以包括至少識(shí)別第二部分和第二壓縮算法的報(bào)頭信息。根據(jù)另ー個(gè)方面,可以提供一種用于操作計(jì)算設(shè)備的方法,包括使用至少ー種壓縮算法來壓縮下列各項(xiàng)中的至少ー個(gè)第一信息,其包含來自操作存儲(chǔ)器且用于恢復(fù)計(jì)算設(shè)備操作系統(tǒng)一部分的信息,以及第二信息,其包含來自操作存儲(chǔ)器的關(guān)于休眠時(shí)的計(jì)算設(shè)備狀態(tài)的信息,在非易失存儲(chǔ)器中的休眠信息的第一部分中記錄第一信息,在非易失存儲(chǔ)器中的休眠信息的第二部分中記錄第二信息,以及在與休眠信息相關(guān)聯(lián)的元數(shù)據(jù)中記錄識(shí)別至少ー個(gè)壓縮算法的至少ー個(gè)參數(shù)的至少ー個(gè)值。以上是關(guān)于本發(fā)明的非限制性概述,本發(fā)明則是由所附的權(quán)利要求定義的。


附圖并沒有打算按比例繪制。在附圖中,在不同的圖中示出的每ー個(gè)相同或近似相同的組件都是用相同的數(shù)字表示的。為了清楚起見,并不是每ー個(gè)組件都在每ー個(gè)圖中進(jìn)行了標(biāo)記。在附圖中
圖I是示出了其中可以實(shí)現(xiàn)本發(fā)明的一些實(shí)施例的系統(tǒng)的原理框 圖2是示出了根據(jù)本發(fā)明一些實(shí)施例在計(jì)算設(shè)備中從休眠中恢復(fù)的序列的功能框圖;圖3是是示出了根據(jù)本發(fā)明的一些實(shí)施例來操作計(jì)算設(shè)備而從休眠中恢復(fù)所述計(jì)算設(shè)備的方法的流程 圖4是示出了根據(jù)本發(fā)明的一些實(shí)施例由多個(gè)處理器讀取休眠信息的處理的流程圖; 圖5是示出了根據(jù)本發(fā)明的一些實(shí)施例操作計(jì)算設(shè)備進(jìn)入休眠的方法的流程 圖6A和6B是根據(jù)本發(fā)明的一些實(shí)施例動(dòng)態(tài)選擇壓縮算法以壓縮休眠信息的方法的流程圖;以及
圖7是示出了本發(fā)明的一些實(shí)施例可在其中操作的環(huán)境的例示計(jì)算設(shè)備的框圖。
具體實(shí)施例方式申請(qǐng)人:認(rèn)識(shí)并意識(shí)到,常規(guī)的從休眠中恢復(fù)的處理涉及在計(jì)算設(shè)備引導(dǎo)固件的控制下恢復(fù)計(jì)算設(shè)備的狀態(tài),這種處理不能有效使用計(jì)算設(shè)備的處理資源。計(jì)算設(shè)備可以具有多個(gè)處理器。然而,引導(dǎo)固件不能支持多個(gè)處理器。此外,引導(dǎo)固件通常不支持異步I/O。相應(yīng)地,計(jì)算設(shè)備的可用資源并未得到充分使用,而這有可能會(huì)限制計(jì)算設(shè)備從休眠模式中恢復(fù)的速度。申請(qǐng)人:認(rèn)識(shí)并意識(shí)到,為了提高計(jì)算設(shè)備從休眠模式中恢復(fù)的速度,計(jì)算設(shè)備可以被配置成分多個(gè)階段從休眠模式中恢復(fù)。每ー個(gè)恢復(fù)階段可以從休眠信息中部分恢復(fù)計(jì)算設(shè)備的狀態(tài),而每ー個(gè)后續(xù)恢復(fù)階段則恢復(fù)附加狀態(tài)信息。此外,每ー個(gè)恢復(fù)階段都可以建立一個(gè)后續(xù)階段可在其中運(yùn)行的環(huán)境。結(jié)果,這些恢復(fù)階段可以在不同的環(huán)境中執(zhí)行,以便在不同的階段使用計(jì)算設(shè)備的不同資源來快速完成恢復(fù)操作。在一些實(shí)施例中,通過運(yùn)行第一組計(jì)算機(jī)可執(zhí)行指令,可以執(zhí)行從休眠中恢復(fù)的處理的ー個(gè)階段。例如,這些指令可以構(gòu)成作為計(jì)算設(shè)備BIOS的一部分的引導(dǎo)加載器,或 者可以采用其他方式處于計(jì)算設(shè)備的固件中。這些指令可以控制將保存在非易失存儲(chǔ)器中的休眠信息的第一部分傳送到操作存儲(chǔ)器的處理。這些指令可以在第一環(huán)境中運(yùn)行。所述第一環(huán)境可以是ー個(gè)相對(duì)稀疏的環(huán)境,例如預(yù)操作系統(tǒng)環(huán)境。舉個(gè)例子,第一組指令可以在不支持對(duì)包含休眠信息的存儲(chǔ)介質(zhì)的異步訪問的單個(gè)處理器上執(zhí)行。通過執(zhí)行第一組計(jì)算機(jī)可執(zhí)行指令,可以建立其中能夠運(yùn)行第二組計(jì)算機(jī)可執(zhí)行指令的第二環(huán)境。所述第二組計(jì)算機(jī)可執(zhí)行指令可以控制將休眠信息的第二部分從非易失存儲(chǔ)器傳送到操作存儲(chǔ)器的處理。作為ー個(gè)具體示例,通過在預(yù)操作系統(tǒng)環(huán)境中運(yùn)行引導(dǎo)級(jí)加載器,可以在操作系統(tǒng)中恢復(fù)核心級(jí)加載器。所述核心級(jí)加載器可以使用諸如多處理器支持或異步I/o支持之類的通過操作系統(tǒng)提供的資源來控制將休眠信息傳送到易失存儲(chǔ)器的處理。與第一環(huán)境相比,第二環(huán)境可以具有更豐富的資源集合。舉例來說,當(dāng)操作系統(tǒng)環(huán)境為多個(gè)處理器提供支持的時(shí)候,這時(shí)可以使用ー個(gè)以上的處理器來執(zhí)行第二階段的處理,以便分擔(dān)完成從休眠中恢復(fù)的處理所需要的處理負(fù)載。一個(gè)或多個(gè)處理器可以從非易失存儲(chǔ)器中讀取休眠信息,并使其可供ー個(gè)或多個(gè)其他處理器用于進(jìn)行處理。例如,ー個(gè)或多個(gè)這樣的處理器可以將休眠信息傳送到易失存儲(chǔ)器的共享緩存器中。其他處理器可以訪問共享緩存器,如果該信息是以壓縮形式保存的,那么所述其他處理器可以解壓縮該信息。然后,解壓縮的信息可被傳送回到操作存儲(chǔ)器中的恰當(dāng)位置。在一些實(shí)施例中,從非易失存儲(chǔ)器中讀取休眠信息的一個(gè)或多個(gè)處理器可以使用同步I/o操作。然而,由于其他處理器可以同時(shí)處理信息并將其傳送到操作存儲(chǔ)器,因此,所述恢復(fù)處理可以快速進(jìn)行。更豐富的操作系統(tǒng)環(huán)境還可以包括對(duì)于允許對(duì)包含休眠信息的存儲(chǔ)介質(zhì)進(jìn)行異步訪問的存儲(chǔ)器訪問功能的支持,這樣做同樣可以加速恢復(fù)操作,而不用考慮可用處理器的數(shù)量。例如,操作系統(tǒng)環(huán)境可以支持異步盤輸入/輸出(I/O)。相應(yīng)地,處理器可以將休眠信息從非易失存儲(chǔ)器傳送到充當(dāng)緩存器的存儲(chǔ)介質(zhì),并且從中可以訪問所述信息來實(shí)施處理,以便基于休眠信息來恢復(fù)狀態(tài)信息。該處理可以由其他處理器執(zhí)行,或者在異步讀取操作讀取處于未決狀態(tài)等待的時(shí)候可以由讀取信息的相同處理器執(zhí)行。相應(yīng)地,即使計(jì)算設(shè)備只具有單個(gè)處理器,也可以使用異步訪問來加速恢復(fù)過程。另舉一例,當(dāng)支持異步I/O時(shí),可以設(shè)置異步I/O操作的參數(shù)來加速恢復(fù)處理。例如,第二環(huán)境可以支持同時(shí)處于未決狀態(tài)等待的多個(gè)I/O操作。這種同時(shí)處于未決狀態(tài)等待的操作的數(shù)量可以是可配置的,并且這種操作的數(shù)量可以作為將計(jì)算設(shè)備配置成在第二環(huán)境中操作的處理的一部分來規(guī)定。此外,控制每ー個(gè)I/o操作大小的參數(shù)也可以作為建立第二環(huán)境的處理的一部分來設(shè)置。這些參數(shù)既可以是動(dòng)態(tài)設(shè)置的,也可以是基于計(jì)算設(shè)備上的硬件設(shè)置的,還可以是采用任何適當(dāng)方式設(shè)置的。在一些實(shí)施例中,為了分多個(gè)階段實(shí)現(xiàn)從休眠中恢復(fù)的處理,來自操作存儲(chǔ)器并且將會(huì)在每ー個(gè)恢復(fù)階段恢復(fù)的信息可以被獨(dú)立地記錄。任何適當(dāng)?shù)募夹g(shù)都可以用于確定存儲(chǔ)來自操作存儲(chǔ)器的哪些信息以便在每ー個(gè)階段中使用。在一些實(shí)施例中,休眠信息可以是在休眠序列中基于計(jì)算設(shè)備的狀態(tài)而被動(dòng)態(tài)確定的。例如,在計(jì)算機(jī)操作系統(tǒng)內(nèi)部管理休眠信息存儲(chǔ)的實(shí)用工具可以用那些為了在第一階段之后使用而要被恢復(fù)的一系列操作系統(tǒng)組件來編程。所述休眠實(shí)用工具可以在操作系統(tǒng)維護(hù)的存儲(chǔ)器管理結(jié)構(gòu)中識(shí)別這些 組件使用的存儲(chǔ)頁(yè)面。這些存儲(chǔ)頁(yè)面可以作為與第一階段相關(guān)聯(lián)的一部分休眠信息的一部分來存儲(chǔ)。休眠信息可以采用任何適當(dāng)?shù)姆绞酱鎯?chǔ),以使允許適合每ー個(gè)階段的休眠信息部分能被用于該階段的恢復(fù)加載器識(shí)別。例如,休眠信息可以結(jié)合識(shí)別將在多階段恢復(fù)中的每個(gè)階段恢復(fù)的信息的元數(shù)據(jù)一起來保存。在將休眠信息作為休眠文件來加以保存的實(shí)施例中,文件報(bào)頭可以存儲(chǔ)元數(shù)據(jù)。但是,其他實(shí)現(xiàn)也是可以替換的。在一些實(shí)施例中,ー些或所有休眠信息可以用壓縮形式記錄。在一些實(shí)施例中,適當(dāng)?shù)膲嚎s算法可以是基于計(jì)算設(shè)備的處理器和盤I/o的能力而被動(dòng)態(tài)選擇的。例如,壓縮算法可以是在計(jì)算設(shè)備中基于處理器的數(shù)量和處理速度以及基于盤的I/o速度而被選擇的。在一些實(shí)施例中,壓縮算法在有更多處理能力可用時(shí)可以是基于偏向使用更高壓縮的標(biāo)準(zhǔn)來選擇的。當(dāng)存儲(chǔ)休眠信息的盤或其他非易失存儲(chǔ)器的訪問時(shí)間較慢吋,也可以選擇具有更高壓縮度的壓縮算法。在一些實(shí)施例中,由于所述恢復(fù)的不同階段是在不同的環(huán)境中執(zhí)行的,因此,不同的壓縮算法可以在不同階段產(chǎn)生不同的性能益處。由此,基于計(jì)算設(shè)備在各個(gè)恢復(fù)階段可用的資源,可以選擇不同的壓縮算法來壓縮用于不同階段的休眠信息。與休眠信息一起保存的元數(shù)據(jù)可以包括指示所使用的壓縮的特性的參數(shù)值。在從休眠中恢復(fù)的過程中可以訪問這些參數(shù)。由此,在恢復(fù)過程中,不同的解壓縮算法可以是基于元數(shù)據(jù)而被選擇的。結(jié)果,基于選擇用于壓縮休眠信息的相應(yīng)壓縮算法,不同的算法可以用于解壓縮休眠信息的各部分?,F(xiàn)在轉(zhuǎn)到圖1,該圖示出的是可以被適配成根據(jù)本發(fā)明實(shí)施例來操作的計(jì)算設(shè)備100的功能框圖。在本示例中,計(jì)算設(shè)備100包括易失存儲(chǔ)器102。易失存儲(chǔ)器102可以使用DRAM或是其他任何適當(dāng)?shù)拇鎯?chǔ)器組件來實(shí)現(xiàn)。計(jì)算設(shè)備100還包括非易失存儲(chǔ)器104,其中該非易失存儲(chǔ)器可以使用任何適當(dāng)?shù)拇鎯?chǔ)器組件來實(shí)現(xiàn)。任何適當(dāng)?shù)奈锢碓O(shè)備都可以用于實(shí)現(xiàn)非易失存儲(chǔ)器104。例如,非易失存儲(chǔ)器104可以是諸如旋轉(zhuǎn)硬盤或固態(tài)驅(qū)動(dòng)器之類的盤。計(jì)算設(shè)備100可以包括本領(lǐng)域已知的其他任何組件。這些組件可以包括多個(gè)處理器106。每ー個(gè)處理器106都可以作為本領(lǐng)域已知的獨(dú)立物理芯片或其他設(shè)備來實(shí)現(xiàn)。但在一些實(shí)施例中,每ー個(gè)處理器可以是多核設(shè)備的ー個(gè)核心。應(yīng)該意識(shí)到的是,計(jì)算設(shè)備為100可以包括為了簡(jiǎn)單起見而被省略的其他任何適當(dāng)?shù)慕M件。這里描述的技術(shù)允許在從休眠中恢復(fù)的過程的至少ー個(gè)部分中使用ー個(gè)以上的處理器106。易失存儲(chǔ)器102可以是操作存儲(chǔ)器的ー個(gè)示例。在操作中,易失存儲(chǔ)器102可以存儲(chǔ)用于操作計(jì)算機(jī)系統(tǒng)的信息。這些信息可以包括可執(zhí)行代碼、所述代碼使用的數(shù)據(jù)和/或其他狀態(tài)信息。這里描述的技術(shù)實(shí)現(xiàn)了ー種從休眠中恢復(fù)計(jì)算設(shè)備100以便提升計(jì)算設(shè)備從休眠中恢復(fù)的速度的處理。當(dāng)計(jì)算設(shè)備100進(jìn)入休眠模式時(shí),該設(shè)備可以執(zhí)行ー個(gè)休眠序列,這其中包括存儲(chǔ)用于在以后從休眠中恢復(fù)的休眠信息。該休眠信息可以保存在非易失存儲(chǔ)器104中。在一些實(shí)施例中,休眠信息可以保存在非易失存儲(chǔ)器104中的一個(gè)名為·hiberfile的文件108中。然而應(yīng)該意識(shí)到,本發(fā)明的實(shí)施例并不局限于在非易失存儲(chǔ)器104中存儲(chǔ)休眠信息的方式,所述休眠信息可以保存在任何適當(dāng)?shù)拇鎯?chǔ)介質(zhì)中。非易失存儲(chǔ)器的具體類型并不重要,但是可以是諸如硬盤或固態(tài)盤之類的順序訪問盤。在一些實(shí)施例中,從休眠中恢復(fù)的處理可以在多個(gè)階段中執(zhí)行。單純出于例證目的,在這里示出了兩個(gè)恢復(fù)階段。應(yīng)該意識(shí)到的是,從休眠中恢復(fù)的處理可以經(jīng)由兩個(gè)以上的階段執(zhí)行,其中在每ー個(gè)階段恢復(fù)的信息都被用于為后續(xù)階段建立環(huán)境。要在每ー個(gè)階段恢復(fù)的信息可以保存在非易失存儲(chǔ)器內(nèi)存儲(chǔ)的休眠信息內(nèi)部的獨(dú)立的位置。每ー個(gè)階段可以部分恢復(fù)計(jì)算設(shè)備,以便建立一個(gè)其中可以執(zhí)行另ー個(gè)恢復(fù)階段的環(huán)境。從休眠中恢復(fù)的處理可以用任何適當(dāng)?shù)姆绞絼澐殖呻A段。為了經(jīng)由多個(gè)階段來從休眠中恢復(fù),休眠信息可被分成區(qū)段。在每ー個(gè)區(qū)段上可以記錄相應(yīng)階段的信息,其中在被移動(dòng)回到操作存儲(chǔ)器時(shí),所述階段將會(huì)為后續(xù)階段建立ー個(gè)環(huán)境。相應(yīng)地,hiberfile 108的不同部分可以存儲(chǔ)從休眠中恢復(fù)的處理的不同階段所需要的信息。在圖示實(shí)施例中,hiberfile 108可以包括報(bào)頭110、第一部分112和第二部分114。部分112和114中的每ー個(gè)都可以存儲(chǔ)在從休眠中恢復(fù)的處理的相應(yīng)階段傳送至操作存儲(chǔ)器的休眠信息。應(yīng)該意識(shí)到的是,hiberfile 108的部分112和114在圖I是僅僅是作為示例顯示的,并且休眠信息在非易失存儲(chǔ)器104中的其他任何適當(dāng)?shù)慕M織都可以用于存儲(chǔ)休眠信息。此外,當(dāng)從休眠中恢復(fù)的處理可以包括兩個(gè)以上的階段時(shí),該信息可以保存在兩個(gè)或多個(gè)部分中。任何適當(dāng)?shù)募夹g(shù)都可以用于識(shí)別為了在以后用于相應(yīng)的恢復(fù)階段而被存儲(chǔ)的信息。在一些實(shí)施例中,識(shí)別操作存儲(chǔ)器內(nèi)容的休眠信息的不同部分的位置可以作為元數(shù)據(jù)來記錄——例如記錄在休眠文件108的報(bào)頭110中。作為替換或補(bǔ)充,這個(gè)元數(shù)據(jù)可以包括在從休眠中恢復(fù)的處理中使用的其他信息,例如用來壓縮休眠信息的ー個(gè)或多個(gè)部分的壓縮算法的標(biāo)識(shí)。Hiberfile 110的第一部分112可以包括用于在第一階段中恢復(fù)計(jì)算設(shè)備操作系統(tǒng)一部分的信息。在一些實(shí)施例中,這部分操作系統(tǒng)可以包括操作系統(tǒng)核心的一部分。第二部分114可以包括用于完成恢復(fù)計(jì)算設(shè)備110在進(jìn)入休眠模式時(shí)的狀態(tài)的處理的信息。報(bào)頭110可以包括用于識(shí)別第一部分112和第二部分114的信息。與引導(dǎo)固件預(yù)操作系統(tǒng)環(huán)境118相比,操作系統(tǒng)可以提供ー個(gè)具有更豐富的資源的環(huán)境116。由此,在一些實(shí)施例中,預(yù)操作系統(tǒng)環(huán)境可以僅僅恢復(fù)足以部分恢復(fù)操作系統(tǒng)的休眠信息。所恢復(fù)的部分可以建立一個(gè)其中能夠執(zhí)行恢復(fù)處理的更大部分的操作系統(tǒng)環(huán)境。相應(yīng)地,在第一階段中要移動(dòng)到操作存儲(chǔ)器的休眠信息量可以小于在第二階段中要移動(dòng)到操作存儲(chǔ)器的休眠信息量。結(jié)果,在第一階段中恢復(fù)的休眠文件108的部分112中可以僅僅存儲(chǔ)足以部分恢復(fù)操作系統(tǒng)核心的狀態(tài)信息。而在hiberfile 108的部分104中存儲(chǔ)在以后用于從休眠中完全恢復(fù)計(jì)算設(shè)備的剰余狀態(tài)信息。圖I示意性顯示出可以將那些關(guān)于在操作系統(tǒng)環(huán)境116內(nèi)部運(yùn)行的組件的狀態(tài)信息分成兩個(gè)部分,這兩個(gè)部分分別是用120和121標(biāo)記的,其中每ー個(gè)部分都可以獨(dú)立 保存在hiberfile 108中,以便在相應(yīng)的恢復(fù)階段恢復(fù)。由此,狀態(tài)信息120可以保存在hiberfile 108的部分112中,其中所述部分是在第一恢復(fù)階段恢復(fù)的。狀態(tài)信息120可以包括用于實(shí)現(xiàn)核心級(jí)恢復(fù)加載器122、ー些操作系統(tǒng)服務(wù)124以及驅(qū)動(dòng)器126的代碼。驅(qū)動(dòng)器126可以控制在第二恢復(fù)階段中操作的硬件組件,并且舉例來說,所述驅(qū)動(dòng)器可以包括用于與盤硬件通信的一個(gè)或多個(gè)驅(qū)動(dòng)器,用于內(nèi)存轉(zhuǎn)儲(chǔ)堆棧的驅(qū)動(dòng)器、高級(jí)配置與電源接ロ(ACPI)驅(qū)動(dòng)器以及其他驅(qū)動(dòng)器。關(guān)于其他任何適當(dāng)組件的信息都可以保存在hiberfile108的部分112中。在一些實(shí)施例中,保存在hiberfile 108的第一部分112中的信息可以在恢復(fù)過程中由保存在預(yù)操作系統(tǒng)環(huán)境118的固件130中的引導(dǎo)級(jí)恢復(fù)加載器128返回給活動(dòng)存儲(chǔ)器。該引導(dǎo)加載器128可以控制計(jì)算設(shè)備100從休眠中的部分恢復(fù),以便使得核心級(jí)恢復(fù)加載器122能夠在操作系統(tǒng)環(huán)境116中操作。如圖I所示,狀態(tài)信息121可以保存在hiberfile 108的部分114中。當(dāng)在第二恢復(fù)階段中被移動(dòng)回到操作存儲(chǔ)器時(shí),該信息可以用于完成恢復(fù)處理。雖然關(guān)于計(jì)算設(shè)備100休眠時(shí)的狀態(tài)的信息120是部分保存在部分122中的,但是狀態(tài)信息121可以使用本領(lǐng)域已知的技術(shù)來實(shí)現(xiàn)。它可以將狀態(tài)信息從活動(dòng)存儲(chǔ)器傳送到非易失存儲(chǔ)器,并且隨后使用常規(guī)計(jì)算設(shè)備中的技術(shù)來觸發(fā)計(jì)算設(shè)備的電源關(guān)閉。狀態(tài)信息可以是在諸如由存儲(chǔ)器管理器138定義的存儲(chǔ)頁(yè)面之類的分段中傳送的。每ー個(gè)頁(yè)面都可以在存儲(chǔ)前被壓縮。此外,每一個(gè)分段可被標(biāo)記或者采用某種方式標(biāo)識(shí),以便在從休眠中恢復(fù)的時(shí)候可以將所述分段返回到先前從中拷貝該分段的活動(dòng)存儲(chǔ)器中的相同存儲(chǔ)位置。所有這些操作都可以使用常規(guī)技術(shù)或其他任何適當(dāng)?shù)募夹g(shù)來執(zhí)行。但是,休眠實(shí)用工具132與常規(guī)實(shí)用工具的不同之處可以在與它會(huì)以ー種支持多階段恢復(fù)的方式來將狀態(tài)信息從活動(dòng)存儲(chǔ)器傳送到非易失存儲(chǔ)器。為了支持這些操作,休眠實(shí)用工具132可以識(shí)別活動(dòng)存儲(chǔ)器中那些存儲(chǔ)了將要在每個(gè)階段中恢復(fù)的狀態(tài)信息的分段,并且采用恰當(dāng)?shù)母袷絹韺⒃撔畔⒈4嬖趆iberfile 108中。在一些實(shí)施例中,休眠實(shí)用工具可以將信息添加給hiberfile,以便支持多階段恢復(fù)。舉個(gè)例子,休眠實(shí)用工具132可以添加關(guān)于如何調(diào)用用于后續(xù)階段的加載器的信息。作為替換或補(bǔ)充,與讓加載器122在休眠時(shí)處于活動(dòng)存儲(chǔ)器中不同,實(shí)用工具132可以將其添加給 hiberfile 108。保存在hiberfile 108的部分114中的指令可以包括休眠實(shí)用工具132。休眠實(shí)用工具132對(duì)在第二恢復(fù)階段中將保存在hiberfile 108的部分114中的休眠信息傳送到易失存儲(chǔ)器102的處理進(jìn)行控制。該休眠實(shí)用工具132可以包括在第一階段中使能的核心級(jí)恢復(fù)加載器122,其中該加載器可以運(yùn)行來將保存在hiberfile 108的部分114中的指令加載到易失存儲(chǔ)器102。狀態(tài)信息121可以包括關(guān)于在恢復(fù)時(shí)要恢復(fù)的計(jì)算設(shè)備100在休眠時(shí)的狀態(tài)的任何適當(dāng)信息。狀態(tài)信息121可以包括操作系統(tǒng)服務(wù)134、驅(qū)動(dòng)器136、存儲(chǔ)器管理器138以及為了簡(jiǎn)單起見而沒有顯示的其他任何組件。驅(qū)動(dòng)器136可以控制硬件組件。存儲(chǔ)器管理器138可以是操作系統(tǒng)服務(wù)134的ー個(gè)示例,并且可以在易失存儲(chǔ)器102中組織信息。操作系統(tǒng)提供的其他任何適當(dāng)?shù)姆?wù)(例如與用戶接ロ交互以及建立網(wǎng)絡(luò)連接)都是可以實(shí)現(xiàn)的,并且特定的操作系統(tǒng)服務(wù)134并不是對(duì)本發(fā)明的限制。在一些實(shí)施例中,保存在hibierfile 108的第一部分112中的信息和保存在第二 部分114中的信息可以在保存前被壓縮??梢赃x擇不同的壓縮算法來壓縮保存在每ー個(gè)部分112和114中的信息。在這樣的實(shí)施例中,報(bào)頭110可以包括包含了指示用于hiberfile108的壓縮算法或是所述文件的ー個(gè)或多個(gè)部分中的每ー個(gè)的特性的參數(shù)值的元數(shù)據(jù)。在一些實(shí)施例中,休眠實(shí)用工具132可以為休眠信息的ー個(gè)或多個(gè)部分中的信息選擇ー種壓縮算法。適當(dāng)?shù)膲嚎s算法可以是基于多個(gè)標(biāo)準(zhǔn)動(dòng)態(tài)選擇的,這其中包括將在其中解壓縮信息的環(huán)境的特性。由此,用于壓縮保存在hiberfile 108的第一部分112中的信息的第一壓縮算法可以是基于用于訪問部分112以便在操作存儲(chǔ)器中存儲(chǔ)所述信息的計(jì)算設(shè)備1000的至少ー個(gè)組件的能力動(dòng)態(tài)選擇的。為了壓縮保存在hiberfile 108的第二部分114中的信息,可以基于用于訪問第二部分114以便在操作存儲(chǔ)器中存儲(chǔ)來自這個(gè)部分的信息的計(jì)算設(shè)備100的盤輸入(I/O)速度和處理器106的能力中的至少ー個(gè)來動(dòng)態(tài)選擇第二壓縮算法。應(yīng)該意識(shí)到的是,在一些實(shí)施例中,只有保存在hiberfile 108的第一部分112中的信息或是只有保存在hiberfile 108的第二部分114中的信息才可以采用壓縮形式保存。保存在非易失存儲(chǔ)器104內(nèi)hiberfile 108或其他適當(dāng)存儲(chǔ)器中的休眠信息可以用于從休眠中恢復(fù)計(jì)算設(shè)備100。圖2示出了根據(jù)ー些實(shí)施例從休眠中恢復(fù)的期間的計(jì)算設(shè)備100。圖2所示的計(jì)算設(shè)備包括與圖I所示那些相似的組件。在一些實(shí)施例中,從休眠中恢復(fù)的處理是在多個(gè)恢復(fù)階段中執(zhí)行的。如結(jié)合圖I所述,來自操作存儲(chǔ)器且將會(huì)在每ー個(gè)恢復(fù)階段中恢復(fù)的信息(例如狀態(tài)信息120和狀態(tài)信息121)可以獨(dú)立記錄在非易失存儲(chǔ)器上存儲(chǔ)的休眠信息中。在所示出的示例中,休眠信息可以保存在非易失存儲(chǔ)器104內(nèi)存儲(chǔ)的休眠文件108中。Hiberfile 108包括存儲(chǔ)可以在第一恢復(fù)階段中恢復(fù)的信息的第一部分112,以及存儲(chǔ)可以在第二恢復(fù)階段中恢復(fù)的信息的第二部分114。該休眠信息可以結(jié)合識(shí)別將會(huì)在每個(gè)階段恢復(fù)的信息的元數(shù)據(jù)來存儲(chǔ)。在所示出的示例中,Hiberfile 108中的元數(shù)據(jù)可以用于識(shí)別將要在每個(gè)恢復(fù)階段中恢復(fù)的信息。舉例來說,所述元數(shù)據(jù)可以保存在hiberfile 108的報(bào)頭110中。然而應(yīng)該意識(shí)到的是,將被在各個(gè)不同的恢復(fù)階段中處理的休眠信息可以用任何適當(dāng)?shù)姆绞阶R(shí)另O,這其中包括使用預(yù)定地址來指示用于每ー個(gè)階段的部分或是處于部分末端且識(shí)別后續(xù)階段的一部分的指針。
從休眠中恢復(fù)的序列可以通過訪問保存在引導(dǎo)固件130中的指令來開始。這些指令促使諸如處理器106的處理器202之類的處理器訪問休眠文件108。在本示例中,在訪問休眠文件108時(shí),處理器202會(huì)將休眠文件108的內(nèi)容的一部分拷貝至操作存儲(chǔ)器(例如易失存儲(chǔ)器102)。舉個(gè)例子,該指令可以促使處理器202從hiberfile 108的部分112中讀取信息,以便使能引導(dǎo)級(jí)恢復(fù)加載器128。保存在hiberfile 108的第一部分112中的休眠信息可以包括用于在第一恢復(fù)階段中創(chuàng)建足以通過操作系統(tǒng)來完成第二階段的恢復(fù)處理的操作系統(tǒng)一部分的信息。在圖示示例中,在第一恢復(fù)階段,保存在hiberfile 108的第一部分112中的狀態(tài)信息120可被恢復(fù)。Hiberfile 108的第一部分112可以由引導(dǎo)級(jí)恢復(fù)加載器128返回給活動(dòng)存儲(chǔ)器。該引導(dǎo)加載器可以是計(jì)算設(shè)備100的BIOS的一部分,或者也可以采用其他方式處于計(jì)算設(shè)備的固件130中。引導(dǎo)加載器128可以控制通過使用常規(guī)的從休眠中恢復(fù)的技術(shù)來將保存 在hiberfile 108的部分112中的休眠信息傳送到易失存儲(chǔ)器102的處理。相應(yīng)地,引導(dǎo)級(jí)恢復(fù)加載器128可以在預(yù)操作系統(tǒng)環(huán)境118中運(yùn)行。引導(dǎo)級(jí)恢復(fù)加載器128可以構(gòu)成在恢復(fù)過程中運(yùn)行的第一組計(jì)算機(jī)可執(zhí)行指令。執(zhí)行這些指令可以恢復(fù)操作系統(tǒng)核心的一部分,例如核心級(jí)恢復(fù)加載器122。在其中運(yùn)行第一組計(jì)算機(jī)可執(zhí)行指令的預(yù)操作系統(tǒng)環(huán)境118可以是相對(duì)稀疏的環(huán)境。例如,即使存在多個(gè)處理器,引導(dǎo)級(jí)恢復(fù)加載器128也可能不能夠支持多個(gè)處理器。因此,第一組指令可以在單個(gè)處理器202上運(yùn)行,并且可能不支持異步訪問包含休眠信息的存儲(chǔ)介質(zhì),例如hiberfile 108。舉個(gè)例子,預(yù)操作系統(tǒng)環(huán)境118不支持異步I/O操作。在第一恢復(fù)階段運(yùn)行第一組計(jì)算機(jī)可執(zhí)行指令可以建立可在其中執(zhí)行第二組計(jì)算機(jī)可執(zhí)行指令的另ー個(gè)環(huán)境。所述第二組指令可以基于hiberfile 108的第二部分114而在操作系統(tǒng)環(huán)境116中運(yùn)行。由于在先前階段中只恢復(fù)了操作系統(tǒng)的一部分,因此,該環(huán)境可能不同于完整的操作系統(tǒng)環(huán)境。在這個(gè)“早期”操作系統(tǒng)環(huán)境中可以運(yùn)行多個(gè)用于恢復(fù)保存在hiberfile中的信息的組件,例如從hiberfile 108的第二部分114記錄的狀態(tài)信息121中恢復(fù)信息的組件。通過在操作系統(tǒng)環(huán)境116中運(yùn)行第二組計(jì)算機(jī)可執(zhí)行指令,可以導(dǎo)致最終從休眠中完全恢復(fù)計(jì)算機(jī)設(shè)備100。在第一階段中,引導(dǎo)級(jí)加載器128可以控制從休眠中部分恢復(fù)計(jì)算設(shè)備100的處理,以便在操作系統(tǒng)環(huán)境116中使能核心級(jí)恢復(fù)加載器122。引導(dǎo)級(jí)加載器128可以響應(yīng)于來自計(jì)算機(jī)用戶的恢復(fù)輸入或其他適當(dāng)事件而被觸發(fā)操作。所述引導(dǎo)級(jí)加載器可以像在常規(guī)計(jì)算機(jī)系統(tǒng)中一祥地操作。但是可以對(duì)其進(jìn)行編程,以便將控制權(quán)傳送到用于下ー個(gè)恢復(fù)階段的加載器。在圖示實(shí)施例中,在第二階段,核心級(jí)恢復(fù)加載器122可以控制將保存在hiberfile 108的第二部分114中的休眠信息傳送到易失存儲(chǔ)器102的處理。保存在部分114中的休眠信息可以包括保持計(jì)算設(shè)備100在休眠時(shí)的狀態(tài)的狀態(tài)信息121。核心級(jí)恢復(fù)加載器122可以運(yùn)行這些指令來完成從休眠中恢復(fù)計(jì)算設(shè)備100的處理,以及恢復(fù)計(jì)算設(shè)備100在休眠時(shí)的狀態(tài)。與預(yù)操作系統(tǒng)環(huán)境118相比,諸如操作系統(tǒng)環(huán)境116之類的作為運(yùn)行第一組計(jì)算機(jī)可執(zhí)行指令的結(jié)果而建立的環(huán)境可以具有更豐富的資源集合。因此,操作系統(tǒng)環(huán)境116可以包括對(duì)于多個(gè)處理器的支持。作為替換或補(bǔ)充,操作系統(tǒng)環(huán)境116的更豐富資源集合可以包括允許異步訪問包含了諸如休眠文件108之類的休眠信息的存儲(chǔ)介質(zhì)的存儲(chǔ)器訪問功能。相應(yīng)地,在第二階段中可以使用ー個(gè)以上的處理器來執(zhí)行處理,以便分擔(dān)完成從休眠中恢復(fù)的處理所需要的處理負(fù)載。例如,一個(gè)或多個(gè)處理器可以讀取休眠信息,并且使其可供ー個(gè)或多個(gè)其他處理器用于處理。這些其他處理器可以解壓縮休眠信息,并且在適當(dāng)時(shí)將其傳送到操作存儲(chǔ)器。這樣做可以提升計(jì)算設(shè)備退出休眠模式的速度,并且將其資源恢復(fù)到完全操作狀態(tài)。對(duì)于本發(fā)明來說,使用處理器106來分擔(dān)第二恢復(fù)階段的處理負(fù)載的方式并不重要。在圖2所示的實(shí)施例中,諸如處理器202之類的單個(gè)處理器可以讀取hiberfile 108的第二部分114,并且使其可供處理器106之外的一個(gè)或多個(gè)其他處理器204用于處理。處理器202可以從第二部分114中讀取諸如頁(yè)面或頁(yè)面群組之類的分段,并且將這些分段記錄在易失存儲(chǔ)器102的共享緩存器中206中。當(dāng)?shù)诙糠?14的一個(gè)或多個(gè)分段在共享緩 存器206中可用時(shí),這些分段可以被其他處理器204檢索。在第二部分114采用壓縮形式存儲(chǔ)休眠信息的實(shí)施例中,在從共享緩存器206中檢索到分段吋,處理器204可以解壓縮這些分段,并且將其傳送到易失存儲(chǔ)器102中的恰當(dāng)位置。解壓縮算法可以是基于關(guān)于所使用的壓縮的信息來選擇的,其中所述壓縮可以基于對(duì)保存在hiberfile 108(例如報(bào)頭110)中的元數(shù)據(jù)的訪問來確定。操作系統(tǒng)環(huán)境116內(nèi)部的更豐富的資源集合可以包括允許同時(shí)由處理器202將休眠信息從非易失存儲(chǔ)器傳送到共享緩存器以及由處理器204從共享緩存器中檢索休眠信息分段的存儲(chǔ)器訪問功能。這些更豐富的資源可以包括對(duì)于異步輸入/輸出(I/O)操作的支持。在圖示實(shí)施例中,處理器202可以同步訪問非易失存儲(chǔ)器104。同步訪問可以加速?gòu)姆且资Т鎯?chǔ)器設(shè)備中讀取信息的處理。在從非易失存儲(chǔ)器中讀取了分段之后,只要其他處理器可用于將這些分段恢復(fù)到活動(dòng)存儲(chǔ)器的附加處理,則可以快速執(zhí)行整個(gè)恢復(fù)處理。如果多個(gè)處理器可用,則可以采用任何適當(dāng)?shù)姆绞絹硎褂眠@些處理器,以便提供快速恢復(fù)處理。例如,多個(gè)處理器可被用于從非易失存儲(chǔ)器中讀取信息?;蛘撸恍┨幚砥骺梢越鈮嚎s分段,而其他處理器則可以將解壓縮的分段拷貝到活動(dòng)存儲(chǔ)器。應(yīng)該意識(shí)到的是,多個(gè)處理器105僅僅是作為示例顯示的,因?yàn)樗鲇?jì)算設(shè)備100可以包括單個(gè)處理器。在這種場(chǎng)景中,單個(gè)處理器可以執(zhí)行將休眠信息的第二部分從非易失存儲(chǔ)器讀取到共享緩存器中所述部分的記錄分段以及從共享緩存器中檢索這些分段的處理。該處理器可以通過異步輸入/輸出(I/o)操作來從非易失存儲(chǔ)器讀取第二部分。因此,即使計(jì)算設(shè)備具有單個(gè)處理器,使用異步訪問也可以加速恢復(fù)處理,這是因?yàn)樵贗/O操作處于未決狀態(tài)等待從非易失存儲(chǔ)器中讀取休眠信息的另ー個(gè)分段的時(shí)候,處理器可以基于休眠信息分段而在某個(gè)間隔中執(zhí)行處理以恢復(fù)計(jì)算設(shè)備的狀態(tài)。圖3示出了從休眠模式中恢復(fù)計(jì)算設(shè)備(例如圖I和2的計(jì)算設(shè)備100)的處理300。處理300可以在任何適當(dāng)?shù)臅r(shí)間開始。例如,處理300可以依照定時(shí)器產(chǎn)生的事件而開始進(jìn)行,其中所述事件促使計(jì)算設(shè)備周期性地從休眠中喚醒,以便為所述設(shè)備提供服務(wù)。在其他場(chǎng)景中,處理300可以在從用戶那里接收到命令的時(shí)候開始進(jìn)行。然而,任何適當(dāng)?shù)挠|發(fā)器都可以用于發(fā)起從休眠中恢復(fù)的處理,因?yàn)楸景l(fā)明的實(shí)施例在這個(gè)方面是不受限制的。在方框302,處理器300被顯示成可選地包括接收從休眠中恢復(fù)的命令。該命令可以是用任何適當(dāng)?shù)姆绞浇邮盏?。例如,?jì)算設(shè)備用戶可以提供輸入(例如經(jīng)由電源按鈕或是其他輸入設(shè)備)來從休眠中恢復(fù)計(jì)算設(shè)備。作為替換或補(bǔ)充,所述恢復(fù)命令可以是從計(jì)算設(shè)備100的適當(dāng)組件接收的。在方框304,處于計(jì)算設(shè)備的預(yù)操作系統(tǒng)環(huán)境中的引導(dǎo)加載器可被執(zhí)行。該引導(dǎo)加載器可以是保存在計(jì)算設(shè)備固件中的引導(dǎo)級(jí)恢復(fù)加載器(例如圖I和2的引導(dǎo)級(jí)恢復(fù)加載器128)。該引導(dǎo)級(jí)恢復(fù)加載器可以控制從非易失存儲(chǔ)器中傳送保存在所述非易失存儲(chǔ)器中的適當(dāng)位置的休眠信息的一部分的處理。舉個(gè)例子,在一些實(shí)施例中,休眠信息可以保存在被稱為休眠文件(例如圖I和2的hiberfile 108)的組件中。為了經(jīng)由多個(gè)階段來恢復(fù)計(jì)算設(shè)備,hiberfile 108可以獨(dú)立存儲(chǔ)要在每ー個(gè)恢復(fù)階段中恢復(fù)的信息。舉個(gè)例子,如圖2所示,要在第一階段中恢復(fù)的信息可以保存在hiberfile 108的第一部分112中。要在第二階段恢復(fù)的信息可以保存在hiberfile 108的第二部分114中。接下來,在方框306,可以從休眠文件中讀取休眠信息的第一部分(例如hiberfile 108的第一部分112)??梢栽谟?jì)算設(shè)備上運(yùn)行引導(dǎo)級(jí)恢復(fù)加載器,以便控制將休眠信息從非易失存儲(chǔ)器傳送到計(jì)算設(shè)備的操作存儲(chǔ)器的處理。作為從非易失存儲(chǔ)器104中讀取休眠信息的第一部分的結(jié)果,在方框308,在易失存儲(chǔ)器102中可以恢復(fù)休眠信息的第一部分的內(nèi)容。從休眠中恢復(fù)的處理的第一階段309包括方框304-308的處理,其中所述第一階段有可能需要恢復(fù)足以通過操作系統(tǒng)來完成恢復(fù)處理的操作系統(tǒng)核心的一部分。相應(yīng)地,處理300可以繼續(xù)至方框310,在那里可以在操作系統(tǒng)的核心中運(yùn)行恢復(fù)加載器,作為核心級(jí)恢復(fù)加載器(例如圖I和2的核心級(jí)恢復(fù)加載器122)。將控制權(quán)轉(zhuǎn)移到核心級(jí)恢復(fù)加載器的處理可以采用任何適當(dāng)?shù)姆绞竭M(jìn)行。例如,作為階段I中部分恢復(fù)狀態(tài)的結(jié)果,核心級(jí)恢復(fù)加載器可以保存在預(yù)先定義的存儲(chǔ)位置。引導(dǎo)級(jí)恢復(fù)加載器可以促使分支跳轉(zhuǎn)到這些位置以便轉(zhuǎn)移控制權(quán)。由此,作為補(bǔ)充或替換,其他機(jī)制也是可以使用的。例如,在運(yùn)行了第一階段之后,核心級(jí)恢復(fù)加載器的活動(dòng)存儲(chǔ)器中的位置可以記錄在與休眠信息相關(guān)聯(lián)的元數(shù)據(jù)中,并且弓I導(dǎo)級(jí)加載器可以被配置成讀取該元數(shù)據(jù)并分支跳轉(zhuǎn)到恰當(dāng)位置。作為另ー種可能性,引導(dǎo)級(jí)加載器可以從休眠信息之外 的其他來源加載核心級(jí)加載器,然后開始運(yùn)行所述核心級(jí)加載器。在方框312,核心級(jí)恢復(fù)加載器可以控制從非易失存儲(chǔ)器中讀取休眠信息的第二部分的處理。該信息可以包括關(guān)于計(jì)算系統(tǒng)在休眠時(shí)的狀態(tài)的信息。在方框314,在易失存儲(chǔ)器102中可以恢復(fù)休眠信息的第二部分的內(nèi)容。結(jié)果,計(jì)算系統(tǒng)在休眠時(shí)的狀態(tài)可以傳送到易失存儲(chǔ)器102中,從而完全從休眠中恢復(fù)計(jì)算設(shè)備。因此,對(duì)于包含方框310-314的處理的從休眠中恢復(fù)的處理的第二階段315可以完成所述從休眠中恢復(fù)的處理。應(yīng)該意識(shí)到的是,即使圖3的從休眠中恢復(fù)的處理包含了兩個(gè)階段309和315,依照一些實(shí)施例的從休眠中恢復(fù)的處理也可以包括兩個(gè)以上的恢復(fù)階段。在這樣的場(chǎng)景中,每ー個(gè)恢復(fù)階段可以恢復(fù)和/或建立足以進(jìn)ー步恢復(fù)計(jì)算設(shè)備的資源。這種從休眠中遞增恢復(fù)的處理最終會(huì)導(dǎo)致完全恢復(fù)計(jì)算設(shè)備。在一些實(shí)施例中,完成從休眠中恢復(fù)的處理的恢復(fù)階段是在具有更豐富的資源集合的環(huán)境中實(shí)現(xiàn)的。舉例來說,該環(huán)境可以包括操作系統(tǒng)環(huán)境(例如圖I和2的操作系統(tǒng)環(huán)境116)。這種環(huán)境可以為多個(gè)處理器提供支持,其中所述處理器可以訪問從非易失存儲(chǔ)器傳送到適當(dāng)存儲(chǔ)介質(zhì)(例如圖2的共享緩存器206)的休眠信息。共享緩存器206可以包括能被參與在易失存儲(chǔ)器中恢復(fù)休眠信息的ー個(gè)或多個(gè)部分(例如保存在hiberfile 108的第二部分114)的內(nèi)容的多個(gè)處理器中的每ー個(gè)訪問的存儲(chǔ)位置。單個(gè)處理器(例如圖2的處理器202)可以從非易失存儲(chǔ)器中讀取休眠信息的第二部分,并且借助同步盤I/o操作來將該信息記錄到共享緩存器中。在單個(gè)處理器從非易失存儲(chǔ)器中讀取休眠信息的第二部分的同時(shí),其他處理器(例如圖2的處理器204)可以訪問和檢索記錄在共享緩存器中的休眠信息。為了有效使用存儲(chǔ)器資源,休眠信息可以采用壓縮形式保存在非易失存儲(chǔ)器中。由此,訪問和檢索記錄在共享緩存器中的信息的多個(gè)處理器可以解壓縮檢索到的信息,并且將解壓縮的信息移動(dòng)到易失存儲(chǔ)器。通過由多個(gè)處理器來從共享緩存器中檢索和解壓縮 休眠信息,可以提高重新創(chuàng)建計(jì)算設(shè)備的目標(biāo)狀態(tài)的速度。在從休眠中恢復(fù)的過程中,每ー個(gè)階段都可以建立用于另ー個(gè)階段的環(huán)境。例如,包含恢復(fù)計(jì)算設(shè)備操作系統(tǒng)核心的一部分的階段可以建立ー個(gè)具有更豐富的資源集合的環(huán)境,例如操作系統(tǒng)環(huán)境。這種環(huán)境可以包括對(duì)于多個(gè)處理器的支持。圖4示意性示出了計(jì)算設(shè)備100的操作系統(tǒng)環(huán)境116所支持的多個(gè)處理器的操作。舉例來說,方框402包括受核心級(jí)加載器122的一部分控制的處理。核心級(jí)恢復(fù)加載器122可以控制傳送來自休眠文件一部分的信息的處理。在這里示出的示例中,該部分包括hiberfile 108的部分114。在一些實(shí)施例中,方框402的處理可以由單個(gè)處理器執(zhí)行,例如計(jì)算設(shè)備(圖2)的多個(gè)處理器106中的處理器202。方框404和406中的姆一個(gè)都不出了由多個(gè)處理器106中的一個(gè)或多個(gè)其他處理器(例如圖2的處理器204)執(zhí)行的處理。在一些實(shí)施例中,方框404和406的處理可以與方框402的處理同時(shí)執(zhí)行。圖4所示的處理可以在任何適當(dāng)?shù)臅r(shí)間開始進(jìn)行。在其中ー個(gè)恢復(fù)階段期間,該處理可以作為從休眠中恢復(fù)的處理的一部分來發(fā)起。例如,它可以是在完成了所述恢復(fù)處理中恢復(fù)了足以完成所述恢復(fù)的操作系統(tǒng)資源的在先階段的時(shí)候發(fā)起的。圖4示出了方框402可以包括方框408,其中在方框408,處理器202可以讀取休眠信息的第二部分的分段。然后,在方框410,所述分段可以記錄在共享緩存器中(例如圖2的共享緩存器206)。接下來,在判定框412中可以確定是否還有要被傳送到共享緩存器的休眠信息可用。如果在判定框412確定休眠信息可用,則方框402的處理可以分支跳轉(zhuǎn)回到方框408,在那里可以從非易失存儲(chǔ)器中讀取休眠信息的另ー個(gè)分段。如果在判定框412確定沒有其他休眠信息可用,那么方框402的處理可以結(jié)束。處理器202可以借助同步輸入/輸出(I/O)操作來從非易失存儲(chǔ)器中讀取休眠信息的第二部分的分段。方框404包括由處理器204中的處理器執(zhí)行的處理。在方框414,該處理器可以訪問共享緩存器。接下來,在判定框416,該處理器可以確定在共享緩存器中是否有休眠信息的第二部分的一個(gè)或多個(gè)分段可用。當(dāng)在判定框416中確定在共享緩存器中有至少ー個(gè)分段可用時(shí),這表明借助方框402的處理在共享緩存器中記錄了休眠信息的至少一部分,處理器可以從共享緩存器中檢索分段。
然后,在方框420,檢索到的分段可被解壓縮。計(jì)算設(shè)備中的任何適當(dāng)?shù)慕M件都可以存儲(chǔ)由所述處理器運(yùn)行來解壓縮所述信息的計(jì)算機(jī)可執(zhí)行指令。適當(dāng)?shù)慕鈮嚎s算法可以是基于所使用的壓縮算法來選擇的,其中所使用的壓縮算法在與存儲(chǔ)了指示所使用壓縮的特性的參數(shù)值的休眠信息相關(guān)聯(lián)的元數(shù)據(jù)中被標(biāo)識(shí)。在方框422,解壓縮的信息可被傳送到操作存儲(chǔ)器。所述信息被送抵的易失存儲(chǔ)器中的位置可以作為元數(shù)據(jù)與休眠文件中的信息記錄在一起。當(dāng)確定所述信息在共享緩存器中不可用時(shí),處理器可以返回到方框414,在那里所述處理器可以再次訪問共享緩存器。這種在其中處理器可以不斷檢查休眠信息的第二部分的分段在共享文件中的存在性的操作可以稱為忙等待。如圖4中的箭頭421所示,方框402和404的處理可以同時(shí)執(zhí)行。在這種實(shí)施例中可以使用某種信令機(jī)制來仲裁由哪ー個(gè)處理器處理共享緩存器中的每ー個(gè)分段。在一些實(shí)施例中,可以使用用于多處理器計(jì)算機(jī)的操 作系統(tǒng)所支持的上下文切換機(jī)制。然而在圖示實(shí)施例中,圖4示出的處理是在已經(jīng)恢復(fù)了操作系統(tǒng)的任何部分的環(huán)境中進(jìn)行的。相應(yīng)地,上下文切換是不可用的,可以使用更簡(jiǎn)單的系統(tǒng),例如信號(hào)量(s emaphore )。方框406的處理包括與方框404的相應(yīng)方框414、416、418、420和421執(zhí)行相同操作的方框415、417、419、421和423。來自處理器204且不同于執(zhí)行方框404的處理的處理器的另ー個(gè)處理器可以執(zhí)行方框406的處理。方框406是為了出于例證目的描述的,其例證的是多個(gè)處理器可以如箭頭425顯示的那樣同時(shí)執(zhí)行對(duì)共享文件的訪問,并且如果信息在共享文件中是可用的,則讀取和解壓縮所述信息,然后將其移動(dòng)回到操作存儲(chǔ)器。應(yīng)該意識(shí)到的是,在從休眠中恢復(fù)的期間不同的處理可以由處理器204作為恢復(fù)計(jì)算設(shè)備目標(biāo)狀態(tài)的處理的一部分來執(zhí)行。圖5示出了根據(jù)本發(fā)明一些實(shí)施例的計(jì)算設(shè)備進(jìn)入休眠模式的處理500。處理500可以在任何適當(dāng)?shù)臅r(shí)間開始進(jìn)行。例如,該處理可以在接收到指令計(jì)算設(shè)備休眠的適當(dāng)用戶輸入的時(shí)候開始。雖然在圖5中沒有顯示,但是包括本領(lǐng)域已知類型的處理在內(nèi)的不同或附加的處理都是可以執(zhí)行的。例如,在寫休眠信息之前可以收集每ー個(gè)處理器的狀態(tài)(例如堆棧指針、寄存器計(jì)數(shù)器等等),并且該狀態(tài)可以作為用于要在第一階段中恢復(fù)的休眠信息的元數(shù)據(jù)的一部分來保存。在一些實(shí)施例中,為了分多個(gè)階段來實(shí)現(xiàn)從休眠中恢復(fù)的處理,來自操作存儲(chǔ)器且將在每ー個(gè)恢復(fù)階段被恢復(fù)的信息可以被獨(dú)立記錄。因此,可以將所述休眠信息分區(qū),從而使得為每ー個(gè)先前階段記錄的信息在被移動(dòng)回到操作存儲(chǔ)器的時(shí)候,建立用于后續(xù)階段的環(huán)境。無(wú)論以何種方式發(fā)起處理500,在方框502,該處理都可以確定易失存儲(chǔ)器中的第一信息以便記錄在諸如休眠文件(例如圖I的hiberfile 108)之類的休眠信息中的第一部分中。舉例來說,這種第一信息可以是易失存儲(chǔ)器102中的狀態(tài)信息120 (圖I)。第一信息可以采用任何適當(dāng)?shù)姆绞酱_定,并且可以包括將會(huì)在從休眠中恢復(fù)的處理的第一恢復(fù)階段中恢復(fù)的信息。選擇該信息,從而使得所述信息在恢復(fù)過程中被移動(dòng)回到操作存儲(chǔ)器時(shí)建立用于后續(xù)恢復(fù)階段的環(huán)境。在一些實(shí)施例中,計(jì)算設(shè)備休眠時(shí)的狀態(tài)可以用于確定為每ー個(gè)恢復(fù)階段記錄什么信息。在一些實(shí)施例中,通過用關(guān)于要被恢復(fù)的操作系統(tǒng)的組件集合的信息來編程休眠實(shí)用工具132,以便執(zhí)行所述恢復(fù)處理的第二階段。在該場(chǎng)景中,休眠實(shí)用工具132可以通過識(shí)別分配給這些組件或是這些組件使用中的任何活動(dòng)存儲(chǔ)器頁(yè)面來識(shí)別第一部分。然而任何適當(dāng)?shù)募夹g(shù)都可以用于識(shí)別第一部分。識(shí)別所述內(nèi)容的信息可以作為元數(shù)據(jù)來記錄,例如記錄在休眠文件108的報(bào)頭110中。在一些實(shí)施例中,恢復(fù)處理的第一階段可以建立用于第二階段的環(huán)境。在結(jié)合圖I和2示出的示例中,第二階段可以在支持多個(gè)處理器的操作系統(tǒng)環(huán)境116中運(yùn)行。由此,第一恢復(fù)階段可以恢復(fù)足夠數(shù)量的處理器狀態(tài),以使使得所述處理器能在第二階段期間讀取和解壓縮休眠信息。在一些實(shí)施例中,休眠信息的第一部分中的第一信息可以采用壓縮方式保存。由此,接下來在方框504,在方框502中確定的第一信息可以使用第一壓縮算法來壓縮。如結(jié)合圖6A和6B論述的那樣,用于壓縮第一信息的壓縮算法可以是基于要被用于訪問第一部分來將第一信息存入操作存儲(chǔ)器的計(jì)算設(shè)備的至少ー個(gè)組件的能力而動(dòng)態(tài)選擇的。與休眠信息一起保存的元數(shù)據(jù)可以包括用于指示第一壓縮算法的特性的參數(shù)值。
應(yīng)該意識(shí)到的是,在一些實(shí)施例中,第一信息可以不必以壓縮形式保存在休眠信息的第一部分中。在這樣的實(shí)施例中,方框504的處理可被省略,并且處理500可以將未壓縮的第一信息保存在休眠信息的第一部分中。在方框506,經(jīng)過壓縮的第一信息可以記錄在非易失存儲(chǔ)器中的hiberfile的第一部分中。然后,處理500可以繼續(xù)進(jìn)行至方框508,在那里該處理可以確定易失存儲(chǔ)器中的第二信息以便記錄在休眠信息的第二部分中。第二信息的示例包括易失存儲(chǔ)器102中的狀態(tài)信息21 (圖I)。記錄在休眠信息的第二部分中的第二信息可以是與記錄在休眠信息的第一部分中的第一信息分開記錄的。在第二恢復(fù)階段,記錄在休眠信息的第二部分中的第二信息將會(huì)使用在第一階段中恢復(fù)的信息恢復(fù)。在這個(gè)示例中,第一階段可以通過恢復(fù)操作系統(tǒng)核心的一部分來部分恢復(fù)計(jì)算設(shè)備。之后,在第二階段中可以使用操作系統(tǒng)核心的已恢復(fù)部分在具有更豐富的資源集合的操作系統(tǒng)環(huán)境中恢復(fù)計(jì)算設(shè)備的硬件資源和目標(biāo)狀態(tài)。在方框508,第二信息可以是用任何適當(dāng)?shù)姆绞酱_定的,因?yàn)楸景l(fā)明的實(shí)施例在這個(gè)方面是不受限制的。舉例來說,第二信息可以包括計(jì)算設(shè)備在休眠時(shí)的狀態(tài)。接下來,在方框510,第二信息可被壓縮。如結(jié)合圖6A和6B所述,適當(dāng)?shù)牡诙嚎s算法是可以動(dòng)態(tài)選擇的。所述第二壓縮算法可以不同于用以壓縮保存在休眠信息的第一部分中的第一信息的第一壓縮算法。與休眠信息一起保存的元數(shù)據(jù)可以包括指示第二壓縮算法的特性的參數(shù)值。在方框512,經(jīng)過壓縮的第二信息可被記錄在hiberfile的第二部分。在將休眠信息記錄到非易失存儲(chǔ)器時(shí),計(jì)算設(shè)備的硬件可以斷電,由此,所述硬件在計(jì)算設(shè)備休眠的時(shí)候不會(huì)消耗電力。然后,處理500可以結(jié)束。如上所述,ー些或所有休眠信息可以采用壓縮形式記錄在計(jì)算設(shè)備的非易失存儲(chǔ)器中。壓縮休眠信息可以減少?gòu)男菝吣J街谢謴?fù)計(jì)算設(shè)備所耗費(fèi)的時(shí)間。但是,對(duì)于恢復(fù)處理速度的影響有可能取決于相對(duì)于計(jì)算時(shí)間的存儲(chǔ)器訪問時(shí)間。相應(yīng)地,在非易失存儲(chǔ)器很慢或是具有強(qiáng)大的處理能力可用的時(shí)候,壓縮處理將會(huì)是非常有用的。
在一些實(shí)施例中,適當(dāng)?shù)膲嚎s算法可被動(dòng)態(tài)選擇,以便壓縮休眠信息。壓縮算法可以是基于多個(gè)不同標(biāo)準(zhǔn)選擇的,例如計(jì)算設(shè)備的處理器能力和盤I/o。舉個(gè)例子,壓縮算法可以是在計(jì)算設(shè)備中基于處理器的數(shù)量和處理速度以及基于盤的I/o速度而被選擇的。
在一些實(shí)施例中,在各個(gè)恢復(fù)階段中被移動(dòng)回到操作存儲(chǔ)器的休眠信息的ー個(gè)以上的部分可以采用壓縮形式來記錄。在這樣的情形中,不同的壓縮算法可被選擇,以便壓縮保存在休眠信息的不同部分的信息。由于不同的恢復(fù)階段可以在不同的環(huán)境中執(zhí)行,因此,在不同的階段可以使用計(jì)算設(shè)備的不同資源。由此,可以動(dòng)態(tài)選擇壓縮算法,以便基于計(jì)算設(shè)備在各個(gè)恢復(fù)階段可用的資源來壓縮保存在休眠信息的區(qū)段中的信息。壓縮算法可以是基于在有更多處理能力可用時(shí)使用更大壓縮度的標(biāo)準(zhǔn)來選擇的。在針對(duì)保存了休眠信息的盤或其他非易失存儲(chǔ)器的訪問時(shí)間較慢的時(shí)候,該標(biāo)準(zhǔn)也可以偏向于更大的壓縮度。圖6A和6B示出了兩個(gè)根據(jù)ー些實(shí)施例來動(dòng)態(tài)選擇壓縮算法的示例。壓縮算法可以是在休眠時(shí)以及在當(dāng)計(jì)算設(shè)備的適當(dāng)組件(例如圖I和2的休眠實(shí)用工具132)確定將什么信息作為休眠信息加以保存、如何劃分休眠信息以及在從休眠中恢復(fù)的每ー個(gè)階段有什么計(jì)算設(shè)備可用的時(shí)候選擇的。圖6A顯示了在處理600的方框602中,為了選擇壓縮算法,可以首先評(píng)估計(jì)算設(shè)備中的處理器的能力。接下來,在判定框604中可以確定處理器的數(shù)量和速度是否超出某個(gè)閾值。該閾值可以是采用任何適當(dāng)?shù)姆绞酱_定的。例如,操作系統(tǒng)可以訪問硬件信息來確定計(jì)算設(shè)備中需要的怎樣的處理能力。應(yīng)該意識(shí)到的是,在方框604中僅僅通過舉例顯示了評(píng)估處理器的數(shù)量和速度。任何適當(dāng)?shù)奶幚砥餍阅芴匦远际强梢栽u(píng)估的,因?yàn)閷?shí)施例在這個(gè)方面是不受限制的。當(dāng)在判定框604中確定處理器的數(shù)量和速度處于或者超出閾值時(shí),處理600可以分支跳轉(zhuǎn)到方框606,在那里可以選擇具有較高壓縮度的壓縮算法。作為替換,當(dāng)在判定框604中確定處理器的速度和數(shù)量低于閾值時(shí),處理600可以分支跳轉(zhuǎn)到方框608,在那里可以選擇具有較低壓縮度的壓縮算法。圖6B示出了根據(jù)ー些實(shí)施例來動(dòng)態(tài)選擇壓縮算法的技術(shù)的另ー個(gè)示例。在這個(gè)示例中,壓縮算法可以是在計(jì)算設(shè)備中基于處理器的能力(例如數(shù)量和處理速度)以及基于盤的I/o速度而被選擇的。如圖6B所示,處理700可以始于可以對(duì)盤I/O速度以及諸如處理器數(shù)量和速度之類的處理器能力或是其他任何適當(dāng)?shù)奶幚砥魈匦赃M(jìn)行評(píng)估的方框702。接下來,當(dāng)在判定框704中確定盤速度I/O快于處理器時(shí),處理700可以分支跳轉(zhuǎn)到可以選擇具有較高壓縮度的壓縮算法的方框706。如果在判定框704確定盤速度I/O不快于處理器,那么處理700可以分支跳轉(zhuǎn)到可以選擇具有較低壓縮度的壓縮算法的方框708。在一些實(shí)施例中,與休眠信息一起保存的元數(shù)據(jù)可以包括指示所使用的壓縮的特性的參數(shù)值。由此,在從休眠中恢復(fù)的過程中,恰當(dāng)?shù)慕鈮嚎s算法可以是基于這些參數(shù)值而被選擇的。由于可以為休眠信息的各部分使用不同的壓縮算法,因此,在恢復(fù)階段可以使用各種不同的解壓縮算法來解壓縮信息。應(yīng)該意識(shí)到的是,壓縮算法可以是基于任何適當(dāng)?shù)臉?biāo)準(zhǔn)選擇的,因?yàn)楸景l(fā)明的實(shí)施例在這個(gè)方面是不受限制的。例如,可以考慮要壓縮的信息量。應(yīng)該意識(shí)到的是,圖6A和6B示出了用于選擇壓縮算法的簡(jiǎn)單方法。在每ー種情況中,選擇都是基于單個(gè)標(biāo)準(zhǔn)而在兩個(gè)壓縮算法之間做出的。在其他實(shí)施例中,可以基于同時(shí)考慮的多個(gè)標(biāo)準(zhǔn)在兩個(gè)以上的算法之間做出選擇。例如,對(duì)于計(jì)算設(shè)備被配置成使用的每ー種算法來說,在給出了檢測(cè)到的計(jì)算設(shè)備的硬件的情況下,恢復(fù)時(shí)間或恢復(fù)速率都是可以計(jì)算的??梢赃x擇具有最快時(shí)間或速率的算法。圖7示出了其上可以實(shí)現(xiàn)本發(fā)明的適當(dāng)計(jì)算系統(tǒng)環(huán)境800的示例。計(jì)算系統(tǒng)環(huán)境800僅僅是適當(dāng)?shù)挠?jì)算環(huán)境的ー個(gè)示例,其并不打算暗示任何對(duì)本發(fā)明的使用或功能的范圍的限制。計(jì)算環(huán)境800也不應(yīng)該被解釋成具有與在例示操作環(huán)境800中示出的任ー組件或組件組合相關(guān)聯(lián)的任何依賴性或要求。本發(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)類電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(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ǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)的分布式計(jì)算環(huán)境中實(shí)施。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)媒體上,其中包括存儲(chǔ)器存儲(chǔ)設(shè)備。參考圖7,用于實(shí)現(xiàn)本發(fā)明的例示系統(tǒng)包括計(jì)算機(jī)810形式的通用計(jì)算設(shè)備。計(jì)算機(jī)810的組件可以包括但不局限于處理単元820、系統(tǒng)存儲(chǔ)器830以及將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種不同系統(tǒng)組件耦合到處理單元820的系統(tǒng)總線821。系統(tǒng)總線821可以是若干種總線結(jié)構(gòu)中的任何ー種,其中包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外設(shè)總線以及使用了多種總線架構(gòu)中的任何一種的本地總線。作為示例而不是限制,這種架構(gòu)包括エ業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)總線、微通道架構(gòu)(MCA)總線、增強(qiáng)型ISA (EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)本地總線以及也被稱為夾層(Mezzanine)總線的外設(shè)組件互連(PCI)總線。計(jì)算機(jī)810通常包括了多種計(jì)算機(jī)可讀媒體。計(jì)算機(jī)可讀媒體可以是能被計(jì)算機(jī)810訪問的任何可用媒體,并且同時(shí)包括易失和非易失媒體,可移除和不可移除媒體。作為示例而不是限制,計(jì)算機(jī)可讀媒體可以包括存儲(chǔ)媒體和通信媒體。計(jì)算機(jī)存儲(chǔ)媒體同時(shí)包括用于存儲(chǔ)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)之類的信息的通過任何方法或技術(shù)實(shí)現(xiàn)的易失和非易失、可移除和不可移除媒體。計(jì)算存儲(chǔ)媒體包括但不局限于RAM、R0M、EEPR0M、閃存或其他存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多用途盤(DVD)或其他光盤存儲(chǔ)器、磁帶盒、磁帶、磁盤存儲(chǔ)器或其他磁存儲(chǔ)設(shè)備、或是其他任何可以用于存儲(chǔ)期望信息井能被計(jì)算機(jī)810訪問的介質(zhì)。通信媒體通常包含諸如載波或其他傳輸機(jī)制之類的已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并且包含了任何信息遞送媒體。術(shù)語(yǔ)“調(diào)制數(shù)據(jù)信號(hào)”指的是這樣ー種信號(hào),其中該信號(hào)的ー個(gè)或多個(gè)特性以ー種在信號(hào)中編碼信息的方式被設(shè)置或改變。作為示例而不是限制,通信媒體包括有線網(wǎng)絡(luò)或直接線路連接之類的有線媒體,以及無(wú)線媒體,例如聲學(xué)、RF、紅外及其他無(wú)線媒體。上述各項(xiàng)的任何組合同樣應(yīng)該包含在計(jì)算機(jī)可讀媒體的范圍以內(nèi)。
系統(tǒng)存儲(chǔ)器830包括采用易失和/或非易失存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)媒體,例如只讀存儲(chǔ)器(ROM) 831和隨機(jī)存取存儲(chǔ)器(RAM) 832?;据斎?輸出系統(tǒng)833 (BIOS)包含例如在啟動(dòng)過程中幫助在計(jì)算機(jī)810內(nèi)部的元件之間傳送信息的基本例程,該系統(tǒng)通常被存儲(chǔ)在ROM 831中。RAM 832通常包括可以由處理單元820直接訪問和/或即時(shí)操作的數(shù)據(jù)和/或程序模塊。作為示例而不是限制,圖7示出了操作系統(tǒng)834、應(yīng)用程序835、其他程序模塊836以及程序數(shù)據(jù)837。計(jì)算機(jī)810還可以包括其他的可移除/不可移除、易失/非易失計(jì)算機(jī)存儲(chǔ)媒體。僅僅作為示例,圖7示出了讀取或?qū)懭氩豢梢瞥姆且资Т琶襟w的硬盤驅(qū)動(dòng)器840,讀取或?qū)懭肟梢瞥姆且资Т疟P852的磁盤驅(qū)動(dòng)器851,以及讀取或?qū)懭擘?ROM或其他光媒體之類的可移除的非易失光盤856的光盤驅(qū)動(dòng)器855。硬盤驅(qū)動(dòng)器840可以被實(shí)現(xiàn)為包含了一個(gè)或多個(gè)能夠讀寫磁媒體的磁頭的旋轉(zhuǎn)磁介質(zhì)。能在例示操作環(huán)境中使用的其他的可移除/不可移除、易失/非易失計(jì)算機(jī)存儲(chǔ)媒體包括但不局限于磁帶盒、閃存卡、數(shù)字多用途盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器841通常經(jīng)由接ロ 840之類的不可移除存儲(chǔ)器接ロ連接到系統(tǒng)總線821,并且磁盤驅(qū)動(dòng)器851和光盤驅(qū)動(dòng)器855通常通過接ロ 850 之類的可移除存儲(chǔ)器接ロ連接到系統(tǒng)總線821。在上文中論述并在圖7中示出的驅(qū)動(dòng)器以及與之關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)媒體為計(jì)算機(jī)810提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及其他數(shù)據(jù)的存儲(chǔ)。例如在圖7中,硬盤驅(qū)動(dòng)器841被例證成存儲(chǔ)操作系統(tǒng)844、應(yīng)用程序845、其他程序模塊846以及程序數(shù)據(jù)847。應(yīng)該指出的是,這些組件與操作系統(tǒng)834、應(yīng)用程序835、其他程序模塊836以及程序數(shù)據(jù)937可以是相同或不同的。在這里給予操作系844、應(yīng)用程序845、其他程序模塊846以及程序數(shù)據(jù)847不同的數(shù)字來例證它們至少是不同拷貝。用戶可以通過輸入設(shè)備將命令和信息輸入計(jì)算機(jī)810,所述輸入設(shè)備例如是鍵盤862和通常被稱為鼠標(biāo)、軌跡球或觸摸板的指示設(shè)備861。其他輸入設(shè)備(未顯示)可以包括麥克風(fēng)、搖桿、游戲板、碟式衛(wèi)星天線、掃描儀等等。這些和其他輸入設(shè)備通常通過與系統(tǒng)總線相連的用戶輸入接ロ 860連接到處理単元820,但是也可以通過其他接口和總線結(jié)構(gòu)來連接,例如并行端ロ、游戲端ロ或通用串行總線(USB)。監(jiān)視器891或其他類型的顯示設(shè)備也經(jīng)由諸如視頻接ロ 890之類的接ロ連接到系統(tǒng)總線821。除了監(jiān)視器之外,計(jì)算機(jī)還可以包括可以通過輸出外設(shè)接ロ 895連接的其他外設(shè)輸出設(shè)備,例如揚(yáng)聲器897和打印機(jī)896。計(jì)算機(jī)810可以使用與諸如遠(yuǎn)程計(jì)算機(jī)880之類的ー個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)相連的邏輯連接而在聯(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),并且通常包括在上文中相對(duì)于計(jì)算機(jī)810描述的眾多或所有元件,但在圖7中只示出了存儲(chǔ)器存儲(chǔ)設(shè)備881。圖7描述的邏輯連接包括局域網(wǎng)(LAN) 871和廣域網(wǎng)(WAN) 873,但是也可以包括其他網(wǎng)絡(luò)。這些聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)級(jí)計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)以及因特網(wǎng)中是很普通的。當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)810通過網(wǎng)絡(luò)接ロ或適配器870連接到LAN871。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用吋,計(jì)算機(jī)810通常包括調(diào)制解調(diào)器872或是用于在因特網(wǎng)之類的WAN 873上建立通信的其他裝置。調(diào)制解調(diào)器872可以處于內(nèi)部或外部,它可以經(jīng)由用戶輸入接ロ 860或其他恰當(dāng)機(jī)制連接到系統(tǒng)總線821。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī)810描述的程序模塊或是其某些部分可以保存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而不是限制,圖7示出了駐留在存儲(chǔ)器設(shè)備881上的遠(yuǎn)程應(yīng)用程序885。應(yīng)該意識(shí)到的是,所顯示的網(wǎng)絡(luò)連接是例示性的,用于在計(jì)算機(jī)之間建立通信鏈路的其他裝置也是可以使用的。
在這樣描述了本發(fā)明至少ー個(gè)實(shí)施例的若干個(gè)方面之后,可以意識(shí)到的是,對(duì)本領(lǐng)域技術(shù)人員來說,不同的替換、修改和改進(jìn)都是很容易想到的。例如,所描述的是根據(jù)ー些實(shí)施例的計(jì)算設(shè)備可以包括多個(gè)處理器。由于恢復(fù)處理可以在支持多個(gè)處理器的操作系統(tǒng)環(huán)境中完成,因此,通過在操作系統(tǒng)環(huán)境中進(jìn)行的恢復(fù)階段期間使用這些處理器,可以提高計(jì)算設(shè)備從休眠中恢復(fù)的速度。然而應(yīng)該意識(shí)到,計(jì)算設(shè)備可以包括單個(gè)處理器。即使在這種場(chǎng)景中,使用異步訪問也可以加速恢復(fù),這是因?yàn)樵贗/o操作處于未決狀態(tài)等待從非易失存儲(chǔ)器中讀取休眠信息的另ー個(gè)分段的時(shí)候,處理器可以基于休眠信息分段而在某個(gè)間隔中執(zhí)行處理以恢復(fù)計(jì)算設(shè)備的狀態(tài)。任何適當(dāng)?shù)募夹g(shù)都可以用于確定要在休眠信息的每ー個(gè)部分中存儲(chǔ)哪些信息,因?yàn)楸景l(fā)明的實(shí)施例在這個(gè)方面并不受限制。此外,這些實(shí)施例并不受限于用以確定同時(shí)壓縮休眠信息的第一和第二部分還是只壓縮其中一部分的方式。壓縮算法和相應(yīng)的解壓縮技術(shù)可以是以任何適當(dāng)?shù)姆绞竭x擇的。 還應(yīng)該意識(shí)到的是,雖然在這里描述了從休眠中恢復(fù)的兩個(gè)階段,但是所述恢復(fù)可以借助任何適當(dāng)數(shù)量的階段進(jìn)行,因?yàn)楸景l(fā)明在這個(gè)方面是不受限制的。每ー個(gè)階段都可以將計(jì)算設(shè)備恢復(fù)到可以恢復(fù)下一個(gè)階段的點(diǎn)上。所述恢復(fù)處理可以采用任何適當(dāng)?shù)姆绞椒殖呻A段。這種替換、修改和改進(jìn)都預(yù)定是本公開的一部分,并且預(yù)定將處于本發(fā)明的精神和范圍以內(nèi)。相應(yīng)地,之前的描述和附圖都僅僅是作為示例的。本發(fā)明的上述實(shí)施例可以采用多種方式中的任何ー種來實(shí)現(xiàn)。例如,這些實(shí)施例可以使用硬件、軟件或是其組合來實(shí)現(xiàn)。當(dāng)在軟件中實(shí)現(xiàn)時(shí),軟件代碼可以在任何適當(dāng)?shù)奶幚砥骰蛱幚砥骷仙线\(yùn)行,無(wú)論所述處理器是在單個(gè)計(jì)算機(jī)中提供還是分布在多個(gè)計(jì)算機(jī)中。此類處理器可以作為集成電路來實(shí)現(xiàn),其中一個(gè)或多個(gè)處理器處于集成電路組件中。然而,處理器也可以使用任何適當(dāng)格式的電路來實(shí)現(xiàn)。此外還應(yīng)該意識(shí)到,計(jì)算機(jī)可以采用多種形式來實(shí)現(xiàn),例如安裝在機(jī)架上的計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上計(jì)算機(jī)或平板計(jì)算機(jī)。此外,計(jì)算機(jī)可以被嵌入在通常不被視為計(jì)算機(jī)但卻具有適當(dāng)處理能力的設(shè)備中,包括個(gè)人數(shù)字助理(PDA)、智能電話或是其他任何適當(dāng)?shù)谋銛y或固定電子設(shè)備。此外,計(jì)算機(jī)還可以具有一個(gè)或多個(gè)輸入和輸出設(shè)備。這些設(shè)備尤其可以用于引入一個(gè)用戶接ロ??捎糜谔峁┯脩艚鹰淼妮敵鲈O(shè)備的示例包括用于視覺呈現(xiàn)輸出的打印機(jī)或顯示屏,或是用于音頻呈現(xiàn)輸出的揚(yáng)聲器或其他聲音生成設(shè)備??捎糜谟脩艚鹰淼妮斎朐O(shè)備的示例包括鍵盤和指示設(shè)備,例如鼠標(biāo)、觸摸板和數(shù)字化平板。另舉一例,計(jì)算機(jī)可以通過語(yǔ)音識(shí)別或其他音頻格式來接收輸入信息。此類計(jì)算機(jī)可以由ー個(gè)或多個(gè)網(wǎng)絡(luò)采用任何適當(dāng)?shù)男问交ミB,其中包括局域網(wǎng)或廣域網(wǎng),例如企業(yè)網(wǎng)或因特網(wǎng)。此類網(wǎng)絡(luò)可以基于任何適當(dāng)?shù)募夹g(shù),并且可以依照任何適當(dāng)?shù)膮f(xié)議操作,以及可以包括無(wú)線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或光纖網(wǎng)絡(luò)。此外,這里概述的各種不同方法或處理可以編碼成能在使用了多種操作系統(tǒng)或平臺(tái)中任何一個(gè)的ー個(gè)或多個(gè)處理器上運(yùn)行的軟件。另外,此類軟件可以采用多種適當(dāng)?shù)木幊陶Z(yǔ)言和/或編程或腳本工具撰寫,并且還可以編譯成是在主機(jī)或虛擬機(jī)上運(yùn)行的可執(zhí)行機(jī)器語(yǔ)言代碼或中間代碼。
在這個(gè)方面,本發(fā)明可以作為使用一種或多種程序編碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(或多個(gè)計(jì)算機(jī)可讀媒體)(例如計(jì)算機(jī)存儲(chǔ)器,ー個(gè)或多個(gè)軟盤,緊湊型碟片,光盤,數(shù)字視頻盤(DVD),磁帶,閃速存儲(chǔ)器,現(xiàn)場(chǎng)可編程門陣列或其他半導(dǎo)體設(shè)備中的電路配置,或其他非瞬態(tài)、有形計(jì)算機(jī)存儲(chǔ)介質(zhì))來實(shí)現(xiàn),其中當(dāng)在一個(gè)或多個(gè)計(jì)算機(jī)或其他處理器上運(yùn)行所述程序時(shí),所述程序?qū)?huì)執(zhí)行實(shí)現(xiàn)上述本發(fā)明的各種不同實(shí)施例的方法。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)或媒體是可運(yùn)輸?shù)?,由此,其上保存的一個(gè)或多個(gè)程序可被加載到ー個(gè)或多個(gè)不同計(jì)算機(jī)或其他處理器上,以便實(shí)現(xiàn)如上所述的本發(fā)明的各個(gè)不同方面。這里使用的術(shù)語(yǔ)“非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”僅僅包括可被視為制造產(chǎn)品(即制品)或機(jī)器的計(jì)算機(jī)可讀介質(zhì)。作為替換或補(bǔ)充,本發(fā)明可以作為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)之外的計(jì)算機(jī)可讀介質(zhì)來實(shí)施,例如傳播信號(hào)。這里使用的術(shù)語(yǔ)“程序”或“軟件”在一般意義上被用來指可以用于對(duì)計(jì)算機(jī)或其他處理器進(jìn)行編程,以便實(shí)現(xiàn)如上所述的本發(fā)明的各個(gè)不同方面的任何類型的計(jì)算機(jī)代碼或計(jì)算機(jī)可執(zhí)行指令集合。此外還應(yīng)該意識(shí)到,根據(jù)本發(fā)明的ー個(gè)方面,在運(yùn)行時(shí)執(zhí)行本發(fā)明方法的一個(gè)或多個(gè)計(jì)算機(jī)程序不必駐留在單個(gè)計(jì)算機(jī)或處理器上,而是可以采用模塊化的形式分布在多個(gè)不同的計(jì)算機(jī)或處理器之中,以便實(shí)現(xiàn)本發(fā)明的各個(gè)不同方面。 計(jì)算機(jī)可執(zhí)行指令可以采用多種形式由一個(gè)或多個(gè)計(jì)算機(jī)或其他設(shè)備運(yùn)行,例如程序模塊的形式。一般來說,程序模塊包括執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,在各種不同的實(shí)施例中可以根據(jù)需要來組合或分布程序模塊的功能。此外,數(shù)據(jù)結(jié)構(gòu)可以采用任何適當(dāng)?shù)男问酱嫒胗?jì)算機(jī)可讀媒體。為了易于例證,數(shù)據(jù)結(jié)構(gòu)可被顯示成具有通過在數(shù)據(jù)結(jié)構(gòu)中的位置相關(guān)聯(lián)的字段。這種關(guān)聯(lián)同樣可以通過為字段的存儲(chǔ)分配計(jì)算機(jī)可讀介質(zhì)中傳遞字段之間關(guān)系的位置來實(shí)現(xiàn)。但是,任何適當(dāng)?shù)臋C(jī)制均可用于在數(shù)據(jù)結(jié)構(gòu)的字段中的信息之間建立關(guān)聯(lián),這其中包括通過使用在數(shù)據(jù)元素之間建立關(guān)聯(lián)的指針、標(biāo)簽或其他機(jī)制。本發(fā)明的各個(gè)不同方面既可以単獨(dú)使用,也可以組合使用,還可以采用上述實(shí)施例中沒有具體論述的多種安排使用,由此,本發(fā)明各個(gè)方面的應(yīng)用并不僅限于如上所述或是在附圖中例證的組件的細(xì)節(jié)和安排。例如,在一個(gè)實(shí)施例中描述的方面可以采用任何方式與其他實(shí)施例中的方面相結(jié)合。此外,本發(fā)明可以作為方法來實(shí)現(xiàn),并且在這里已經(jīng)提供了關(guān)于所述方法的ー個(gè)示例。作為方法一部分執(zhí)行的操作可以采用任何適當(dāng)?shù)姆绞脚判?。相?yīng)地,在這里可以構(gòu)造以與所例證的順序不同的順序來執(zhí)行操作的實(shí)施例,其中所述實(shí)施例可以包括同時(shí)執(zhí)行某些操作,即使這些操作在說明性實(shí)施例中被顯示成是連續(xù)操作。在權(quán)利要求中使用了“第一”、“第二”、“第三”等順序術(shù)語(yǔ)來修飾權(quán)利要求要素其本身并不意味著一個(gè)權(quán)利要求要素相對(duì)于另ー個(gè)要素的任何優(yōu)先級(jí)、優(yōu)先權(quán)、順序或是執(zhí)行方法操作的時(shí)間順序,而是僅僅用作標(biāo)簽以便將具有某個(gè)名稱的權(quán)利要求要素與另ー個(gè)具有相同名稱(如果沒有使用順序術(shù)語(yǔ))的要素區(qū)分開來,以便區(qū)分所述權(quán)利要求元素。此外,這里使用的措辭和術(shù)語(yǔ)是用于描述目的地的,而不應(yīng)該將其視為限制。這里使用的“包括”、“包含”或者“具有” “含有”、“涉及”及其不同變體意味著包含了其后列舉的項(xiàng)目及其等價(jià)物和附加項(xiàng)目。
權(quán)利要求
1.一種操作包含至少一個(gè)處理器(106)的計(jì)算設(shè)備的方法,該方法包括 通過從非易失存儲(chǔ)器中檢索(306)第一休眠信息來恢復(fù)(308)計(jì)算設(shè)備的操作系統(tǒng)的一部分,從休眠模式中部分恢復(fù)(309)計(jì)算設(shè)備;以及 使用(310)操作系統(tǒng)的已恢復(fù)部分來從非易失存儲(chǔ)器中檢索(312)第二信息,以便恢復(fù)(314,315)計(jì)算設(shè)備在進(jìn)入休眠模式時(shí)的狀態(tài)。
2.權(quán)利要求I的方法,還包括以壓縮形式將第二休眠信息保存(510,512)在非易失存儲(chǔ)器中。
3.權(quán)利要求2的方法,其中 恢復(fù)(309)計(jì)算設(shè)備的狀態(tài)包括從非易失存儲(chǔ)器中讀取(306)經(jīng)過壓縮的第二休眠信息的第一部分,以及將經(jīng)過壓縮的第二休眠信息的第一部分記錄(308)到緩存器中;以及 當(dāng)在緩存器中記錄經(jīng)過壓縮的第二休眠信息的第一部分時(shí),從緩存器中檢索(418)第二壓縮休眠信息的第一部分,以及在從非易失存儲(chǔ)器中讀取(312)經(jīng)過壓縮的第二休眠信息的第二部分的同時(shí),解壓縮(420)所述第一部分。
4.權(quán)利要求3的方法,其中 計(jì)算設(shè)備至少包括第一處理器和第二處理器; 從緩存器中檢索和解壓縮第一部分的處理是由第一處理器執(zhí)行的;以及 從非易失存儲(chǔ)器中讀取第二部分的處理是由第二處理器執(zhí)行的。
5.權(quán)利要求I的方法,其中 部分恢復(fù)計(jì)算設(shè)備包括在計(jì)算設(shè)備的預(yù)操作系統(tǒng)環(huán)境中運(yùn)行恢復(fù)加載器;以及 所述操作系統(tǒng)的所述部分包括計(jì)算設(shè)備的操作系統(tǒng)中的核心加載器。
6.一種系統(tǒng),包括 易失存儲(chǔ)介質(zhì)(102); 包含休眠信息(108)的非易失存儲(chǔ)介質(zhì)(104),所述休眠信息包括 第一部分(112); 第二部分(114),以及 識(shí)別第一部分和第二部分的報(bào)頭信息(110);以及 固件(130),包括 在被運(yùn)行時(shí)實(shí)現(xiàn)第一‘陜復(fù)加載器以便基于第一部分將信息保存在易失存儲(chǔ)介質(zhì)中的計(jì)算機(jī)可執(zhí)行指令(128); 其中第一部分包括計(jì)算機(jī)可執(zhí)行指令的表示,所述指令在被運(yùn)行時(shí)實(shí)現(xiàn)第二恢復(fù)加載器,以便基于第二部分來將信息保存在易失存儲(chǔ)介質(zhì)中。
7.權(quán)利要求6的系統(tǒng),其中 第二部分是以壓縮形式保存在非易失存儲(chǔ)介質(zhì)中的。
8.權(quán)利要求7的系統(tǒng),還包括多個(gè)處理器(106)。
9.權(quán)利要求8的系統(tǒng),其中第二恢復(fù)加載器恢復(fù)系統(tǒng)在休眠時(shí)的狀態(tài),所述恢復(fù)包括,利用多個(gè)處理器 由多個(gè)處理器中的第一處理器從非易失存儲(chǔ)介質(zhì)中讀取經(jīng)過壓縮的第二部分的分段,以及將經(jīng)過壓縮的第二部分的分段記錄在緩存器中;以及從緩存器中檢索第二部分的分段以及解壓縮所述經(jīng)過壓縮的分段。
10.權(quán)利要求6的系統(tǒng),其中該系統(tǒng)包括處理器;處理器通過異步輸入/輸出(I/O)操作來從非易失存儲(chǔ)介質(zhì)中讀取第二部分。
全文摘要
從休眠中恢復(fù)計(jì)算設(shè)備的處理可以在多個(gè)階段中執(zhí)行。每一個(gè)階段都可以部分地將計(jì)算設(shè)備的狀態(tài)恢復(fù)到操作狀態(tài),并且可以建立一個(gè)用以執(zhí)行另一個(gè)恢復(fù)階段的環(huán)境。休眠信息可被劃分,以便獨(dú)立存儲(chǔ)將在每一個(gè)恢復(fù)階段使用的數(shù)據(jù)。該信息可以采用壓縮形式保存。在第一階段中,引導(dǎo)級(jí)恢復(fù)加載器可以基于休眠信息的一部分來恢復(fù)操作系統(tǒng)的一部分。已恢復(fù)的部分可以在第二階段中用來通過操作系統(tǒng)(OS)來從另一個(gè)部分中檢索休眠信息。OS支持的多個(gè)處理器可以讀取和解壓縮休眠信息,然后,所述信息可以移動(dòng)回到操作存儲(chǔ)器。所述操作系統(tǒng)可以支持異步盤輸入/輸出或其他加速恢復(fù)處理的功能。
文檔編號(hào)G06F9/46GK102708064SQ20121004334
公開日2012年10月3日 申請(qǐng)日期2012年2月24日 優(yōu)先權(quán)日2011年2月24日
發(fā)明者A.D.羅杰斯, E.N.威爾遜, J.A.小施瓦茨, K.V.斯塔克, M.伊岡, N.S.朱奇, Y.M.貝克 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1