在計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器轉(zhuǎn)儲(chǔ)和分析的制作方法
【專利摘要】本發(fā)明提供了一種用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的系統(tǒng)和方法。在計(jì)算機(jī)系統(tǒng)中檢測(cè)到一個(gè)觸發(fā)事件。該計(jì)算機(jī)系統(tǒng)被配置用于檢測(cè)內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者,并且如果內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者之一被檢測(cè)到,則執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。響應(yīng)于檢測(cè)到觸發(fā)事件而在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。存儲(chǔ)器轉(zhuǎn)儲(chǔ)的執(zhí)行包括將計(jì)算機(jī)系統(tǒng)的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器的一部分。存儲(chǔ)當(dāng)前情境而不在檢測(cè)到觸發(fā)事件之前預(yù)留該部分。重新啟動(dòng)該計(jì)算機(jī)系統(tǒng)并且執(zhí)行引導(dǎo)程序,其中該引導(dǎo)程序的運(yùn)行空間被限制于存儲(chǔ)器的該部分。該引導(dǎo)程序被用于將當(dāng)前情境上傳到主機(jī)設(shè)備。
【專利說(shuō)明】在計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器轉(zhuǎn)儲(chǔ)和分析
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本公開要求于2012年4月27日提交的第61/639,456號(hào)美國(guó)臨時(shí)專利申請(qǐng)的優(yōu)先權(quán)。該申請(qǐng)全部?jī)?nèi)容通過(guò)引用的方式并入于此。
【技術(shù)領(lǐng)域】
[0003]本文檔中所述的技術(shù)總體涉及用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的系統(tǒng)和方法,尤其涉及在執(zhí)行嵌入式設(shè)備中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析的系統(tǒng)和方法。
【背景技術(shù)】
[0004]隨著信息通信技術(shù)的廣泛使用,信息處理系統(tǒng),諸如桌面計(jì)算機(jī),筆記本計(jì)算機(jī),或者嵌入式設(shè)備(例如智能電話,個(gè)人數(shù)字助理,平板計(jì)算機(jī))應(yīng)該展示出高度的可靠性。當(dāng)在信息處理系統(tǒng)運(yùn)行期間出現(xiàn)故障時(shí),立即收集關(guān)于故障的信息并且在此之后繼續(xù)系統(tǒng)的正常運(yùn)行可以是重要的。信息處理系統(tǒng)中一種可能出現(xiàn)的故障的一個(gè)示例是內(nèi)核嚴(yán)重錯(cuò)誤(panic)。內(nèi)核嚴(yán)重錯(cuò)誤是當(dāng)信息處理系統(tǒng)的操作系統(tǒng)(0S)檢測(cè)到系統(tǒng)無(wú)法安全從其恢復(fù)的致命錯(cuò)誤時(shí)采取的動(dòng)作。當(dāng)檢測(cè)到內(nèi)核嚴(yán)重錯(cuò)誤時(shí),系統(tǒng)可以向顯示設(shè)備輸出錯(cuò)誤消息并且執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)以用于事后調(diào)試。存儲(chǔ)器轉(zhuǎn)儲(chǔ)被用于當(dāng)檢測(cè)到致命問(wèn)題的時(shí)刻存儲(chǔ)系統(tǒng)的存儲(chǔ)器的內(nèi)容。通常,0S或者在0S內(nèi)核中操作的程序執(zhí)行轉(zhuǎn)儲(chǔ)過(guò)程。例如,當(dāng)系統(tǒng)的中央處理器(CPU)接收到指示出現(xiàn)致命錯(cuò)誤的中斷信號(hào)時(shí),CPU可以將控制傳遞給OS內(nèi)核中的存儲(chǔ)器轉(zhuǎn)儲(chǔ)程序以執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)操作。
【發(fā)明內(nèi)容】
[0005]本公開針對(duì)用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的系統(tǒng)和方法。在一種用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的方法中,在計(jì)算機(jī)系統(tǒng)中檢測(cè)觸發(fā)事件。該計(jì)算機(jī)系統(tǒng)被配置為檢測(cè)內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起,并且如果內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者之一被檢測(cè)到則執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。響應(yīng)于檢測(cè)到觸發(fā)事件,在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。存儲(chǔ)器轉(zhuǎn)儲(chǔ)的執(zhí)行包括將計(jì)算機(jī)系統(tǒng)的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器設(shè)備的一部分中。存儲(chǔ)當(dāng)前情境而不在檢測(cè)到觸發(fā)事件之前預(yù)留該部分。重新啟動(dòng)計(jì)算機(jī)系統(tǒng)并且執(zhí)行引導(dǎo)程序,其中該引導(dǎo)程序的運(yùn)行空間被限制于存儲(chǔ)器設(shè)備的該部分。該引導(dǎo)程序被用于將當(dāng)前情境上傳到主機(jī)設(shè)備。
[0006]在另一示例中,一種用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的系統(tǒng)包括處理器以及被編碼有用于命令處理器執(zhí)行操作的指令的計(jì)算機(jī)可讀存儲(chǔ)器。該操作包括在計(jì)算機(jī)系統(tǒng)中檢測(cè)觸發(fā)事件,其中計(jì)算機(jī)系統(tǒng)被配置為檢測(cè)內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者,并且如果內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者之一被檢測(cè)到則執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。該操作還包括響應(yīng)于檢測(cè)到觸發(fā)事件而在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。該執(zhí)行包括將計(jì)算機(jī)系統(tǒng)的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器設(shè)備的一部分中,其中存儲(chǔ)當(dāng)前情境而不在檢測(cè)到觸發(fā)事件之前預(yù)留該部分。重新啟動(dòng)計(jì)算機(jī)系統(tǒng)并且執(zhí)行引導(dǎo)程序,其中該引導(dǎo)程序的運(yùn)行空間被限制于存儲(chǔ)器設(shè)備的該部分。該引導(dǎo)程序被用于將當(dāng)前情境上傳到主機(jī)設(shè)備。
【專利附圖】
【附圖說(shuō)明】
[0007]圖1是描繪用于執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析的示例嵌入式設(shè)備和主機(jī)設(shè)備的框圖。
[0008]圖2是圖示說(shuō)明嵌入式設(shè)備和主機(jī)設(shè)備內(nèi)的示例軟件結(jié)構(gòu)的圖。
[0009]圖3是圖示用于執(zhí)行響應(yīng)于內(nèi)核嚴(yán)重錯(cuò)誤或系統(tǒng)掛起的存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析的示例方法的流程圖。
[0010]圖4是圖示在將存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)從嵌入式設(shè)備轉(zhuǎn)移到主機(jī)設(shè)備中使用的示例上傳協(xié)議的方面的框圖。
[0011]圖5是圖示一種用于允許數(shù)據(jù)在上傳之前被壓縮的上傳協(xié)議的示例方法的流程圖。
[0012]圖6是計(jì)算機(jī)系統(tǒng)中的Linux存儲(chǔ)器轉(zhuǎn)儲(chǔ)的示例使用模式的框圖。
[0013]圖7是圖示用于從存儲(chǔ)器恢復(fù)文件系統(tǒng)和文件內(nèi)容的示例過(guò)程的流程圖。
[0014]圖8是圖示用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的示例方法的流程圖。
【具體實(shí)施方式】
[0015]圖1是描繪用于執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析的示例嵌入式設(shè)備102和主機(jī)設(shè)備112的框圖100。嵌入式設(shè)備102包括處理器104,存儲(chǔ)器控制器106,存儲(chǔ)器108,以及主機(jī)控制接口 110。處理器104可以是計(jì)算領(lǐng)域技術(shù)人員熟知的通用處理單元,其能夠處理由內(nèi)部或者外部中斷驅(qū)動(dòng)的任務(wù)。處理器104可以連接到嵌入式設(shè)備102的各種輸入設(shè)備和輸出設(shè)備(例如鍵盤,觸摸板,顯示設(shè)備,揚(yáng)聲器等)并且耦合到任何數(shù)目的不同的存儲(chǔ)器設(shè)備(例如只讀存儲(chǔ)器,隨機(jī)訪問(wèn)存儲(chǔ)器,硬盤驅(qū)動(dòng)器等)。雖然框圖100將示例嵌入式設(shè)備102描繪為包括單個(gè)處理器104,但是在其它示例中,可以用多個(gè)處理核執(zhí)行計(jì)算機(jī)程度的指令。處理器104和嵌入式設(shè)備102的其它組件經(jīng)由主機(jī)控制接口 110與主機(jī)設(shè)備112通信。主機(jī)控制接口 110可以例如使用通用串行總線(USB)協(xié)議以實(shí)現(xiàn)嵌入式設(shè)備102和主機(jī)設(shè)備112之間的通信。其它類型的主機(jī)控制接口(例如聯(lián)合測(cè)試行動(dòng)組接口,集成電路間接口,局域網(wǎng)接口等)可以被使用。
[0016]在圖1的示例嵌入式設(shè)備102中,處理器104被耦合到存儲(chǔ)器108,其可以是隨機(jī)訪問(wèn)存儲(chǔ)器(RAM),動(dòng)態(tài)RAM (DRAM),靜態(tài)RAM (SRAM),同步DRAM (SDRAM),F(xiàn)LASH存儲(chǔ)器等的任意組合。存儲(chǔ)器108可以進(jìn)一步是N0R型閃速存儲(chǔ)器,NAND型閃速存儲(chǔ)器,或者多媒體卡存儲(chǔ)器(例如eMMC存儲(chǔ)器)及其它。處理器104jingyou存儲(chǔ)器控制器106訪問(wèn)存儲(chǔ)器108。當(dāng)處理器104需要訪問(wèn)存儲(chǔ)器108時(shí),讀取請(qǐng)求或者寫入請(qǐng)求被從處理器104發(fā)送到存儲(chǔ)器控制器106,并且存儲(chǔ)器控制器反過(guò)來(lái)向存儲(chǔ)器108發(fā)送對(duì)應(yīng)的讀取請(qǐng)求或者寫入請(qǐng)求。結(jié)果,來(lái)自處理器104的數(shù)據(jù)可以被寫入到存儲(chǔ)器108,或者可以將數(shù)據(jù)從存儲(chǔ)器108讀取到處理器104。
[0017]當(dāng)嵌入式設(shè)備102在操作期間出現(xiàn)故障時(shí),關(guān)于故障的信息被收集以用于事后分析和調(diào)試。嵌入式設(shè)備102中可能出現(xiàn)的故障的示例是內(nèi)核嚴(yán)重錯(cuò)誤。內(nèi)核嚴(yán)重錯(cuò)誤是由嵌入式設(shè)備102的0S在檢測(cè)到嚴(yán)重錯(cuò)誤時(shí)所采取的動(dòng)作。在一個(gè)示例中,嵌入式系統(tǒng)102使用Linux(注冊(cè)商標(biāo))0S,其包括用于處理這種嚴(yán)重錯(cuò)誤的內(nèi)核嚴(yán)重錯(cuò)誤例程。內(nèi)核可以形成OS的核心并且被用于管理嵌入式設(shè)備102的資源以及提供額外的服務(wù),例如內(nèi)核嚴(yán)重錯(cuò)誤例程。嵌入式設(shè)備102中可能出現(xiàn)的故障的另一示例是系統(tǒng)掛起(即死機(jī))。系統(tǒng)掛起出現(xiàn)在嵌入式設(shè)備102的單個(gè)或者所有程序停止對(duì)輸入做出響應(yīng)時(shí)。例如,嵌入式設(shè)備102的顯示的各方面變成靜止,并且任何類型的輸入在嵌入式設(shè)備102內(nèi)都無(wú)法產(chǎn)生效果。
[0018]內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起用作嵌入式設(shè)備102的觸發(fā)事件。嵌入式設(shè)備102被配置為檢測(cè)內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者,如果該觸發(fā)事件中任何一個(gè)發(fā)生,則收集關(guān)于故障的信息以用于事后分析。收集關(guān)于故障的信息經(jīng)由存儲(chǔ)器轉(zhuǎn)儲(chǔ)發(fā)生。存儲(chǔ)器轉(zhuǎn)儲(chǔ)被用于當(dāng)內(nèi)核嚴(yán)重錯(cuò)誤或者系統(tǒng)掛起被檢測(cè)到的時(shí)刻存儲(chǔ)存儲(chǔ)器108的內(nèi)容。
[0019]在執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)時(shí),Linux內(nèi)核轉(zhuǎn)儲(chǔ)機(jī)制(例如“Kdump”工具)將嵌入式設(shè)備102的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器108的一部分中,并且向存儲(chǔ)器108的特定頁(yè)面寫入簽名。為了存儲(chǔ)當(dāng)前情境和寫入簽名,Linux內(nèi)核在運(yùn)行的同時(shí)不會(huì)特別地預(yù)留空間以加載在內(nèi)核嚴(yán)重錯(cuò)誤或者系統(tǒng)掛起的情況下被觸發(fā)的第二內(nèi)核。而是,存儲(chǔ)當(dāng)前情境而在檢測(cè)到觸發(fā)事件之前不預(yù)留存儲(chǔ)器108的該部分。當(dāng)內(nèi)核嚴(yán)重錯(cuò)誤或者系統(tǒng)掛起被檢測(cè)到時(shí),當(dāng)前情境被存儲(chǔ)在存儲(chǔ)器108的一部分中,該部分一般被預(yù)留作為嵌入式設(shè)備102中的視頻存儲(chǔ)器使用。將視頻存儲(chǔ)器用于存儲(chǔ)器轉(zhuǎn)儲(chǔ)在Linux內(nèi)核正常運(yùn)行時(shí)具有最小影響。將當(dāng)前情境以此方式存儲(chǔ),允許執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)而不預(yù)留存儲(chǔ)器108的一大部分空間。
[0020]在存儲(chǔ)器轉(zhuǎn)儲(chǔ)的另一方面中,重新啟動(dòng)嵌入式設(shè)備102并且執(zhí)行引導(dǎo)程序(例如修改版本的“U-boot”引導(dǎo)加載程序)。通常,引導(dǎo)程序是計(jì)算機(jī)程序,其將嵌入式設(shè)備102的0S加載到存儲(chǔ)器108中并且打包指令以引導(dǎo)0S內(nèi)核。在執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)時(shí),引導(dǎo)程序適于和存儲(chǔ)器108 —起使用,以便引導(dǎo)程序的運(yùn)行空間可以被限制于存儲(chǔ)器108的存儲(chǔ)當(dāng)前情境的部分(即上述視頻存儲(chǔ)器部分)。在存儲(chǔ)器108的該部分內(nèi)操作的引導(dǎo)程序檢測(cè)簽名是否存在于存儲(chǔ)器108的特定頁(yè)面中。當(dāng)在存儲(chǔ)器108的特定頁(yè)面檢測(cè)到簽名時(shí),弓丨導(dǎo)程序中斷嵌入式設(shè)備的正常啟動(dòng)過(guò)程,并且根據(jù)存儲(chǔ)器轉(zhuǎn)儲(chǔ)來(lái)執(zhí)行進(jìn)一步的動(dòng)作。
[0021]引導(dǎo)程序執(zhí)行的進(jìn)一步動(dòng)作包括將存儲(chǔ)器108的該部分中存儲(chǔ)的當(dāng)前情境經(jīng)由主機(jī)控制接口 110上傳到主機(jī)設(shè)備112。為了執(zhí)行上傳,必須建立嵌入式設(shè)備102和主機(jī)設(shè)備112之間的連接。在連接建立后,引導(dǎo)程序?qū)?dāng)前情境上傳到主機(jī)設(shè)備112。主機(jī)控制接口 110使用通用串行總線(USB)協(xié)議執(zhí)行上傳。在一個(gè)示例中,USB協(xié)議基于Android(注冊(cè)商標(biāo))系統(tǒng)的“快速啟動(dòng)(Fastboot)”協(xié)議。該快速啟動(dòng)協(xié)議是直接基于USB底層數(shù)據(jù)分組的協(xié)議。原始的快速啟動(dòng)協(xié)議包括用于文件下載的功能而不包擴(kuò)用于文件上傳的功能。然而,在圖1的嵌入式系統(tǒng)102中,使用了包括上傳功能的快速啟動(dòng)協(xié)議的修改版本。在上傳之前,存儲(chǔ)器108的該部分中的當(dāng)前情境可以被壓縮(例如,用“zlib”軟件壓縮庫(kù)),從而減少上傳時(shí)間。
[0022]在將當(dāng)前情境從嵌入式設(shè)備102上傳到主機(jī)設(shè)備112之后,主機(jī)設(shè)備執(zhí)行對(duì)當(dāng)前情境的事后分析。為了進(jìn)行事后分析,主機(jī)設(shè)備112將當(dāng)前情境存儲(chǔ)為映射文件。在一個(gè)示例中,“崩潰工具(Crash Utility)”應(yīng)用的修改版本被用于進(jìn)行事后分析。崩潰工具是一種Linux內(nèi)核轉(zhuǎn)儲(chǔ)映射分析工具,并且由Red Hat, Inc.(注冊(cè)商標(biāo))開發(fā)和維護(hù)。存儲(chǔ)在主機(jī)設(shè)備112中的映射文件可以使用修改版本的崩潰工具應(yīng)用被直接分析。原始版本的崩潰工具應(yīng)用只允許查看簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)內(nèi)容并且缺少恢復(fù)文件系統(tǒng)和文件內(nèi)容的功能。圖1的示例系統(tǒng)因此利用添加了用于恢復(fù)文件系統(tǒng)和文件內(nèi)容功能的崩潰工具應(yīng)用的修改版本。
[0023]圖1的示例系統(tǒng)在內(nèi)核嚴(yán)重錯(cuò)誤或者系統(tǒng)掛起的事件發(fā)生時(shí)啟用存儲(chǔ)器轉(zhuǎn)儲(chǔ)并且分析該事件。進(jìn)一步,在圖1的示例系統(tǒng)中,執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)而不特別地預(yù)留存儲(chǔ)器108的該部分以用于在Linux內(nèi)核運(yùn)行期間存儲(chǔ)存儲(chǔ)器轉(zhuǎn)儲(chǔ)。將存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)經(jīng)由USB協(xié)議上傳到主機(jī)設(shè)備112,使得存儲(chǔ)在存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)中的文件能夠被瀏覽并且能夠從嵌入式設(shè)備102崩潰的時(shí)間點(diǎn)恢復(fù)。雖然圖1的示例系統(tǒng)關(guān)于嵌入式設(shè)備進(jìn)行描述,但是此處所述的存儲(chǔ)器轉(zhuǎn)儲(chǔ)和分析方法可以應(yīng)用于任何計(jì)算機(jī)系統(tǒng)。例如,設(shè)備102和112兩者之一或者兩者可以是個(gè)人計(jì)算機(jī)(PC)。圖1的示例系統(tǒng)可以尤其適用于嵌入式設(shè)備102在戶外測(cè)試的情況。
[0024]圖2是圖示嵌入式設(shè)備200和主機(jī)設(shè)備250內(nèi)的示例軟件結(jié)構(gòu)的圖。根據(jù)上面圖1所述,嵌入式設(shè)備200可以包括用于執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的硬件和軟件系統(tǒng),并且主機(jī)設(shè)備250可以包括用于執(zhí)行事后存儲(chǔ)器轉(zhuǎn)儲(chǔ)分析的硬件和軟件系統(tǒng)。嵌入式設(shè)備200內(nèi)的軟件包括引導(dǎo)程序202,0S內(nèi)核204以及各種應(yīng)用程序206。主機(jī)設(shè)備250內(nèi)的軟件包括的崩潰工具應(yīng)用252的修改版本。
[0025]嵌入式設(shè)備200的弓|導(dǎo)程序202包括弓|導(dǎo)加載程序功能以及用于將存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)上傳到主機(jī)設(shè)備250的功能。引導(dǎo)加載程序功能通過(guò)使用U-boot工具208或者其它類似程序?qū)崿F(xiàn)。如上所述,U-boot工具208適于存儲(chǔ)器存儲(chǔ)并且能夠從存儲(chǔ)器中的特定位置執(zhí)行,其中存儲(chǔ)器中的特定位置是存儲(chǔ)器中存儲(chǔ)存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)的部分。在嵌入式設(shè)備200在崩潰后重新啟動(dòng)時(shí),引導(dǎo)程序202確定是否應(yīng)該執(zhí)行進(jìn)一步的存儲(chǔ)器轉(zhuǎn)儲(chǔ)功能(例如,通過(guò)檢測(cè)由Linux內(nèi)核轉(zhuǎn)儲(chǔ)機(jī)制寫入存儲(chǔ)器的簽名)。如果進(jìn)一步的存儲(chǔ)器轉(zhuǎn)儲(chǔ)功能將要被執(zhí)行,則引導(dǎo)程序202利用快速啟動(dòng)協(xié)議210的修改版本將存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)經(jīng)由USB協(xié)議上傳到主機(jī)設(shè)備250。
[0026]用于控制嵌入式設(shè)備200的硬件的程序一般在包括在嵌入式設(shè)備200的0S中的0S內(nèi)核204內(nèi)操作。0S內(nèi)核204包括嚴(yán)重錯(cuò)誤例程212和轉(zhuǎn)儲(chǔ)程序214。嚴(yán)重錯(cuò)誤例程212被配置為處置嵌入式設(shè)備200不能從其安全恢復(fù)的致命錯(cuò)誤的處理。例如,嚴(yán)重錯(cuò)誤例程212可以向嵌入式設(shè)備的顯示器輸出錯(cuò)誤消息并且經(jīng)由轉(zhuǎn)儲(chǔ)程序214發(fā)起內(nèi)核存儲(chǔ)器的存儲(chǔ)器轉(zhuǎn)儲(chǔ)。轉(zhuǎn)儲(chǔ)程序214可以是Linux內(nèi)核轉(zhuǎn)儲(chǔ)機(jī)制,諸如Kdump工具。當(dāng)被啟動(dòng)時(shí),轉(zhuǎn)儲(chǔ)程序214將嵌入式設(shè)備200的當(dāng)前情境存儲(chǔ)在嵌入式設(shè)備200的存儲(chǔ)器中并且向存儲(chǔ)器中的特定頁(yè)寫入簽名。
[0027]嵌入式設(shè)備200還包括各種應(yīng)用程序206,該應(yīng)用程序包括看門狗計(jì)時(shí)器216及其他??撮T狗計(jì)時(shí)器216是用于在嵌入式設(shè)備200中檢測(cè)故障并且從故障恢復(fù)的電子計(jì)時(shí)器。具體地,看門狗計(jì)時(shí)器216被用于當(dāng)系統(tǒng)掛起的情況下啟用嵌入式設(shè)備200中的存儲(chǔ)器轉(zhuǎn)儲(chǔ)功能。在嵌入式設(shè)備200的正常操作中,嵌入式設(shè)備200定期地重新啟動(dòng)看門狗計(jì)時(shí)器216以防止看門狗計(jì)時(shí)器216超時(shí)。如果嵌入式設(shè)備200由于系統(tǒng)掛起重新啟動(dòng)看門狗計(jì)時(shí)器216失敗,看門狗計(jì)時(shí)器216延續(xù)并且生成超時(shí)信號(hào)。超時(shí)信號(hào)被用于發(fā)起改正動(dòng)作,諸如將當(dāng)前情境存儲(chǔ)器轉(zhuǎn)儲(chǔ)到嵌入式設(shè)備200的存儲(chǔ)器中并且重新啟動(dòng)嵌入式設(shè)備200。具體地,在圖1所述的存儲(chǔ)器轉(zhuǎn)儲(chǔ)和分析系統(tǒng)的上下文中,看門狗計(jì)時(shí)器216能夠被選擇在嵌入式設(shè)備102中啟動(dòng),并且當(dāng)嵌入式設(shè)備102被重新啟動(dòng)時(shí),可以檢測(cè)到該重新啟動(dòng)是否由看門狗計(jì)時(shí)器216引起。如果看門狗計(jì)時(shí)器216是該重新啟動(dòng)的原因,進(jìn)一步的存儲(chǔ)器轉(zhuǎn)儲(chǔ)程序會(huì)被執(zhí)行。以此方式使用看門狗計(jì)時(shí)器216,存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析在系統(tǒng)掛起的情況下被執(zhí)行。
[0028]主機(jī)設(shè)備250包括用于執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的事后分析的崩潰工具應(yīng)用252的修改版本。如上文解釋,崩潰工具是Linux內(nèi)核轉(zhuǎn)儲(chǔ)映射分析工具,其被用于直接分析存儲(chǔ)在主機(jī)設(shè)備250中的轉(zhuǎn)儲(chǔ)的映射文件。原始的崩潰工具應(yīng)用只提供查看簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)內(nèi)容并且缺少用于恢復(fù)文件系統(tǒng)和文件內(nèi)容的功能。崩潰工具應(yīng)用252的修改版本增加了用于恢復(fù)文件系統(tǒng)和文件內(nèi)容的功能。文件系統(tǒng)和文件內(nèi)容的恢復(fù)將參考圖7在下面更詳細(xì)地解釋。
[0029]圖3是圖示用于響應(yīng)于內(nèi)核嚴(yán)重錯(cuò)誤或者系統(tǒng)掛起而執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析的示例方法的流程圖300。在302處,在計(jì)算機(jī)系統(tǒng)中檢測(cè)內(nèi)核嚴(yán)重錯(cuò)誤。在304處,Linux內(nèi)核轉(zhuǎn)儲(chǔ)機(jī)制(例如,Kdump)將計(jì)算機(jī)系統(tǒng)的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器中并且向存儲(chǔ)器的特定頁(yè)面寫入簽名。如上文參考圖1解釋,Linux內(nèi)核或者Linux內(nèi)核轉(zhuǎn)儲(chǔ)機(jī)制不需要在運(yùn)行期間特別地預(yù)留空間以載入在崩潰情況下被觸發(fā)的第二內(nèi)核。因?yàn)橛?jì)算機(jī)系統(tǒng)中的一些存儲(chǔ)器被組合預(yù)留為視頻存儲(chǔ)器,這些存儲(chǔ)器在存儲(chǔ)器轉(zhuǎn)儲(chǔ)和分析過(guò)程中沒有用至IJ。因此,存儲(chǔ)器轉(zhuǎn)儲(chǔ)的位置和引導(dǎo)程序的運(yùn)行空間可以被限制于該區(qū)域。以此方式使用視頻存儲(chǔ)器,當(dāng)Linux內(nèi)核正常運(yùn)行時(shí)具有最小的影響,因此,不必要預(yù)留存儲(chǔ)器的一部分以用作內(nèi)核轉(zhuǎn)儲(chǔ)區(qū)域。
[0030]在306處,重新啟動(dòng)計(jì)算機(jī)系統(tǒng)。在308處,計(jì)算機(jī)系統(tǒng)執(zhí)行引導(dǎo)(即引導(dǎo)加載程序)程序(例如,U-boot或者其修改版本),并且引導(dǎo)程序在啟動(dòng)過(guò)程中檢測(cè)簽名。當(dāng)檢測(cè)到簽名時(shí),啟動(dòng)過(guò)程被中斷并且根據(jù)存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析的進(jìn)一步過(guò)程被執(zhí)行。在310處,在計(jì)算機(jī)系統(tǒng)和主機(jī)設(shè)備之間的連接被建立后,存儲(chǔ)器轉(zhuǎn)儲(chǔ)的數(shù)據(jù)(即存儲(chǔ)在存儲(chǔ)器中的當(dāng)前情境)經(jīng)由USB協(xié)議被上傳到主機(jī)設(shè)備。在312處,主機(jī)設(shè)備執(zhí)行對(duì)存儲(chǔ)器轉(zhuǎn)儲(chǔ)的數(shù)據(jù)的分析。該分析包括,例如,恢復(fù)文件系統(tǒng)和文件內(nèi)容。
[0031]可替換地,如上文關(guān)于圖1和2所述,用于執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析的示例方法還可以由系統(tǒng)掛起觸發(fā)。為了在系統(tǒng)掛起的情況下啟用存儲(chǔ)器轉(zhuǎn)儲(chǔ),在314處,在計(jì)算機(jī)系統(tǒng)中啟動(dòng)看門狗計(jì)時(shí)器。在316處,看門狗計(jì)時(shí)器檢測(cè)到系統(tǒng)掛起。當(dāng)檢測(cè)到系統(tǒng)掛起時(shí),存儲(chǔ)器轉(zhuǎn)儲(chǔ)程序被發(fā)起。因此,存儲(chǔ)器轉(zhuǎn)儲(chǔ)機(jī)制可以將計(jì)算機(jī)系統(tǒng)的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器中并且向存儲(chǔ)器的特定頁(yè)面寫入簽名。Linux內(nèi)核或者Linux內(nèi)核轉(zhuǎn)儲(chǔ)機(jī)制不需要在運(yùn)行期間特別地預(yù)留空間以載入在系統(tǒng)掛起情況下被觸發(fā)的第二內(nèi)核。如上文所述,用于存儲(chǔ)器轉(zhuǎn)儲(chǔ)的存儲(chǔ)器區(qū)域是一般被預(yù)留為視頻存儲(chǔ)器的區(qū)域。
[0032]在318處,重新啟動(dòng)計(jì)算機(jī)系統(tǒng)。在320處,在計(jì)算機(jī)系統(tǒng)的重新啟動(dòng)期間,做出關(guān)于看門狗計(jì)時(shí)器超時(shí)是否是重新啟動(dòng)的原因的確定。如果確定看門狗計(jì)時(shí)器超時(shí)是重新啟動(dòng)的原因,則進(jìn)一步的存儲(chǔ)器轉(zhuǎn)儲(chǔ)程序被執(zhí)行。接著,上述步驟308、310和312,隨后響應(yīng)于系統(tǒng)掛起而被執(zhí)行以完成存儲(chǔ)器轉(zhuǎn)儲(chǔ)和事后分析。
[0033]圖4是圖示將存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)從嵌入式設(shè)備402轉(zhuǎn)移到主機(jī)設(shè)備404中使用的示例上傳協(xié)議的方面的框圖400。如框圖400所示,嵌入式設(shè)備402和主機(jī)設(shè)備404兩者分別包括USB接口,406和408。在圖4的示例中,在嵌入式設(shè)備402和主機(jī)設(shè)備404之間的連接被建立后,存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)經(jīng)由USB協(xié)議被從嵌入式設(shè)備402上傳到主機(jī)設(shè)備404。主機(jī)設(shè)備404可以是個(gè)人計(jì)算機(jī)(PC),其被配置為對(duì)上傳到主機(jī)設(shè)備404的存儲(chǔ)器轉(zhuǎn)儲(chǔ)數(shù)據(jù)執(zhí)行分析和文件恢復(fù)。
[0034]圖4的示例上傳協(xié)議在主機(jī)設(shè)備404向嵌入式設(shè)備402發(fā)送USB分組時(shí)被發(fā)起。USB分組的內(nèi)容是“上傳〈起始地址 >:〈大小 >”,如410所示。USB分組的內(nèi)容的示例是“上傳0:0χ1000,”,其是對(duì)嵌入式設(shè)備402的指令,用于從地址0上傳0x1000的存儲(chǔ)器內(nèi)容。在發(fā)送存儲(chǔ)器請(qǐng)求分組之后,主機(jī)設(shè)備404準(zhǔn)備好從USB接口 408讀取〈大小 > 的USB數(shù)據(jù)。在接收“上傳〈起始地址 >:< 大小 >”指令之后,嵌入式設(shè)備402根據(jù)指令410經(jīng)由USB接口 406上傳〈大小〉的存儲(chǔ)器內(nèi)容412。嵌入式設(shè)備402隨后等待下一指令。在經(jīng)由USB接口 408接收USB〈大小 > 的數(shù)據(jù)412之后,主機(jī)設(shè)備404讀取USB數(shù)據(jù)并且將數(shù)據(jù)存儲(chǔ)為映射文件414。映射文件可以在主機(jī)設(shè)備404中經(jīng)由Linux內(nèi)核轉(zhuǎn)儲(chǔ)映射分析工具被分析。
[0035]圖5是圖示用于數(shù)據(jù)在上傳之前允許被壓縮的上傳協(xié)議的示例方法的流程圖500。參考圖4,主機(jī)設(shè)備向嵌入式設(shè)備發(fā)送形式為“上傳〈起始地址 >:〈大小 >”的指令,其被用于指示嵌入式設(shè)備上傳從特定存儲(chǔ)器地址開始的特定存儲(chǔ)器內(nèi)容。圖5的示例方法被用于壓縮由〈起始地址 >:〈大小 > 指定的存儲(chǔ)器區(qū)間并且此后將經(jīng)壓縮的存儲(chǔ)器區(qū)間上傳到主機(jī)設(shè)備。壓縮可以通過(guò)多種壓縮庫(kù)執(zhí)行,包括例如“zlib”壓縮庫(kù)。
[0036]在502處,因?yàn)樽罱K壓縮大小可能不被準(zhǔn)確預(yù)測(cè),上傳協(xié)議采用具有固定大小Μ的臨時(shí)存儲(chǔ)空間作為中間存儲(chǔ)量。使用大小為Μ的中間存儲(chǔ),中間協(xié)議執(zhí)行(〈大小>+Μ-1)/Μ壓縮過(guò)程。在504處,每個(gè)壓縮過(guò)程將從〈起始地址 > 開始大小為Μ的內(nèi)存壓縮成中間存儲(chǔ)以形成大小為Ν的經(jīng)壓縮的內(nèi)存。在506處,嵌入式設(shè)備通知主機(jī)設(shè)備關(guān)于壓縮后的大小Ν。一種為“ZIP〈壓縮后大小〉”的協(xié)議格式被使用,其中〈壓縮后大小〉是由八個(gè)(8)字符表示的字類型數(shù)據(jù)結(jié)構(gòu)。在508處,在接收到“ZIP〈壓縮后大小 >”指令之后,主機(jī)設(shè)備準(zhǔn)備好讀取〈壓縮后大小 > 的USB分組。在接收到〈壓縮后大小 > 的USB分組之后,主機(jī)設(shè)備等待下一個(gè)“ZIP〈壓縮后大小 >”分組。當(dāng)〈壓縮后大小 > 為0時(shí),主機(jī)設(shè)備確定傳輸過(guò)程完畢,并且所有接收的數(shù)據(jù)被存儲(chǔ)在映射文件中。
[0037]圖6是計(jì)算機(jī)系統(tǒng)中的Linux存儲(chǔ)器轉(zhuǎn)儲(chǔ)的示例使用模式的框圖600。在602處,Linux內(nèi)核被啟動(dòng)。在603處,看門狗計(jì)時(shí)器在系統(tǒng)掛起的情況下被重置,并且在604處,警示器被寄存(register)。在內(nèi)核引導(dǎo)期間或者之后寄存看門狗計(jì)時(shí)器允許看門狗計(jì)時(shí)器發(fā)揮作用,使得如果看門狗計(jì)時(shí)器沒有在特定時(shí)間內(nèi)被重置(即發(fā)生系統(tǒng)掛起),則使得系統(tǒng)執(zhí)行重置操作。如圖6所示,當(dāng)重置操作由于看門狗計(jì)時(shí)器而執(zhí)行時(shí),該信息在啟動(dòng)處被U-boot引導(dǎo)加載程序工具檢測(cè)到,使得存儲(chǔ)器轉(zhuǎn)儲(chǔ)操作被執(zhí)行。
[0038]在605處,發(fā)生系統(tǒng)崩潰,并且在606處,簽名在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中被更新并且緩存被清除。進(jìn)一步,在此刻,復(fù)用Linux內(nèi)核轉(zhuǎn)儲(chǔ)機(jī)制(例如,K-dump)通過(guò)將當(dāng)前情境存儲(chǔ)到計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中以執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。在608處,計(jì)算機(jī)系統(tǒng)被重啟。在610處,U-boot引導(dǎo)加載程序工具或者另一類似計(jì)算機(jī)程序被執(zhí)行。U-boot引導(dǎo)加載程序工具或者其它類似程序檢測(cè)寫入到存儲(chǔ)器的簽名并且中斷正常啟動(dòng)過(guò)程。U-boot引導(dǎo)加載程序工具或者其它類似程序適合用于存儲(chǔ)器存儲(chǔ),并且U-boot弓|導(dǎo)加載程序工具或者其它類似程序的運(yùn)行空間的位置能夠被限制于被組合預(yù)留作為視頻存儲(chǔ)器區(qū)域。U-boot引導(dǎo)加載程序工具或者其它類似程序的被限制于其中的存儲(chǔ)器區(qū)域是Linux內(nèi)核轉(zhuǎn)儲(chǔ)機(jī)制存儲(chǔ)了當(dāng)前情境的存儲(chǔ)器區(qū)域。在612處,包括上傳功能的快速啟動(dòng)協(xié)議的修改版本被啟動(dòng)。在614處,存儲(chǔ)器轉(zhuǎn)儲(chǔ)的內(nèi)容被上傳到PC端。上傳可以經(jīng)由USB協(xié)議進(jìn)行,并且PC端口可以被包括作為主機(jī)設(shè)備的一部分,其中主機(jī)設(shè)備被配置為接收存儲(chǔ)器轉(zhuǎn)儲(chǔ)內(nèi)容并且執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)內(nèi)容的分析和文件恢復(fù)。
[0039]圖7是圖示用于從存儲(chǔ)器恢復(fù)文件系統(tǒng)和文件內(nèi)容的示例過(guò)程的流程圖700。在Linux中,ramfs/tmpfs文件系統(tǒng)的實(shí)現(xiàn)基于頁(yè)面快速緩存,以至于ramfs/tmpfs沒有實(shí)際的后端存儲(chǔ)設(shè)備,并且所有文件實(shí)際上被存儲(chǔ)在存儲(chǔ)器中(即對(duì)應(yīng)的分配頁(yè)面的頁(yè)面快速緩存)。只要能夠獲得期望恢復(fù)的文件的inode (索引節(jié)點(diǎn))地址,文件的內(nèi)容就能夠通過(guò)對(duì)應(yīng)的基數(shù)樹被恢復(fù)。在tmpfs文件夾中的文件還可以從Linux VFS層次結(jié)構(gòu)訪問(wèn)。該結(jié)構(gòu)類似于樹,使得如果節(jié)點(diǎn)要被定位,則節(jié)點(diǎn)的定位從樹的根點(diǎn)開始。
[0040]尋找樹的根點(diǎn)可以使用能夠從當(dāng)前任務(wù)結(jié)構(gòu)、立即訪問(wèn)的數(shù)據(jù)開始。在702處,圖
7圖示了用于當(dāng)前任務(wù)結(jié)構(gòu)的摘要信息,指示其具有用于具有“struct nsproxy”結(jié)構(gòu)類型的nsproxy (根類)的成員。在704處,nsproxy結(jié)構(gòu)被示出,圖示其具有mnt_ns成員,該成員具有“struct mnt_namespace”結(jié)構(gòu)類型。在705處,mnt_namespace結(jié)構(gòu)被不出,圖不其具有root成員,該成員具有“struct mount”結(jié)構(gòu)類型。在706處,mount結(jié)構(gòu)被示出,圖示其具有mnt_list成員,該成員具有“struct list_head”結(jié)構(gòu)類型。
[0041]在708處,通過(guò)在被之前的mnt_list指向的列表中循環(huán),能夠獲得每個(gè)表示安裝點(diǎn)(mount point)的vfsmount結(jié)構(gòu)。mount結(jié)構(gòu)已經(jīng)包含vfsmount結(jié)構(gòu),以至于while循環(huán)能夠被用于獲得mount結(jié)構(gòu)鏈并且隨后推斷vfsmount鏈。在710處,vfsmount結(jié)構(gòu)具有mnt_root成員,該成員具有struct dentry結(jié)構(gòu)類型。dentry結(jié)構(gòu)具有d_subdirs成員,該成員具有“struct list_head”結(jié)構(gòu)類型。在712處,所有子目錄的dentry節(jié)點(diǎn)被附接到它的上層目錄項(xiàng)d_subdirs list_head指針上。通過(guò)在d_subdirs中循環(huán),能夠獲得所有子目錄的目錄項(xiàng)struct。在714處,目錄項(xiàng)結(jié)構(gòu)具有d_inode成員,該成員具有“structinode”結(jié)構(gòu)類型,以及d_name成員,該成員具有“struct qstr”結(jié)構(gòu)類型,其中能夠根據(jù)該成員確定找到的文件是否已經(jīng)被恢復(fù)。在716處,inode結(jié)構(gòu)具有i_mapping成員,該成員具有 “struct address_space” 結(jié)構(gòu)類型。在 718 處,address_space 結(jié)構(gòu)具有 page_tree成員,該成員具有“struct radix_tree_root”結(jié)構(gòu)類型。在720處,因?yàn)橐粋€(gè)基數(shù)樹的根點(diǎn)可以在718處獲得,其中一個(gè)基數(shù)樹內(nèi)容的根點(diǎn)存儲(chǔ)數(shù)據(jù)的一個(gè)頁(yè)面,通過(guò)從樹的當(dāng)前節(jié)點(diǎn)出發(fā),能夠獲得所有包含原始文件的頁(yè)面。以此方式,tmpfs中的文件可以被恢復(fù)。
[0042]圖8是圖示用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的示例方法的流程圖800。在802處,在計(jì)算機(jī)系統(tǒng)中檢測(cè)觸發(fā)事件。計(jì)算機(jī)系統(tǒng)被配置為檢測(cè)內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者并且如果內(nèi)核嚴(yán)重錯(cuò)誤或者系統(tǒng)掛起被檢測(cè)到,則執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。響應(yīng)于檢測(cè)到觸發(fā)事件而在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。在804處,將計(jì)算機(jī)系統(tǒng)的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器設(shè)備的一部分中。存儲(chǔ)當(dāng)前情境而不在檢測(cè)到觸發(fā)事件之前預(yù)留該部分。在806處,重新啟動(dòng)計(jì)算機(jī)系統(tǒng)并且執(zhí)行引導(dǎo)程序,其中引導(dǎo)程序的運(yùn)行空間被限制于存儲(chǔ)器設(shè)備的gai部分。在808處,引導(dǎo)程序被用于將當(dāng)前情境上傳到主機(jī)設(shè)備。
[0043]此書面描述使用示例來(lái)公開本發(fā)明,包括最佳模式,并且也能夠使本領(lǐng)域技術(shù)人員制作和使用本發(fā)明。本發(fā)明的專利范圍可以包括其它示例。另外,此處所述方法和系統(tǒng)可以通過(guò)包括能夠被設(shè)備處理子系統(tǒng)執(zhí)行的程序指令的程序代碼而被實(shí)現(xiàn)在很多不同類型的處理設(shè)備上。軟件程序指令包括源代碼、對(duì)象代碼、機(jī)器代碼或者任何其它被存儲(chǔ)的數(shù)據(jù),其可操作以使得處理系統(tǒng)執(zhí)行此處所述方法和操作。然而,其它實(shí)施方式也可以被使用,諸如被配置為執(zhí)行此處所述方法和系統(tǒng)的固件或者甚至適當(dāng)設(shè)計(jì)的硬件。
[0044]系統(tǒng)數(shù)據(jù)和方法的數(shù)據(jù)(例如,關(guān)聯(lián)、映射、數(shù)據(jù)輸入、數(shù)據(jù)輸出、中間數(shù)據(jù)結(jié)果、最終數(shù)據(jù)結(jié)果等)可以在一個(gè)或者多個(gè)不同類型的計(jì)算機(jī)執(zhí)行數(shù)據(jù)存儲(chǔ)中被存儲(chǔ)和實(shí)現(xiàn),諸如不同類型的存儲(chǔ)器設(shè)備和編程結(jié)構(gòu)(例如,RAM、ROM、閃速存儲(chǔ)器、平面文件、數(shù)據(jù)庫(kù)、編程數(shù)據(jù)結(jié)構(gòu)、編程變量、IF-THEN(或者類似類型)聲明結(jié)構(gòu)等)。需要注意,數(shù)據(jù)類型描述用于在數(shù)據(jù)庫(kù)、程序、存儲(chǔ)器或者其它計(jì)算機(jī)可讀媒體中組織和存儲(chǔ)數(shù)據(jù)以供計(jì)算機(jī)程序使用的格式。
[0045]此處所述的計(jì)算機(jī)組件,軟件模塊,功能,數(shù)據(jù)存儲(chǔ)以及數(shù)據(jù)結(jié)構(gòu)可以直接或者間接彼此聯(lián)系以允許其操作所需的數(shù)據(jù)流。還需注意,模塊或者處理器包括但不限于執(zhí)行軟件操作的代碼單元,并且包括能夠作為例如,子例程代碼單元,或者軟件函數(shù)代碼單元,或者對(duì)象(例如在面向?qū)ο蠓妒街?,或者小程序,或者用計(jì)算機(jī)腳本語(yǔ)言,或者另一種類型計(jì)算機(jī)代碼執(zhí)行的代碼單元。軟件組件和/或功能可以根據(jù)所處情況,位于單個(gè)計(jì)算機(jī)或者跨多個(gè)計(jì)算機(jī)分布。
[0046]應(yīng)該明白此處所述以及下面權(quán)利要求中通篇所使用的,“一個(gè)” “一種”以及“該”的意義包括復(fù)數(shù)引用,除非上下文另外明確指出。同時(shí),此處所述中以及下面權(quán)利要求中通篇所使用的,“在……中”的意義包括“在……中”和“在……上”,除非上下文另外明確指出。另外,此處所述中以及下面權(quán)利要求中通篇所使用的,“每個(gè)”的意義不要求“每個(gè)并且每一個(gè)”,除非上下文另外明確指出。最后,此處所述中以及下面權(quán)利要求中通篇所使用的,“和”和“或”的意義包括連接意義和分隔意義兩者并且可以互換使用,除非上下文另外明確指出;短語(yǔ)“排他地”可以用于表示只適用于分隔意義的情況。
【權(quán)利要求】
1.一種用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的方法,所述方法包括: 在所述計(jì)算機(jī)系統(tǒng)中檢測(cè)觸發(fā)事件,所述計(jì)算機(jī)系統(tǒng)被配置為檢測(cè)內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者并且如果所述內(nèi)核嚴(yán)重錯(cuò)誤和所述系統(tǒng)掛起兩者之一被檢測(cè)到則執(zhí)行所述存儲(chǔ)器轉(zhuǎn)儲(chǔ);以及 響應(yīng)于檢測(cè)到所述觸發(fā)事件而在所述計(jì)算機(jī)系統(tǒng)中執(zhí)行所述存儲(chǔ)器轉(zhuǎn)儲(chǔ),所述執(zhí)行包括: 將所述計(jì)算機(jī)系統(tǒng)的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器設(shè)備的一部分中,所述當(dāng)前情境被存儲(chǔ)而不在檢測(cè)到所述觸發(fā)事件之前預(yù)留所述部分, 重新啟動(dòng)所述計(jì)算機(jī)系統(tǒng)并且執(zhí)行引導(dǎo)程序,所述引導(dǎo)程序的運(yùn)行空間被限制于所述存儲(chǔ)器設(shè)備的所述部分,以及 使用所述引導(dǎo)程序?qū)⑺霎?dāng)前情境上傳到主機(jī)設(shè)備。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 將所述計(jì)算機(jī)系統(tǒng)的所述當(dāng)前情境存儲(chǔ)在所述存儲(chǔ)器設(shè)備的所述部分中,其中所述部分是視頻存儲(chǔ)器,所述視頻存儲(chǔ)器被配置為在檢測(cè)到所述觸發(fā)事件之前存儲(chǔ)所述當(dāng)前情境之外的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 使用所述引導(dǎo)程序?qū)⑺霎?dāng)前情境上傳到所述主機(jī)設(shè)備,其中所述當(dāng)前情境經(jīng)由通用串行總線(USB)協(xié)議被上傳。
4.根據(jù)權(quán)利要求3所述的方法,其中使用所述引導(dǎo)程序上傳所述當(dāng)前情境包括: 在所述計(jì)算機(jī)系統(tǒng)處接收USB分組,其中所述USB分組包括指示要被上傳到所述主機(jī)設(shè)備的數(shù)據(jù)的起始地址和大小的指令; 基于所述指令壓縮所述存儲(chǔ)器設(shè)備的所述部分的存儲(chǔ)器區(qū)間;以及 將壓縮的所述存儲(chǔ)器區(qū)間經(jīng)由所述USB協(xié)議從所述計(jì)算機(jī)系統(tǒng)上傳到所述主機(jī)設(shè)備。
5.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 在所述計(jì)算機(jī)系統(tǒng)中執(zhí)行所述存儲(chǔ)器轉(zhuǎn)儲(chǔ),其中所述執(zhí)行使用單個(gè)操作系統(tǒng)內(nèi)核被進(jìn)行。
6.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 利用看門狗計(jì)時(shí)器檢測(cè)所述系統(tǒng)掛起,其中所述檢測(cè)使得所述計(jì)算機(jī)系統(tǒng)重新啟動(dòng)并且使得所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)被執(zhí)行。
7.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 在所述主機(jī)設(shè)備處將所述當(dāng)前情境存儲(chǔ)在映射文件中;以及 在所述主機(jī)設(shè)備處經(jīng)由內(nèi)核轉(zhuǎn)儲(chǔ)映射分析工具來(lái)分析所述映射文件。
8.根據(jù)權(quán)利要求7所述的方法,進(jìn)一步包括: 在所述主機(jī)設(shè)備處經(jīng)由所述內(nèi)核轉(zhuǎn)儲(chǔ)映射分析工具來(lái)分析所述映射文件,其中所述分析被配置為恢復(fù)所述當(dāng)前情境的文件系統(tǒng)和文件內(nèi)容。
9.根據(jù)權(quán)利要求1所述的方法,其中所述計(jì)算機(jī)系統(tǒng)是嵌入式設(shè)備。
10.根據(jù)權(quán)利要求9所述的方法,其中所述嵌入式設(shè)備是智能電話。
11.一種用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)的計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng),所述計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)包括: 處理器;以及 計(jì)算機(jī)可讀存儲(chǔ)器,所述計(jì)算機(jī)可讀存儲(chǔ)器被編碼有用于命令所述處理器執(zhí)行如下操作的指令: 在所述計(jì)算機(jī)系統(tǒng)中檢測(cè)觸發(fā)事件,所述計(jì)算機(jī)系統(tǒng)被配置為檢測(cè)內(nèi)核嚴(yán)重錯(cuò)誤和系統(tǒng)掛起兩者并且如果所述內(nèi)核嚴(yán)重錯(cuò)誤和所述系統(tǒng)掛起兩者之一被檢測(cè)到時(shí)則執(zhí)行所述存儲(chǔ)器轉(zhuǎn)儲(chǔ);以及 響應(yīng)于檢測(cè)到所述觸發(fā)事件而在所述計(jì)算機(jī)系統(tǒng)中執(zhí)行所述存儲(chǔ)器轉(zhuǎn)儲(chǔ),所述執(zhí)行包括: 將所述計(jì)算機(jī)系統(tǒng)的當(dāng)前情境存儲(chǔ)在存儲(chǔ)器設(shè)備的一部分中,所述當(dāng)前情境被存儲(chǔ)而不在檢測(cè)到所述觸發(fā)事件之前預(yù)留所述部分。 重新啟動(dòng)所述計(jì)算機(jī)系統(tǒng)并且執(zhí)行引導(dǎo)程序,所述引導(dǎo)程序的運(yùn)行空間被限制于所述存儲(chǔ)器設(shè)備的所述部分,以及 使用所述引導(dǎo)程序?qū)⑺霎?dāng)前情境上傳到主機(jī)設(shè)備。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述部分是視頻存儲(chǔ)器,所述視頻存儲(chǔ)器被配置為在檢測(cè)到所述觸發(fā)事件之前存儲(chǔ)所述當(dāng)前情境之外的數(shù)據(jù)。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述當(dāng)前情境經(jīng)由通用串行總線(USB)協(xié)議被上傳。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中使用所述引導(dǎo)程序上傳所述當(dāng)前情境包括: 在所述計(jì)算機(jī)系統(tǒng)處接收USB分組,其中所述USB分組包括指示要被上傳到所述主機(jī)設(shè)備的數(shù)據(jù)的起始地址和大小的指令; 基于所述指令壓縮所述存儲(chǔ)器設(shè)備的所述部分的存儲(chǔ)器區(qū)間;以及 將壓縮的所述存儲(chǔ)器區(qū)間經(jīng)由所述USB協(xié)議從所述計(jì)算機(jī)系統(tǒng)上傳到所述主機(jī)設(shè)備。
15.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述執(zhí)行使用單個(gè)操作系統(tǒng)內(nèi)核被進(jìn)行。
16.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述操作進(jìn)一步包括: 利用看門狗計(jì)時(shí)器檢測(cè)所述系統(tǒng)掛起,其中所述檢測(cè)使得所述計(jì)算機(jī)系統(tǒng)重新啟動(dòng)并且使得所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)被執(zhí)行。
17.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述操作進(jìn)一步包括: 在所述主機(jī)設(shè)備處將所述當(dāng)前情境存儲(chǔ)在映射文件中;以及 在所述主機(jī)設(shè)備處經(jīng)由內(nèi)核轉(zhuǎn)儲(chǔ)映射分析工具來(lái)分析所述映射文件。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述分析被配置為恢復(fù)所述當(dāng)前情境的文件系統(tǒng)和文件內(nèi)容。
19.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)是嵌入式設(shè)備。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中所述嵌入式設(shè)備是智能電話。
【文檔編號(hào)】G06F11/07GK104254840SQ201380021626
【公開日】2014年12月31日 申請(qǐng)日期:2013年4月17日 優(yōu)先權(quán)日:2012年4月27日
【發(fā)明者】聞磊 申請(qǐng)人:馬維爾國(guó)際貿(mào)易有限公司