本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種系統(tǒng)恢復(fù)方法及裝置。
背景技術(shù):
長期以來,計(jì)算機(jī)系統(tǒng)主內(nèi)存的任務(wù)一直由動(dòng)態(tài)隨機(jī)存儲(chǔ)器(dynamicrandomaccessmemory,dram)來擔(dān)當(dāng)。然而,dram具有易失性,一旦關(guān)機(jī)斷電,存儲(chǔ)在內(nèi)存中的信息以及操作系統(tǒng)本身的鏡像都會(huì)丟失。同時(shí),隨著集成電路關(guān)鍵尺寸的減小,dram在尺寸收縮、功耗控制和存儲(chǔ)密度方面的發(fā)展遇到了極大的困難,dram內(nèi)存技術(shù)已接近瓶頸。
現(xiàn)有技術(shù)中,為了實(shí)現(xiàn)系統(tǒng)恢復(fù),通常將系統(tǒng)的鏡像存儲(chǔ)至硬盤驅(qū)動(dòng)器(簡(jiǎn)稱硬盤)中,然而,硬盤的讀寫延遲較大,這導(dǎo)致開機(jī)加電時(shí)bios引導(dǎo)、從硬盤加載操作系統(tǒng)鏡像、初始化操作系統(tǒng),以及關(guān)機(jī)時(shí)將內(nèi)存數(shù)據(jù)存入硬盤這一系列復(fù)雜的過程需要耗費(fèi)較長的時(shí)間,即無法實(shí)現(xiàn)系統(tǒng)的快速恢復(fù)啟動(dòng)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種系統(tǒng)恢復(fù)方法及裝置,用以解決現(xiàn)有技術(shù)中,硬盤的讀寫延遲較大,導(dǎo)致開機(jī)加電時(shí)bios引導(dǎo)、從硬盤加載操作系統(tǒng)鏡像、初始化操作系統(tǒng),以及關(guān)機(jī)時(shí)將內(nèi)存數(shù)據(jù)存入硬盤這一系列復(fù)雜的過程需要耗費(fèi)較長的時(shí)間,即無法實(shí)現(xiàn)系統(tǒng)的快速恢復(fù)啟動(dòng)的技術(shù)問題,其技術(shù)方案如下:
一種系統(tǒng)恢復(fù)方法,所述方法包括:
當(dāng)所述系統(tǒng)運(yùn)行時(shí),判斷所述系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件,如果是,則凍結(jié)目標(biāo)進(jìn)程;
將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及,所述目標(biāo)寄存器數(shù)據(jù)和所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中;
當(dāng)接收到系統(tǒng)恢復(fù)指令時(shí),基于所述存儲(chǔ)位置信息將所述ssd中的所述目標(biāo)內(nèi)存數(shù)據(jù)恢復(fù)至所述dram中,并將所述目標(biāo)寄存器數(shù)據(jù)恢復(fù)至所述寄存器中。
其中,所述當(dāng)所述系統(tǒng)運(yùn)行時(shí),判斷所述系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件,包括:
檢測(cè)當(dāng)前系統(tǒng)資源的使用率;
當(dāng)所述當(dāng)前系統(tǒng)資源的使用率小于預(yù)設(shè)值時(shí),判定所述系統(tǒng)當(dāng)前滿足所述還原點(diǎn)的創(chuàng)建條件。
其中,所述當(dāng)所述系統(tǒng)運(yùn)行時(shí),判斷所述系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件,還包括:
當(dāng)所述當(dāng)前系統(tǒng)資源的占用率大于或等于所述預(yù)設(shè)值時(shí),每隔預(yù)設(shè)時(shí)段檢測(cè)一次所述當(dāng)前系統(tǒng)資源的占用率;
如果連續(xù)n個(gè)所述預(yù)設(shè)時(shí)段,檢測(cè)到系統(tǒng)資源的使用率均大于或等于所述預(yù)設(shè)值,則判定所述系統(tǒng)當(dāng)前滿足所述還原點(diǎn)的創(chuàng)建條件,其中,所述n為預(yù)先設(shè)定的正整數(shù);
如果在第m個(gè)所述預(yù)設(shè)時(shí)段內(nèi)檢測(cè)的所述當(dāng)前系統(tǒng)資源的占用率小于所述預(yù)設(shè)值,則判定所述系統(tǒng)當(dāng)前滿足所述還原點(diǎn)的創(chuàng)建條件,所述m為小于n的正整數(shù)。
其中,所述dram包括:主存儲(chǔ)區(qū)域和保留區(qū)域;
所述將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及,所述目標(biāo)寄存器數(shù)據(jù)和所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中,包括:
獲取所述當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)及所述目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息,并將所述目標(biāo)寄存器數(shù)據(jù)及所述目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至所述保留區(qū)域;
從所述dram的主存儲(chǔ)區(qū)域獲取所述目標(biāo)內(nèi)存數(shù)據(jù)及所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息,并將所述目標(biāo)內(nèi)存數(shù)據(jù)及所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息至所述保留區(qū)域;
將所述保留區(qū)域中的所述目標(biāo)寄存器數(shù)據(jù)、所述目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息、所述目標(biāo)內(nèi)存數(shù)據(jù)及所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至所述ssd。
其中,所述目標(biāo)進(jìn)程包括未標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程、未標(biāo)記第二標(biāo)識(shí)的用戶進(jìn)程、標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程和未標(biāo)記第二標(biāo)識(shí)的核心進(jìn)程,所述第一標(biāo)識(shí)用于指示進(jìn)程為同步進(jìn)程,所述第二標(biāo)識(shí)用于指示進(jìn)程為不能凍結(jié)的進(jìn)程;
所述凍結(jié)目標(biāo)進(jìn)程包括:按預(yù)設(shè)的進(jìn)程凍結(jié)順序凍結(jié)所述目標(biāo)進(jìn)程,其中,所述預(yù)設(shè)的進(jìn)程凍結(jié)順序?yàn)椋菏紫葍鼋Y(jié)所述未標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程和所述未標(biāo)記第二標(biāo)識(shí)的用戶進(jìn)程,其次凍結(jié)所述標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程,最后凍結(jié)所述未標(biāo)記第二標(biāo)識(shí)的核心進(jìn)程。
一種系統(tǒng)恢復(fù)裝置,所述系統(tǒng)恢復(fù)裝置包括:判斷模塊、凍結(jié)模塊、存儲(chǔ)模塊和恢復(fù)模塊;
所述判斷模塊,用于當(dāng)所述系統(tǒng)運(yùn)行時(shí),判斷所述系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件;
所述凍結(jié)模塊,用于當(dāng)所述判斷模塊判斷出所述系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件時(shí),凍結(jié)目標(biāo)進(jìn)程;
所述存儲(chǔ)模塊,用于在所述凍結(jié)模塊凍結(jié)所述目標(biāo)進(jìn)程之后,將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及,所述目標(biāo)寄存器數(shù)據(jù)和所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中;
所述恢復(fù)模塊,用于當(dāng)接收到系統(tǒng)恢復(fù)指令時(shí),基于所述存儲(chǔ)位置信息將所述ssd中的所述目標(biāo)內(nèi)存數(shù)據(jù)恢復(fù)至所述dram中,并將所述目標(biāo)寄存器數(shù)據(jù)恢復(fù)至所述寄存器中。
其中,所述判斷模塊包括:檢測(cè)子模塊和判定子模塊;
所述檢測(cè)子模塊,用于檢測(cè)當(dāng)前系統(tǒng)資源的使用率;
所述判定子模塊,用于當(dāng)所述當(dāng)前系統(tǒng)資源的使用率小于預(yù)設(shè)值時(shí),判定所述系統(tǒng)當(dāng)前滿足所述還原點(diǎn)的創(chuàng)建條件。
其中,所述檢測(cè)子模塊,還用于當(dāng)所述當(dāng)前系統(tǒng)資源的占用率大于或等于所述預(yù)設(shè)值時(shí),每隔預(yù)設(shè)時(shí)段檢測(cè)一次所述當(dāng)前系統(tǒng)資源的占用率;
所述判定子模塊,還用于在連續(xù)n個(gè)所述預(yù)設(shè)時(shí)段,檢測(cè)到系統(tǒng)資源的使用率均大于或等于所述預(yù)設(shè)值時(shí),判定所述系統(tǒng)當(dāng)前滿足所述還原點(diǎn)的創(chuàng)建條件,其中,所述n為預(yù)先設(shè)定的正整數(shù),在第m個(gè)所述預(yù)設(shè)時(shí)段內(nèi)檢測(cè)的所述當(dāng)前系統(tǒng)資源的占用率小于所述預(yù)設(shè)值時(shí),判定所述系統(tǒng)當(dāng)前滿足所述還原點(diǎn)的創(chuàng)建條件,所述m為小于n的正整數(shù)。
其中,所述dram包括:主存儲(chǔ)區(qū)域和保留區(qū)域;
則所述存儲(chǔ)模塊包括:第一獲取子模塊、第一存儲(chǔ)子模塊、第二獲取子模塊、第二存儲(chǔ)子模塊和第三存儲(chǔ)子模塊;
所述第一獲取子模塊,用于獲取所述當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)及所述目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息;
所述第一存儲(chǔ)子模塊,用于將所述目標(biāo)寄存器數(shù)據(jù)及所述目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至所述保留區(qū)域;
所述第二獲取子模塊,用于從所述dram的主存儲(chǔ)區(qū)域獲取所述目標(biāo)內(nèi)存數(shù)據(jù)及所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息;
所述第二存儲(chǔ)子模塊,用于將所述目標(biāo)內(nèi)存數(shù)據(jù)及所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息至所述保留區(qū)域;
所述第三存儲(chǔ)子模塊,用于將所述保留區(qū)域中的所述目標(biāo)寄存器數(shù)據(jù)、所述目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息、所述目標(biāo)內(nèi)存數(shù)據(jù)及所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至所述ssd。
其中,所述目標(biāo)進(jìn)程包括未標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程、未標(biāo)記第二標(biāo)識(shí)的用戶進(jìn)程、標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程和未標(biāo)記第二標(biāo)識(shí)的核心進(jìn)程,所述第一標(biāo)識(shí)用于指示進(jìn)程為同步進(jìn)程,所述第二標(biāo)識(shí)用于指示進(jìn)程為不能凍結(jié)的進(jìn)程;
所述凍結(jié)模塊,包括凍結(jié)子模塊;
所述凍結(jié)子模塊,用于按預(yù)設(shè)的進(jìn)程凍結(jié)順序凍結(jié)所述目標(biāo)進(jìn)程,其中,所述預(yù)設(shè)的進(jìn)程凍結(jié)順序?yàn)椋菏紫葍鼋Y(jié)所述未標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程和所述未標(biāo)記第二標(biāo)識(shí)的用戶進(jìn)程,其次凍結(jié)所述標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程,最后凍結(jié)所述未標(biāo)記第二標(biāo)識(shí)的核心進(jìn)程。
上述技術(shù)方案具有如下有益效果:
本發(fā)明提供的系統(tǒng)恢復(fù)方法及裝置,在系統(tǒng)運(yùn)行時(shí),首先判斷系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件,并在系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件時(shí),凍結(jié)目標(biāo)進(jìn)程,然后將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中,當(dāng)接收到系統(tǒng)恢復(fù)指令時(shí),可基于存儲(chǔ)位置信息將ssd中的目標(biāo)內(nèi)存數(shù)據(jù)恢復(fù)至dram中,并將目標(biāo)寄存器數(shù)據(jù)恢復(fù)至寄存器中。本發(fā)明提供的系統(tǒng)恢復(fù)方法及裝置充分利用ssd非易揮發(fā)性的特點(diǎn),將目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)存儲(chǔ)至ssd中,并在系統(tǒng)恢復(fù)時(shí),從ssd中獲取目標(biāo)內(nèi)存數(shù)據(jù)存儲(chǔ)至dram,并獲取目標(biāo)寄存器數(shù)據(jù)恢復(fù)寄存器中的數(shù)據(jù),進(jìn)而實(shí)現(xiàn)系統(tǒng)的快速恢復(fù),本發(fā)明與現(xiàn)有技術(shù)相比,避免了開機(jī)加電時(shí)bios引導(dǎo)、從硬盤驅(qū)動(dòng)器加載操作系統(tǒng)鏡像、初始化操作系統(tǒng)以及關(guān)機(jī)時(shí)將內(nèi)存數(shù)據(jù)存入硬盤驅(qū)動(dòng)器的一系列復(fù)雜的過程,大大降低了開關(guān)機(jī)的耗時(shí)。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的系統(tǒng)恢復(fù)方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的系統(tǒng)恢復(fù)方法中,判斷系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件的實(shí)現(xiàn)過程的流程示意圖;
圖3為本發(fā)明實(shí)施例提供的系統(tǒng)恢復(fù)方法中,將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及,所述目標(biāo)寄存器數(shù)據(jù)和所述目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd的實(shí)現(xiàn)過程的流程示意圖;
圖4為本發(fā)明實(shí)施例提供的系統(tǒng)恢復(fù)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例提供了一種系統(tǒng)恢復(fù)方法,請(qǐng)參閱圖1,示出了系統(tǒng)恢復(fù)方法的流程示意圖,該方法可以包括:
步驟s101:當(dāng)系統(tǒng)運(yùn)行時(shí),判斷系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件,如果是,則凍結(jié)目標(biāo)進(jìn)程。
步驟s102:將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及,目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中。
步驟s103:當(dāng)接收到系統(tǒng)恢復(fù)指令時(shí),基于存儲(chǔ)位置信息將ssd中的目標(biāo)內(nèi)存數(shù)據(jù)恢復(fù)至dram中,并將目標(biāo)寄存器數(shù)據(jù)恢復(fù)至寄存器中。
本發(fā)明實(shí)施例提供的系統(tǒng)恢復(fù)方法,在系統(tǒng)運(yùn)行時(shí),首先判斷系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件,并在系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件時(shí),凍結(jié)目標(biāo)進(jìn)程,然后將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中,當(dāng)接收到系統(tǒng)恢復(fù)指令時(shí),可基于存儲(chǔ)位置信息將ssd中的目標(biāo)內(nèi)存數(shù)據(jù)恢復(fù)至dram中,并將目標(biāo)寄存器數(shù)據(jù)恢復(fù)至寄存器中。本發(fā)明提供的系統(tǒng)恢復(fù)方法充分利用ssd非易揮發(fā)性的特點(diǎn),將目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)存儲(chǔ)至ssd中,并在系統(tǒng)恢復(fù)時(shí),從ssd中獲取目標(biāo)內(nèi)存數(shù)據(jù)存儲(chǔ)至dram,并獲取目標(biāo)寄存器數(shù)據(jù)恢復(fù)寄存器中的數(shù)據(jù),進(jìn)而實(shí)現(xiàn)系統(tǒng)的快速恢復(fù),本發(fā)明實(shí)施例與現(xiàn)有技術(shù)相比,避免了開機(jī)加電時(shí)bios引導(dǎo)、從硬盤驅(qū)動(dòng)器加載操作系統(tǒng)鏡像、初始化操作系統(tǒng)以及關(guān)機(jī)時(shí)將內(nèi)存數(shù)據(jù)存入硬盤驅(qū)動(dòng)器的一系列復(fù)雜的過程,大大降低了開關(guān)機(jī)的耗時(shí)。
請(qǐng)參閱圖2,示出了上述實(shí)施例中,在系統(tǒng)運(yùn)行時(shí),判斷系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件的實(shí)現(xiàn)過程流程示意圖,可以包括:
步驟s201:檢測(cè)當(dāng)前系統(tǒng)資源的使用率。
步驟s202a:如果當(dāng)前系統(tǒng)資源的使用率小于預(yù)設(shè)值時(shí),則判定系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件。
示例性的,預(yù)設(shè)值為50%,如果當(dāng)前系統(tǒng)資源的使用量小于50%,則判定系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件。
步驟s202b:如果當(dāng)前系統(tǒng)資源的占用率大于或等于預(yù)設(shè)值時(shí),則每隔預(yù)設(shè)時(shí)段檢測(cè)一次當(dāng)前系統(tǒng)資源的占用率。
示例性的,預(yù)先設(shè)定時(shí)間間隔為10分鐘,預(yù)設(shè)值為50%,如果當(dāng)前系統(tǒng)資源的使用量大于或等于50%,則每隔10分鐘檢測(cè)一次當(dāng)前系統(tǒng)資源的占用率。需要說明的是,預(yù)設(shè)值為50%、時(shí)間間隔為10分鐘僅為一示例,其大小可依據(jù)實(shí)際應(yīng)用設(shè)定。
步驟s203ba:如果連續(xù)n個(gè)預(yù)設(shè)時(shí)段,檢測(cè)到系統(tǒng)資源的使用率均大于或等于預(yù)設(shè)值,則判定系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件,其中,n為預(yù)先設(shè)定的正整數(shù)。
示例性的,預(yù)設(shè)時(shí)段為10分鐘,n的值設(shè)為6,如果連續(xù)檢測(cè)了6個(gè)預(yù)設(shè)時(shí)段(6x10=60分鐘,即1小時(shí)),這1小時(shí)內(nèi)的6個(gè)時(shí)段內(nèi)檢測(cè)的系統(tǒng)資源的使用率均大于或等于預(yù)設(shè)值,那么判定系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件,在這種情況下,強(qiáng)行執(zhí)行還原點(diǎn)建立。
步驟s203bb:如果在第m個(gè)預(yù)設(shè)時(shí)段內(nèi)檢測(cè)的當(dāng)前系統(tǒng)資源的占用率小于預(yù)設(shè)值,則判定系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件,其中,m為小于n的正整數(shù)。
示例性的,預(yù)設(shè)時(shí)段為10分鐘,n的值設(shè)為6,則m的取值可以為1至5中的任意值,在確定出當(dāng)前系統(tǒng)資源的使用率大于或等于50%之后,每隔10分鐘檢測(cè)一次當(dāng)前系統(tǒng)資源的占用率,如果在第3個(gè)10分鐘檢測(cè)的當(dāng)前系統(tǒng)資源的占用率小于預(yù)設(shè)值,則判定系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件。
在上述實(shí)施例中,dram包括:主存儲(chǔ)區(qū)域和保留區(qū)域。
則請(qǐng)參閱圖3,示出了上述實(shí)施例中,將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及,目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中的具體實(shí)現(xiàn)方式的流程示意圖,可以包括:
步驟s301:獲取當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)及目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息,并將目標(biāo)寄存器數(shù)據(jù)及目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至保留區(qū)域。
其中,寄存器包括代碼段寄存器、數(shù)據(jù)段寄存器、堆棧段寄存器、附加段寄存器、控制寄存器和通用寄存器(包括eax、ebx、ecx、edx、ebp、esp、esi、edi)。
具體的,代碼段寄存器中存放有當(dāng)前進(jìn)程代碼的段基址cs和偏移量ip,數(shù)據(jù)段寄存器中存放有當(dāng)前進(jìn)程使用的數(shù)據(jù)所存放段的段基址,堆棧段寄存器存放有當(dāng)前進(jìn)程堆棧段的段基址、附加段寄存器中存放有當(dāng)前進(jìn)程使用附加數(shù)據(jù)段的段基址,該段是串操作指令中目的串所在的段,控制寄存器中的cr0存放控制處理器操作模式和狀態(tài)的系統(tǒng)控制標(biāo)志,cr1保留不用,cr2存放導(dǎo)致缺頁異常的線性地址,cr3存放頁目錄表物理內(nèi)存的基地址。
示例性的,dram的存儲(chǔ)區(qū)域劃分為zone_dram區(qū)域(主存儲(chǔ)區(qū)域)和zone_highmem區(qū)域(保留區(qū)域),將上述各個(gè)寄存器的值存儲(chǔ)至dram的zone_highmem區(qū)域第一個(gè)頁幀的前512位。
步驟s302:從dram的主存儲(chǔ)區(qū)域獲取目標(biāo)內(nèi)存數(shù)據(jù)及目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息,并將目標(biāo)內(nèi)存數(shù)據(jù)及目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息至保留區(qū)域。
遍歷dram,對(duì)于每個(gè)dram頁幀,通過dram頁幀的標(biāo)識(shí)確定dram頁幀是否為目標(biāo)dram頁幀,如果是,則將該目標(biāo)dram頁幀存儲(chǔ)至dram的保留區(qū)域,其中,dram頁幀的標(biāo)識(shí)用于指示dram頁幀是否為系統(tǒng)還原點(diǎn)要保存的頁幀。
在一具體實(shí)例中,標(biāo)記pg_reserve的非空頁幀為系統(tǒng)還原點(diǎn)要保存的頁幀。將標(biāo)記為pg_reserve非空頁幀平行遷移到zone_highmem區(qū)域的剩余區(qū)域中。遷移的目的地址和dram頁幀地址有固定的差,其值為400mib。
步驟s303:將保留區(qū)域中的目標(biāo)寄存器數(shù)據(jù)、目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息、目標(biāo)內(nèi)存數(shù)據(jù)及目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd。
在一種可能的實(shí)現(xiàn)方式中,將保留區(qū)域中的目標(biāo)寄存器數(shù)據(jù)、目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息、目標(biāo)內(nèi)存數(shù)據(jù)及目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd具體過程為:拷貝保留區(qū)域中的目標(biāo)寄存器數(shù)據(jù)、目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息、目標(biāo)內(nèi)存數(shù)據(jù)及目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息,將拷貝的數(shù)據(jù)創(chuàng)建鏡像,然后將鏡像保存至ssd中。
在一具體實(shí)例中,可通過create_image()實(shí)現(xiàn)鏡像的創(chuàng)建,通過swsusp_write()將鏡像保存在ssd中。具體的,將創(chuàng)建的鏡像存儲(chǔ)至ssd通過linux內(nèi)核中snapshot_handle結(jié)構(gòu)體來實(shí)現(xiàn),首先,通過內(nèi)核函數(shù)snapshot_get_image()函數(shù)獲得該鏡像的頁幀數(shù)目,包括鏡像頭的一頁、所需拷貝內(nèi)存中的頁、以及元數(shù)據(jù)頁;然后,通過函數(shù)get_swap_writer()進(jìn)行對(duì)ssd中存儲(chǔ)鏡像的區(qū)間寫入的請(qǐng)求,在獲得寫入的鎖(即獲得swapwriter的權(quán)限)后,檢查是否有足夠的空間寫入當(dāng)前鏡像,如果是,通過snapshot_read_next()函數(shù)讀取內(nèi)存頁中的鏡像,之后通過宏定義data_of獲得鏡像頭信息,最后通過swap_write_page()將鏡像中對(duì)應(yīng)的頁幀與ssd中nandflash塊對(duì)應(yīng),即對(duì)元數(shù)據(jù)信息的寫入;最后,通過函數(shù)save_image()或則save_image_lzo()(即用lzo壓縮的方式)將其寫入到元數(shù)據(jù)中對(duì)應(yīng)位置。最后調(diào)用swap_writer_finish()函數(shù)將第一個(gè)swap_map_page地址寫入到ssd中,然后釋放swapwriter的鎖,并結(jié)束此次的鏡像寫入到ssd中的過程。
在上述實(shí)施例中,目標(biāo)進(jìn)程包括未標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程、未標(biāo)記第二標(biāo)識(shí)的用戶進(jìn)程、標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程和未標(biāo)記第二標(biāo)識(shí)的核心進(jìn)程,其中,第一標(biāo)識(shí)用于指示進(jìn)程為同步進(jìn)程,第二標(biāo)識(shí)用于指示進(jìn)程為不能凍結(jié)的進(jìn)程。
則上述實(shí)施例提供的系統(tǒng)恢復(fù)方法中,凍結(jié)目標(biāo)進(jìn)程包括:按預(yù)設(shè)的進(jìn)程凍結(jié)順序凍結(jié)所述目標(biāo)進(jìn)程。
其中,預(yù)設(shè)的進(jìn)程凍結(jié)順序?yàn)椋菏紫葍鼋Y(jié)未標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程和未標(biāo)記第二標(biāo)識(shí)的用戶進(jìn)程,其次凍結(jié)標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程,最后凍結(jié)未標(biāo)記第二標(biāo)識(shí)的核心進(jìn)程。
在一具體實(shí)例中,系統(tǒng)中的進(jìn)程包括:標(biāo)記為pf_nofreeze的進(jìn)程、未標(biāo)記為pf_nofreeze的核心進(jìn)程、標(biāo)記為pf_syncthread的用戶進(jìn)程和其它進(jìn)程。其中,標(biāo)記為pf_nofreeze的進(jìn)程為不能凍結(jié)的進(jìn)程,標(biāo)記為pf_syncthread的用戶進(jìn)程為同步進(jìn)程,未標(biāo)記為pf_nofreeze的核心進(jìn)程為可以凍結(jié)的核心進(jìn)程。
在進(jìn)行進(jìn)程凍結(jié)時(shí),為了減少系統(tǒng)的開銷,可首先凍結(jié)未標(biāo)記為pf_syncthread和未標(biāo)記為pf_nofreeze的用戶進(jìn)程,其次凍結(jié)標(biāo)記為pf_syncthread的用戶進(jìn)程,最后凍結(jié)未標(biāo)記為pf_nofreeze的核心進(jìn)程。
本發(fā)明實(shí)施例可調(diào)用suspend_freeze_processes()函數(shù)凍結(jié)進(jìn)程并且保存所有進(jìn)程當(dāng)前的狀態(tài)。
需要說明的是,在凍結(jié)進(jìn)程的過程中,需要檢測(cè)系統(tǒng)參數(shù)(指示程序運(yùn)行狀態(tài)的參數(shù),例如,ip、ldt、tss等),判斷系統(tǒng)參數(shù)是否滿足預(yù)設(shè)要求,如果是,則繼續(xù)凍結(jié)進(jìn)程,如果否,則需要解凍凍結(jié)的進(jìn)程,直到檢測(cè)的系統(tǒng)參數(shù)達(dá)到要求,才會(huì)再重新凍結(jié)目標(biāo)進(jìn)程,進(jìn)而執(zhí)行后續(xù)的數(shù)據(jù)遷移操作。
在上述實(shí)施例中,當(dāng)接收到系統(tǒng)恢復(fù)指令時(shí),基于存儲(chǔ)位置信息將ssd中的目標(biāo)內(nèi)存數(shù)據(jù)恢復(fù)至dram中的對(duì)應(yīng)位置,由于存儲(chǔ)位置信息存儲(chǔ)了目標(biāo)內(nèi)存數(shù)據(jù)中的各個(gè)頁幀的存儲(chǔ)位置,因此,基于該存儲(chǔ)位置即可將各個(gè)頁幀存儲(chǔ)回其所在的位置上。
在一具體實(shí)例中,開機(jī)時(shí),bios會(huì)提供給用戶2個(gè)選項(xiàng):快速開機(jī)方式和全新開機(jī)方式。當(dāng)用戶選擇快速開機(jī)時(shí),系統(tǒng)通過swsusp_read()從ssd中讀取鏡像文件(由目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)創(chuàng)建),然后通過load_image()、load_image_lzo()將鏡像文件加載到dram對(duì)應(yīng)的頁幀位置,然后通過resume_target_kernel()來實(shí)現(xiàn)對(duì)內(nèi)核進(jìn)程的恢復(fù),最后swsusp_arch_resume()實(shí)現(xiàn)對(duì)系統(tǒng)的恢復(fù),從而實(shí)現(xiàn)狀態(tài)保持的快速恢復(fù)。
需要說明的是,如果用戶選擇了全新開機(jī)方式,則進(jìn)行全新開機(jī)。此方式完全和傳統(tǒng)的開機(jī)方式完全相同,包括bios引導(dǎo)、從磁盤加載操作系統(tǒng)鏡像、初始化操作系統(tǒng)等工作。
與上述方法相對(duì)應(yīng),本發(fā)明實(shí)施例還提供了一種系統(tǒng)恢復(fù)裝置,請(qǐng)參閱圖4,示出了該裝置的結(jié)構(gòu)示意圖,可以包括判斷模塊401、凍結(jié)模塊402、存儲(chǔ)模塊403和恢復(fù)模塊404。其中:
判斷模塊401,用于當(dāng)系統(tǒng)運(yùn)行時(shí),判斷系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件。
凍結(jié)模塊402,用于當(dāng)判斷模塊401判斷出系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件時(shí),凍結(jié)目標(biāo)進(jìn)程。
存儲(chǔ)模塊403,用于在凍結(jié)模塊402凍結(jié)目標(biāo)進(jìn)程之后,將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及,目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中。
恢復(fù)模塊404,用于當(dāng)接收到系統(tǒng)恢復(fù)指令時(shí),基于存儲(chǔ)位置信息將ssd中的目標(biāo)內(nèi)存數(shù)據(jù)恢復(fù)至dram中,并將目標(biāo)寄存器數(shù)據(jù)恢復(fù)至寄存器中。
本發(fā)明實(shí)施例提供的系統(tǒng)恢復(fù)裝置,在系統(tǒng)運(yùn)行時(shí),首先判斷系統(tǒng)當(dāng)前是否滿足還原點(diǎn)的創(chuàng)建條件,并在系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件時(shí),凍結(jié)目標(biāo)進(jìn)程,然后將當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)、dram中的目標(biāo)內(nèi)存數(shù)據(jù),以及目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd中,當(dāng)接收到系統(tǒng)恢復(fù)指令時(shí),可基于存儲(chǔ)位置信息將ssd中的目標(biāo)內(nèi)存數(shù)據(jù)恢復(fù)至dram中,并將目標(biāo)寄存器數(shù)據(jù)恢復(fù)至寄存器中。本發(fā)明提供的系統(tǒng)恢復(fù)裝置充分利用ssd非易揮發(fā)性的特點(diǎn),將目標(biāo)寄存器數(shù)據(jù)和目標(biāo)內(nèi)存數(shù)據(jù)存儲(chǔ)至ssd中,并在系統(tǒng)恢復(fù)時(shí),從ssd中獲取目標(biāo)內(nèi)存數(shù)據(jù)存儲(chǔ)至dram,并獲取目標(biāo)寄存器數(shù)據(jù)恢復(fù)寄存器中的數(shù)據(jù),進(jìn)而實(shí)現(xiàn)系統(tǒng)的快速恢復(fù),本發(fā)明實(shí)施例與現(xiàn)有技術(shù)相比,避免了開機(jī)加電時(shí)bios引導(dǎo)、從硬盤驅(qū)動(dòng)器加載操作系統(tǒng)鏡像、初始化操作系統(tǒng)以及關(guān)機(jī)時(shí)將內(nèi)存數(shù)據(jù)存入硬盤驅(qū)動(dòng)器的一系列復(fù)雜的過程,大大降低了開關(guān)機(jī)的耗時(shí)。
上述實(shí)施例提供的系統(tǒng)恢復(fù)裝置中,判斷模塊401可以包括:檢測(cè)子模塊和判定子模塊。其中:
檢測(cè)子模塊,用于檢測(cè)當(dāng)前系統(tǒng)資源的使用率。
判定子模塊,用于當(dāng)當(dāng)前系統(tǒng)資源的使用率小于預(yù)設(shè)值時(shí),判定系統(tǒng)當(dāng)前滿足還原點(diǎn)的創(chuàng)建條件。
上述實(shí)施例提供的系統(tǒng)恢復(fù)裝置中,檢測(cè)子模塊,還用于當(dāng)所述當(dāng)前系統(tǒng)資源的占用率大于或等于所述預(yù)設(shè)值時(shí),每隔預(yù)設(shè)時(shí)段檢測(cè)一次所述當(dāng)前系統(tǒng)資源的占用率;
判定子模塊,還用于在連續(xù)n個(gè)預(yù)設(shè)時(shí)段,檢測(cè)到系統(tǒng)資源的使用率均大于或等于預(yù)設(shè)值時(shí),判定系統(tǒng)當(dāng)前滿足所述還原點(diǎn)的創(chuàng)建條件,其中,n為預(yù)先設(shè)定的正整數(shù),在第m個(gè)所述預(yù)設(shè)時(shí)段內(nèi)檢測(cè)的當(dāng)前系統(tǒng)資源的占用率小于所述預(yù)設(shè)值時(shí),判定系統(tǒng)當(dāng)前滿足所述還原點(diǎn)的創(chuàng)建條件,m為小于n的正整數(shù)。
在上述實(shí)施例中,dram包括:主存儲(chǔ)區(qū)域和保留區(qū)域。則上述實(shí)施例提供的系統(tǒng)恢復(fù)裝置中,存儲(chǔ)模塊403可以包括:第一獲取子模塊、第一存儲(chǔ)子模塊、第二獲取子模塊、第二存儲(chǔ)子模塊和第三存儲(chǔ)子模塊。
第一獲取子模塊,用于獲取當(dāng)前寄存器中的目標(biāo)寄存器數(shù)據(jù)及目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息。
第一存儲(chǔ)子模塊,用于將目標(biāo)寄存器數(shù)據(jù)及目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至保留區(qū)域。
第二獲取子模塊,用于從dram的主存儲(chǔ)區(qū)域獲取目標(biāo)內(nèi)存數(shù)據(jù)及目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息。
第二存儲(chǔ)子模塊,用于將目標(biāo)內(nèi)存數(shù)據(jù)及目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息至保留區(qū)域。
第三存儲(chǔ)子模塊,用于將保留區(qū)域中的目標(biāo)寄存器數(shù)據(jù)、目標(biāo)寄存器數(shù)據(jù)的存儲(chǔ)位置信息、目標(biāo)內(nèi)存數(shù)據(jù)及目標(biāo)內(nèi)存數(shù)據(jù)的存儲(chǔ)位置信息存儲(chǔ)至ssd。
在上述實(shí)施例中,目標(biāo)進(jìn)程包括未標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程、未標(biāo)記第二標(biāo)識(shí)的用戶進(jìn)程、標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程和未標(biāo)記第二標(biāo)識(shí)的核心進(jìn)程,所述第一標(biāo)識(shí)用于指示進(jìn)程為同步進(jìn)程,所述第二標(biāo)識(shí)用于指示進(jìn)程為不能凍結(jié)的進(jìn)程。
則上述實(shí)施例提供的系統(tǒng)恢復(fù)裝置中,凍結(jié)模塊402包括凍結(jié)子模塊。
凍結(jié)子模塊,用于按預(yù)設(shè)的進(jìn)程凍結(jié)順序凍結(jié)目標(biāo)進(jìn)程,其中,預(yù)設(shè)的進(jìn)程凍結(jié)順序?yàn)椋菏紫葍鼋Y(jié)未標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程和未標(biāo)記第二標(biāo)識(shí)的用戶進(jìn)程,凍結(jié)標(biāo)記第一標(biāo)識(shí)的用戶進(jìn)程,最后凍結(jié)未標(biāo)記第二標(biāo)識(shí)的核心進(jìn)程。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的方法、裝置和設(shè)備,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些通信接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。