新四季網

在計算機系統中的存儲器轉儲和分析的製作方法

2023-05-11 06:07:21

在計算機系統中的存儲器轉儲和分析的製作方法
【專利摘要】本發明提供了一種用於在計算機系統中執行存儲器轉儲的系統和方法。在計算機系統中檢測到一個觸發事件。該計算機系統被配置用於檢測內核嚴重錯誤和系統掛起兩者,並且如果內核嚴重錯誤和系統掛起兩者之一被檢測到,則執行存儲器轉儲。響應於檢測到觸發事件而在計算機系統中執行存儲器轉儲。存儲器轉儲的執行包括將計算機系統的當前情境存儲在存儲器的一部分。存儲當前情境而不在檢測到觸發事件之前預留該部分。重新啟動該計算機系統並且執行引導程序,其中該引導程序的運行空間被限制於存儲器的該部分。該引導程序被用於將當前情境上傳到主機設備。
【專利說明】在計算機系統中的存儲器轉儲和分析
[0001]相關申請的交叉引用
[0002]本公開要求於2012年4月27日提交的第61/639,456號美國臨時專利申請的優先權。該申請全部內容通過引用的方式併入於此。

【技術領域】
[0003]本文檔中所述的技術總體涉及用於在計算機系統中執行存儲器轉儲的系統和方法,尤其涉及在執行嵌入式設備中執行存儲器轉儲和事後分析的系統和方法。

【背景技術】
[0004]隨著信息通信技術的廣泛使用,信息處理系統,諸如桌面計算機,筆記本計算機,或者嵌入式設備(例如智慧型電話,個人數字助理,平板計算機)應該展示出高度的可靠性。當在信息處理系統運行期間出現故障時,立即收集關於故障的信息並且在此之後繼續系統的正常運行可以是重要的。信息處理系統中一種可能出現的故障的一個示例是內核嚴重錯誤(panic)。內核嚴重錯誤是當信息處理系統的作業系統(0S)檢測到系統無法安全從其恢復的致命錯誤時採取的動作。當檢測到內核嚴重錯誤時,系統可以向顯示設備輸出錯誤消息並且執行存儲器轉儲以用於事後調試。存儲器轉儲被用於當檢測到致命問題的時刻存儲系統的存儲器的內容。通常,0S或者在0S內核中操作的程序執行轉儲過程。例如,當系統的中央處理器(CPU)接收到指示出現致命錯誤的中斷信號時,CPU可以將控制傳遞給OS內核中的存儲器轉儲程序以執行存儲器轉儲操作。


【發明內容】

[0005]本公開針對用於在計算機系統中執行存儲器轉儲的系統和方法。在一種用於在計算機系統中執行存儲器轉儲的方法中,在計算機系統中檢測觸發事件。該計算機系統被配置為檢測內核嚴重錯誤和系統掛起,並且如果內核嚴重錯誤和系統掛起兩者之一被檢測到則執行存儲器轉儲。響應於檢測到觸發事件,在計算機系統中執行存儲器轉儲。存儲器轉儲的執行包括將計算機系統的當前情境存儲在存儲器設備的一部分中。存儲當前情境而不在檢測到觸發事件之前預留該部分。重新啟動計算機系統並且執行引導程序,其中該引導程序的運行空間被限制於存儲器設備的該部分。該引導程序被用於將當前情境上傳到主機設備。
[0006]在另一示例中,一種用於在計算機系統中執行存儲器轉儲的系統包括處理器以及被編碼有用於命令處理器執行操作的指令的計算機可讀存儲器。該操作包括在計算機系統中檢測觸發事件,其中計算機系統被配置為檢測內核嚴重錯誤和系統掛起兩者,並且如果內核嚴重錯誤和系統掛起兩者之一被檢測到則執行存儲器轉儲。該操作還包括響應於檢測到觸發事件而在計算機系統中執行存儲器轉儲。該執行包括將計算機系統的當前情境存儲在存儲器設備的一部分中,其中存儲當前情境而不在檢測到觸發事件之前預留該部分。重新啟動計算機系統並且執行引導程序,其中該引導程序的運行空間被限制於存儲器設備的該部分。該引導程序被用於將當前情境上傳到主機設備。

【專利附圖】

【附圖說明】
[0007]圖1是描繪用於執行存儲器轉儲和事後分析的示例嵌入式設備和主機設備的框圖。
[0008]圖2是圖示說明嵌入式設備和主機設備內的示例軟體結構的圖。
[0009]圖3是圖示用於執行響應於內核嚴重錯誤或系統掛起的存儲器轉儲和事後分析的示例方法的流程圖。
[0010]圖4是圖示在將存儲器轉儲數據從嵌入式設備轉移到主機設備中使用的示例上傳協議的方面的框圖。
[0011]圖5是圖示一種用於允許數據在上傳之前被壓縮的上傳協議的示例方法的流程圖。
[0012]圖6是計算機系統中的Linux存儲器轉儲的示例使用模式的框圖。
[0013]圖7是圖示用於從存儲器恢復文件系統和文件內容的示例過程的流程圖。
[0014]圖8是圖示用於在計算機系統中執行存儲器轉儲的示例方法的流程圖。

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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀