專利名稱:信息處理裝置和信息處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于高速啟動包括休眠機制(hibernation mechanism)的信息處理裝置的技術(shù)。
背景技術(shù):
近年來,信息處理裝置中所利用的可降低當(dāng)該信息處理裝置處于待機狀態(tài)時的功耗的休眠引起了關(guān)注。休眠是用于中斷系統(tǒng)的機制。在系統(tǒng)運行期間,休眠時,存儲器或中央處理單元(CPU)寄存器中所包括的信息塊(以下稱為“休眠圖像”)被保存到諸如硬盤的非易失性存儲裝置中。如果隨后關(guān)閉電源,則當(dāng)下次啟動系統(tǒng)時,可通過讀取休眠圖像來恢復(fù)與之前相同的狀態(tài)(以下,稱為“休眠啟動”)。休眠可用于縮短系統(tǒng)的啟動時間的目的。
休眠啟動大致分為兩種類型。一種是通過基本輸入/輸出系統(tǒng)(BIOS)功能或引導(dǎo)讀取器(boot reader)功能來執(zhí)行恢復(fù)的方法,另一種是通過操作系統(tǒng)的內(nèi)核功能來執(zhí)行恢復(fù)的方法。
當(dāng)通過內(nèi)核功能執(zhí)行休眠啟動時,可在內(nèi)核幾乎完全初始化之后通過讀取先前存儲在非易失性存儲裝置中的休眠圖像來恢復(fù)系統(tǒng)狀態(tài)。將通過內(nèi)核功能執(zhí)行的休眠啟動與通過BIOS功能執(zhí)行的休眠啟動進行比較,因為設(shè)備通過執(zhí)行通常的引導(dǎo)序列而被初始化, 所以通過內(nèi)核功能執(zhí)行的休眠啟動就一般的通用性而言是優(yōu)良的,并且可容易地使各種類型的設(shè)備驅(qū)動器對休眠作出響應(yīng)。
然而,與通過BIOS功能或引導(dǎo)讀取器功能執(zhí)行的休眠啟動相比,通過內(nèi)核功能執(zhí)行的休眠啟動需要對于引導(dǎo)序列的處理時間,因而花費長的啟動時間。
如日本專利申請公開No. 2010-157017中所述的,可通過從初始化目標(biāo)中移除在休眠啟動時不需要初始化的設(shè)備來縮短啟動時間。然而,需要選擇從初始化目標(biāo)中移除的設(shè)備,使得可喪失通用性。
—般來講,如果使用直接存儲器存取(DMA)控制器,則可與特定處理并行地在存儲裝置之間讀取信息以及寫入信息。如果DMA機制可并入到休眠啟動,則可事先與內(nèi)核的初始化并行地讀取休眠圖像,使得可縮短用于休眠啟動的時間。
然而,在包括復(fù)雜存儲器管理機制的內(nèi)核(諸如Linux (注冊商標(biāo)))上,DMA控制器不能將數(shù)據(jù)寫入到由該內(nèi)核管理的存儲區(qū)中的任意地址內(nèi)。因而,通過常規(guī)的休眠啟動方法,與內(nèi)核的初始化并行地讀取休眠圖像是困難的。發(fā)明內(nèi)容
根據(jù)本發(fā)明的一方面,提供了一種信息處理裝置,其包括易失性存儲器;非易失性存儲器,被配置為存儲休眠信息;和讀取單元,被配置為與在所述易失性存儲器中擴展的內(nèi)核的初始化并行地,將存儲在所述非易失性存儲器中的休眠信息的一部分讀取到不用于所述內(nèi)核的初始化的區(qū)域中。
根據(jù)以下參照附圖對示例性實施例的詳細(xì)描述,本發(fā)明的其它的特征和方面將會變得清楚。
并入到本說明書中并構(gòu)成本說明書的一部分的附圖示出了本發(fā)明的示例性實施例、附圖和方面,并且與描述一起用于解釋本發(fā)明的原理。
圖1示意性地示出信息處理裝置的配置。
圖2示出根據(jù)本發(fā)明的示例性實施例的休眠機制中的功能關(guān)系。
圖3是示出用于創(chuàng)建休眠圖像的處理的流程圖。
圖4示出休眠圖像的格式的例子。
圖5是示出用于啟動系統(tǒng)的處理的流程圖。
圖6示出內(nèi)核中的存取區(qū)與DMA控制器中的存取區(qū)之間的差別。
圖7是示出用于恢復(fù)休眠圖像的處理的流程圖。
具體實施方式
以下將參照附圖來詳細(xì)描述本發(fā)明的各種示例性實施例、特征和方面。
圖1示出了可應(yīng)用本發(fā)明的第一示例性實施例的信息處理裝置的使用例子。
在圖1中,信息處理裝置100包括中央處理單元(CPU) 101和直接存儲器存取控制器(DMAC) 102。存儲器103包括便宜的大容量易失性存儲器,諸如動態(tài)隨機存取存儲器 (DRAM)(比如,同步動態(tài)隨機存取存儲器(SDRAM))。CPU 101或DMAC 102從存儲器103讀取數(shù)據(jù)/將數(shù)據(jù)寫入到存儲器103中。此外,信息處理裝置100包括輸入/輸出控制單元 104 (以下,稱為I/O控制器)和非易失性存儲裝置105 (比如,閃存、硬盤驅(qū)動器(HDD)和固態(tài)驅(qū)動器(SSD))。
CPU 101將只讀存儲器(ROM)(未示出)中的程序讀取到存儲器103中,并且從存儲器103提取該程序來執(zhí)行下述處理。
通過休眠創(chuàng)建的休眠圖像存儲在非易失性存儲裝置105中,并且通過I/O控制器 104被讀取/寫入。設(shè)備106被CPU 101初始化。一個或多個設(shè)備106可包括在信息處理裝置100中。
圖2示出了根據(jù)本發(fā)明的示例性實施例的休眠機制的配置。在休眠機制200中,存儲器201a、201b和201c表示同一存儲器。存儲器201a表示當(dāng)保存休眠圖像時的存儲器。 存儲器201b表示當(dāng)執(zhí)行并行讀取時的存儲器。存儲器201c表示當(dāng)在并行讀取之后恢復(fù)休眠圖像時的存儲器。非易失性存儲裝置202存儲休眠圖像。非易失性存儲裝置202存儲內(nèi)核代碼、休眠圖像和交換數(shù)據(jù)(swap data)ο
休眠機制200包括保存單元203。當(dāng)用戶請求系統(tǒng)轉(zhuǎn)變?yōu)橹袛酄顟B(tài)時,保存單元 203將休眠圖像、交換數(shù)據(jù)和存儲器201a中的數(shù)據(jù)輸出到非易失性存儲裝置202。
休眠機制200包括存儲器限制單元204和存儲器初始化機制205。存儲器限制單元204限制關(guān)于存儲器初始化機制205可由操作系統(tǒng)使用的存儲區(qū)大小。存儲器初始化機制205基于關(guān)于該限制的信息來初始化存儲器201b。休眠機制200還包括內(nèi)核初始化機制206?;诖鎯υ诜且资源鎯ρb置202中的內(nèi)核代碼,內(nèi)核初始化機制206使用存儲器 201b的由存儲器初始化機制205初始化的內(nèi)核管理區(qū)來初始化內(nèi)核。
休眠機制200還包括并行讀取單元207和DMAC 208。并行讀取單元207使用DMAC 208與內(nèi)核初始化機制206的初始化處理并行地讀取存儲在非易失性存儲裝置202中的休眠圖像。在初始化處理期間并行讀取單元207輸出DMA控制器208的休眠圖像的目的地限于未被存儲器初始化機制205初始化的內(nèi)核非管理區(qū)。
恢復(fù)單元209將未被并行讀取單元207從非易失性存儲裝置202讀取到存儲器 201c的休眠圖像讀取到內(nèi)核非管理區(qū)和內(nèi)核管理區(qū)中?;謴?fù)單元209讀取每個休眠圖像, 因而存儲器201c可恢復(fù)回存儲器201a的狀態(tài),除了一部分?jǐn)?shù)據(jù)之外。
根據(jù)本示例性實施例,將通過使用Linux (注冊商標(biāo))版本2. 6. 18作為常規(guī)方法來描述休眠啟動的加速。
將描述根據(jù)本示例性實施例的用于創(chuàng)建休眠圖像的流程。
圖3是示出從當(dāng)系統(tǒng)被請求轉(zhuǎn)變?yōu)橹袛酄顟B(tài)時到當(dāng)系統(tǒng)停止時的流程的流程圖。 在步驟S300中,停止進程調(diào)度程序(process scheduler)。在步驟S301中,停止每個設(shè)備。 在步驟S302中,交換出數(shù)據(jù)。在步驟S303中,保存CPU寄存器。
在步驟S304中,確定是否正在創(chuàng)建休眠圖像。通常,因為正在創(chuàng)建休眠圖像(在步驟S304中為是),所以處理進入步驟S305。所述處理進入步驟S308的情況是通過休眠啟動使系統(tǒng)恢復(fù)到緊接著步驟S303中的處理之后的狀態(tài)的情況,以下將詳細(xì)描述該情況。
在步驟S305中,輸出休眠圖像。在步驟S306中,重新開啟(resume)每個設(shè)備。然后,在步驟S307中,停止系統(tǒng)。
另一方面,在步驟S308中,重新開啟每個設(shè)備,并且在步驟S309中,重新開啟進程調(diào)度程序。步驟S306中的處理與步驟S308中的處理相同。
用戶(或用戶應(yīng)用程序)訪問虛擬文件系統(tǒng),以請求系統(tǒng)轉(zhuǎn)變?yōu)橹袛酄顟B(tài)。為了執(zhí)行步驟3300、5301、5302、5306、5307、5308和5309中的處理,使用Linux (注冊商標(biāo))中所包括的常規(guī)功能。
在步驟S302中,事先將與在存儲器中擴展的進程相關(guān)的數(shù)據(jù)從存儲器交換到非易失性存儲裝置的交換區(qū),使得可確保工作區(qū)、縮小休眠圖像的大小,并且可縮短啟動時間。用戶(或用戶應(yīng)用程序)事先訪問虛擬文件系統(tǒng),以指定交換出數(shù)據(jù)的大小。
在步驟S303中,在專用函數(shù)內(nèi)執(zhí)行所述處理。當(dāng)從該函數(shù)返回時需要被寫回的 CPU通用數(shù)據(jù)寄存器的值被作為參數(shù)保存到存儲器上的變量中時,在x86處理器中,寄存器 esp、ebx、ebp、esi和edi與之對應(yīng)。在恢復(fù)時,這些值被寫回到存儲器和上述CPU寄存器中以從所述函數(shù)返回,并且所述函數(shù)可恢復(fù)到系統(tǒng)停止之前執(zhí)行的函數(shù)。
在步驟S305中,將存儲器上剩余的數(shù)據(jù)作為休眠圖像輸出到非易失性存儲裝置。
圖4示出了作為休眠信息的例子的休眠圖像的格式。標(biāo)識符400指示休眠圖像是否有效。不受內(nèi)核管理的數(shù)據(jù)量401指示內(nèi)核非管理區(qū)中所包括的數(shù)據(jù)塊的量??倲?shù)據(jù)量 402指示內(nèi)核管理區(qū)和內(nèi)核非管理區(qū)這二者中所包括的數(shù)據(jù)塊的總量。地址403存儲休眠圖像的一組地址。數(shù)據(jù)404存儲休眠圖像的一組數(shù)據(jù)。頭部包括標(biāo)識符400、不受內(nèi)核管理的數(shù)據(jù)量401、總數(shù)據(jù)量402和地址403,而數(shù)據(jù)部分包括數(shù)據(jù)404。
數(shù)據(jù)404按頁存儲存儲器103上的數(shù)據(jù)。然而,數(shù)據(jù)404不包括內(nèi)核代碼區(qū)、與休眠處理相關(guān)的全局變量(以下,稱為“休眠全局變量”)和交換出的數(shù)據(jù)。地址403和數(shù)據(jù)404 具有彼此對應(yīng)的關(guān)系,數(shù)據(jù)404中的第N存儲數(shù)據(jù)的位置目的地是地址403中的第N存儲地址。地址403中的信息塊的量和數(shù)據(jù)404中的數(shù)據(jù)量均分別等于總數(shù)據(jù)量402。
關(guān)于將與地址403和數(shù)據(jù)404相關(guān)聯(lián)地存儲的數(shù)據(jù),可取的是,將內(nèi)核非管理區(qū)中的數(shù)據(jù)布置在前面,并且將內(nèi)核管理區(qū)中的數(shù)據(jù)布置在其后面。該布置的目的是防止該數(shù)據(jù)在內(nèi)核被初始化時在內(nèi)核管理存儲器中被恢復(fù)。并行讀取單元207將可讀數(shù)據(jù)量限制為不受內(nèi)核管理的數(shù)據(jù)量401,因而并行讀取單元207僅讀取數(shù)據(jù)404的前面部分中的數(shù)據(jù), 以不將該數(shù)據(jù)讀取到內(nèi)核管理存儲器中。
為方便休眠啟動,依次將休眠圖像從特定扇區(qū)存儲到未被定義為分區(qū)的區(qū)域(非分區(qū)區(qū)域)。因而,可取的是,預(yù)先在內(nèi)核代碼區(qū)中直接設(shè)置扇區(qū)號。此外,因為設(shè)備被停止, 所以不能使用Linux (注冊商標(biāo))的功能將數(shù)據(jù)輸出到非易失性存儲裝置。因而,將專用的輸出機制添加到內(nèi)核代碼區(qū),以使用該專用的輸出機制來執(zhí)行數(shù)據(jù)到非易失性存儲裝置的輸出。
接下來,將描述根據(jù)本示例性實施例的休眠啟動的流程。
圖5是示出從當(dāng)信息處理裝置開通時到系統(tǒng)啟動時的流程圖。在步驟S500中,初始化BIOS。在步驟S501中,引導(dǎo)裝載程序裝載并擴展內(nèi)核。
在步驟S502中,檢查休眠圖像是否存儲在非易失性存儲裝置105中。如果休眠圖像被存儲(在步驟S502中為是),則在步驟S503a中,對內(nèi)核進行初始化。在步驟S504中, 恢復(fù)休眠圖像,然后休眠啟動完成。在步驟S503a中,通過DMAC與內(nèi)核初始化并行地執(zhí)行并行讀取。
如果休眠圖像未被存儲(在步驟S502中為否),則在步驟S503b中,為了正常啟動系統(tǒng),對內(nèi)核進行初始化,并且系統(tǒng)的啟動完成。
步驟S502和S504中的處理可作為內(nèi)核初始化處理的一部分來執(zhí)行。
在步驟S502中,對DMAC進行初始化,將休眠圖像的頭部從下述區(qū)域讀取到存儲器 103中,在所述區(qū)域中,非易失性存儲裝置的特定扇區(qū)(其將為休眠圖像存儲目的地)位于居前的位置,然后,通過CPU 101的處理檢查休眠圖像是否被存儲。頭部優(yōu)選地被讀取到休眠全局變量中,以避免它在被恢復(fù)時被覆寫。當(dāng)預(yù)定信息被寫入到標(biāo)識符400中時,可確定休眠圖像存儲在非易失性存儲裝置中(在步驟S502中為是)。然后,清除關(guān)于非易失性存儲裝置的標(biāo)識符400的信息,并且開始休眠啟動。
另一方面,當(dāng)確定休眠圖像未被存儲在非易失性存儲裝置中時(在步驟S502中為否),在步驟S503b中,對內(nèi)核進行初始化,以正常啟動系統(tǒng)。
Linux (注冊商標(biāo))特有的休眠機制在內(nèi)核功能的初始化完成之后讀取休眠圖像。 因而,當(dāng)使用內(nèi)核功能讀取休眠圖像時,可使用關(guān)于非易失性存儲裝置的分區(qū)信息和文件信息。
然而,因為根據(jù)本示例性實施例的方法與開始內(nèi)核初始化并行地開始讀取休眠圖像,所以不能使用上述分區(qū)信息。因此,可取的是,非易失性存儲裝置設(shè)有不被分區(qū)信息區(qū)分的區(qū)域(不被分區(qū)信息定義的區(qū)域),并且休眠圖像通過被轉(zhuǎn)換為具有與文件系統(tǒng)無關(guān)的獨特格式的數(shù)據(jù)而被存儲在該區(qū)域中。
步驟S503a中的內(nèi)核初始化與步驟S503b中的不使用休眠圖像的初始化相比大致有兩個不同之處。
第一不同之處在于對將被初始化的系統(tǒng)(內(nèi)核)可使用的存儲器大小施加限制。在通過Linux (注冊商標(biāo))中的存儲器管理機制執(zhí)行的初始化中,基于從BIOS獲得的存儲器映射來執(zhí)行存儲器的初始化。另一方面,根據(jù)本示例性實施例,在使用Linux (注冊商標(biāo))的功能執(zhí)行存儲器的初始化之前,重寫存儲器映射。
當(dāng)存儲器被重寫時,可指定特定值(地址),因而可設(shè)置僅直到該特定值(地址)的存儲區(qū)可被內(nèi)核使用。作為所述特定值,可取的是,可指定作為用于完成內(nèi)核的初始化(系統(tǒng)的初始化)的工作區(qū)所必需的最小大小或更大。改變的區(qū)域(存儲器映射)的大小不需通過特定處理來恢復(fù),因為它不影響系統(tǒng)恢復(fù)之后的操作。這是因為,通過讀取休眠圖像,關(guān)于區(qū)域大小的數(shù)據(jù)被覆寫??扇〉氖?,直接在內(nèi)核的代碼區(qū)中設(shè)置用于設(shè)置將由內(nèi)核使用的上述存儲區(qū)(以下,稱為“內(nèi)核管理區(qū)”)的信息。
通過上述處理,在存儲器103中確保包括內(nèi)核管理區(qū)和內(nèi)核非管理區(qū)的兩種類型的區(qū)域。當(dāng)安裝與極限大小(limit size)相比具有足夠大小的存儲器時,內(nèi)核管理區(qū)的大小變?yōu)榈扔谠摌O限大小,并且通過從存儲器的總大小減去內(nèi)核管理區(qū)而獲得的大小對應(yīng)于內(nèi)核非管理區(qū)(另外可提供其它區(qū)域)。然而,當(dāng)存儲器與極限大小相比被不足夠地安裝時, 不確保內(nèi)核非管理區(qū)。
接下來,第二不同之處在于與內(nèi)核初始化并行地將休眠圖像從非易失性存儲裝置 105讀取到存儲器103中。
通過使用DMAC作為并行讀取部件,將休眠圖像讀取到存儲器中,以便恢復(fù)緊接在休眠圖像被保存之前的存儲器布置。然而,如果試圖一次在整個存儲區(qū)中恢復(fù)休眠圖像,則因為內(nèi)核管理區(qū)用于對內(nèi)核進行初始化,所以存在將在初始化處理中使用的代碼被覆寫的風(fēng)險。因而,在并行讀取單元中的階段,將休眠圖像讀取到其中存儲器未被初始化的內(nèi)核非管理區(qū)中。因此,當(dāng)沒有確保內(nèi)核非管理區(qū)時,不執(zhí)行并行讀取。
圖6示出了并行讀取。存儲器600包括內(nèi)核管理區(qū)600a和內(nèi)核非管理區(qū)600b。 內(nèi)核601僅由CPU 101執(zhí)行,CPU 101僅訪問內(nèi)核管理區(qū)600a。圖6示出了 DMAC 602和非易失性存儲裝置603。DMAC602在內(nèi)核初始化期間僅將休眠圖像傳送到內(nèi)核非管理區(qū)600b。
當(dāng)通過CPU 101指定將用于傳送數(shù)據(jù)的參數(shù)(傳送源地址、傳送目的地地址和數(shù)據(jù)大小)時,DMAC 602與CPU異步地以被設(shè)置為最大大小的預(yù)定大小將該數(shù)據(jù)從非易失性存儲裝置603傳送到存儲器。在數(shù)據(jù)輸出完成之后,需要通過CPU 101再次指定新的參數(shù)。 可取的是,DMAC 602被設(shè)置為使用具有預(yù)定大小的數(shù)據(jù)傳送的完成作為觸發(fā)來中斷CPU 101,并且基于地址403來指定接著將讀取的數(shù)據(jù),以重新執(zhí)行讀取。
另外,可使用本地的高級可編程中斷控制器(APIC)定時器來以規(guī)律的時間間隔產(chǎn)生中斷,并且CPU 101可檢查DMAC 602的讀取狀態(tài)。如果讀取完成,則可基于地址403來指定接著將讀取的數(shù)據(jù),并且DMAC 602可重新執(zhí)行讀取。
DMAC 602繼續(xù)休眠圖像的并行讀取,直到DMAC 602結(jié)束將被讀取到內(nèi)核非管理區(qū)中的所有休眠圖像的讀取為止,或者就在內(nèi)核初始化結(jié)束之后DMAC 602開始將休眠圖像讀取到內(nèi)核管理區(qū)或內(nèi)核非管理區(qū)中之前。
然而,在高級技術(shù)附件(ATA)的初始化期間,不能執(zhí)行DMA的傳送。因此,一旦DMA 完成傳送,在ATA的初始化之前臨時停止DMA的傳送,并且在ATA的初始化之后重新開啟 DMA的傳送。
在步驟S504中,將非易失性存儲裝置603中的休眠圖像的未被讀取到存儲器600中的一部分讀取到存儲器600中。
圖7示出了步驟S504中的處理的細(xì)節(jié),并且是根據(jù)本示例性實施例的用于恢復(fù)休眠圖像的處理的流程。在步驟S700中,停止進程調(diào)度程序。在步驟S701中,停止該設(shè)備。 在步驟S702中,改變堆棧。在步驟S703中,停止DMAC的并行讀取。在步驟S704中,CPU 101讀取休眠圖像。在步驟S705中,恢復(fù)CPU寄存器。
在步驟S702中,將用于對內(nèi)核進行初始化的堆棧切換到用于恢復(fù)休眠圖像的堆棧。在恢復(fù)休眠圖像的同時未被使用的存儲區(qū)中指定用于恢復(fù)休眠圖像的堆棧,以使得其內(nèi)容在恢復(fù)期間不被覆寫。在步驟S705中,恢復(fù)該堆棧。
在步驟S703中,使所述處理等待,直到操作的DMAC停止為止。當(dāng)并行讀取已經(jīng)完成時,不使所述處理等待。
在步驟S704中,讀取休眠圖像的要被讀取到、但是還未被讀取到內(nèi)核非管理區(qū)中的一部分和該休眠圖像的將被讀取到內(nèi)核管理區(qū)中的一部分。重復(fù)該處理,直到DMA完成傳送的數(shù)據(jù)的計數(shù)器變?yōu)榈扔诳倲?shù)據(jù)量402為止。
在步驟S705中,在專用函數(shù)內(nèi)執(zhí)行所述處理。首先,如果包括轉(zhuǎn)換后備緩沖器 (TLB),則執(zhí)行TLB快閃(flash)。為了通過x86處理器執(zhí)行TLB快閃,將CR3寄存器的值一次保存到另一個寄存器,然后再次用保存的值覆寫CR3寄存器。該數(shù)據(jù)被從當(dāng)被保存到CPU 中時所使用的變量恢復(fù)到通用數(shù)據(jù)寄存器。此外,還恢復(fù)了交換到非易失性存儲裝置202 的交換數(shù)據(jù)。
在從上述函數(shù)返回時,數(shù)據(jù)可恢復(fù)到與緊在步驟S303之后的狀態(tài)相同的狀態(tài),除了休眠全局變量和存儲器的未使用區(qū)域之外。在步驟S304中,因為沒有正在創(chuàng)建休眠圖像 (在步驟S304中為否),則所述處理進入步驟S308。休眠全局變量用于上述確定。在步驟 S308中,重新開啟每個設(shè)備。在步驟S309中,重新開啟處理調(diào)度程序,然后完成休眠啟動。
在步驟S302中交換出的數(shù)據(jù)在系統(tǒng)恢復(fù)之后被從儲存器讀取到存儲器中。例如, 如同Linux (注冊商標(biāo))中所包括的交換機制一樣,交換的數(shù)據(jù)根據(jù)頁面出錯的產(chǎn)生被寫回到存儲器。如果所有的休眠圖像可與內(nèi)核的初始化并行地被傳送到存儲器,則可跳過步驟 S703中的處理,并且可通過內(nèi)核的存儲器管理功能釋放內(nèi)核管理區(qū)。
根據(jù)如上所述的本示例性實施例,當(dāng)再次使用休眠圖像啟動系統(tǒng)時,可與內(nèi)核初始化并行地讀取休眠圖像的部分,以使得可以以比常規(guī)方法高的速度恢復(fù)系統(tǒng)。此外,根據(jù)本示例性實施例,可縮短休眠啟動中存儲器管理機制對存儲器進行初始化所需的時間。
此外,本發(fā)明可通過執(zhí)行以下處理來實現(xiàn)。更具體地講,通過網(wǎng)絡(luò)或各種存儲介質(zhì)將用于實現(xiàn)以上示例性實施例的功能的軟件(程序)供給系統(tǒng)或裝置,并且該系統(tǒng)或裝置的計算機(或CPU或微處理單元(MPU))讀取并執(zhí)行該程序。
雖然已參照示例性實施例描述了本發(fā)明,但是要理解本發(fā)明不限于所公開的示例性實施例。權(quán)利要求的范圍應(yīng)被給予最寬泛的解釋,以涵蓋所有修改、等同結(jié)構(gòu)和功能。
權(quán)利要求
1.一種信息處理裝置,包括 易失性存儲器; 非易失性存儲器,被配置為存儲休眠信息;以及 讀取單元,被配置為與在所述易失性存儲器中擴展的內(nèi)核的初始化并行地將存儲在所述非易失性存儲器中的休眠信息的一部分讀取到不用于所述內(nèi)核的初始化的區(qū)域中。
2.根據(jù)權(quán)利要求I所述的信息處理裝置,其中,所述讀取單元將所述休眠信息的其余部分讀取到所述易失性存儲器中,以在所述內(nèi)核的初始化之后啟動系統(tǒng)。
3.根據(jù)權(quán)利要求I所述的信息處理裝置,還包括存儲器管理單元,被配置為對于所述易失性存儲器分配用于所述內(nèi)核的初始化的內(nèi)核管理區(qū)和不用于所述內(nèi)核的初始化的內(nèi)核非管理區(qū)。
4.根據(jù)權(quán)利要求I所述的信息處理裝置,還包括啟動單元,被配置為如果所述休眠信息未被保存在所述非易失性存儲器中,則執(zhí)行控制以正常啟動所述信息處理裝置。
5.根據(jù)權(quán)利要求I所述的信息處理裝置,還包括保存單元,被配置為將所述休眠信息保存在所述非易失性存儲器中。
6.根據(jù)權(quán)利要求5所述的信息處理裝置,其中,所述保存單元將所述休眠信息在具有與文件系統(tǒng)無關(guān)的格式的文件中保存到所述非易失性存儲器中。
7.根據(jù)權(quán)利要求3所述的信息處理裝置,其中,所述存儲器管理單元將內(nèi)核管理區(qū)的大小設(shè)置為所述內(nèi)核的初始化所需的最小大小或更大。
8.根據(jù)權(quán)利要求I所述的信息處理裝置,其中,所述讀取單元包括直接存儲器存取(DMA)控制器,并且將存儲在所述非易失性存儲器中的休眠信息讀取到不用于所述內(nèi)核的初始化的所述區(qū)域中。
9.一種在包括易失性存儲器和存儲休眠信息的非易失性存儲器的信息處理裝置中執(zhí)行的用于處理信息的方法,所述方法包括 與在所述易失性存儲器中擴展的內(nèi)核的初始化并行地將存儲在所述非易失性存儲器中的休眠信息的一部分讀取到不用于所述內(nèi)核的初始化的區(qū)域中。
全文摘要
本發(fā)明公開了信息處理裝置和信息處理方法。通過內(nèi)核功能執(zhí)行的休眠啟動由于通常的引導(dǎo)序列所需的處理時間而花費長的時間。當(dāng)啟動操作系統(tǒng)時,根據(jù)本發(fā)明的信息處理裝置在存儲器管理機制的初始化之前確定是否執(zhí)行休眠啟動處理。當(dāng)執(zhí)行休眠啟動處理時,使存儲器管理機制的大小減小到初始化內(nèi)核所需的最小大小,并且與硬件的初始化并行地讀取休眠圖像。通過讀取休眠圖像,受限的存儲器管理區(qū)可恢復(fù)到不受限制的狀態(tài)。
文檔編號G06F9/445GK102981864SQ20121017882
公開日2013年3月20日 申請日期2012年6月1日 優(yōu)先權(quán)日2011年6月3日
發(fā)明者加藤謙介 申請人:佳能株式會社