亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

操作系統(tǒng)發(fā)生核心崩潰情況下讀取完整核心日志的方法

文檔序號(hào):6490851閱讀:214來(lái)源:國(guó)知局
操作系統(tǒng)發(fā)生核心崩潰情況下讀取完整核心日志的方法
【專利摘要】本發(fā)明是一種操作系統(tǒng)發(fā)生核心崩潰情況下讀取完整核心日志的方法,該方法應(yīng)用于一終端裝置上,該終端裝置包括一中央處理單元及一存儲(chǔ)器單元,該存儲(chǔ)器單元與中央處理單元相電氣連接,且至少包括一核心運(yùn)作區(qū)、一核心緩沖區(qū)、一日志備份區(qū)及一用戶數(shù)據(jù)區(qū),其中核心運(yùn)作區(qū)內(nèi)儲(chǔ)存有一系統(tǒng)核心,該中央處理單元能藉由系統(tǒng)核心執(zhí)行一操作系統(tǒng),且產(chǎn)生一核心日志,并將該核心日志分別儲(chǔ)存至該核心緩沖區(qū)及該日志備份區(qū)中,當(dāng)該中央處理單元被復(fù)位重置時(shí),其會(huì)執(zhí)行一核心模塊初始化程序,并將日志備份區(qū)中的核心日志,導(dǎo)出儲(chǔ)存至用戶數(shù)據(jù)區(qū)。如此,由于該日志備份區(qū)自存儲(chǔ)器單元中額外開辟,故不會(huì)受核心崩潰影響而毀損。
【專利說(shuō)明】操作系統(tǒng)發(fā)生核心崩潰情況下讀取完整核心日志的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明有關(guān)于在操作系統(tǒng)發(fā)生核心崩潰后,讀取核心日志的方法,尤指一種中央處理單元被進(jìn)行復(fù)位重置后,即能完整導(dǎo)出核心日志的方法。
【背景技術(shù)】
[0002]由于Linux具有自由軟件(Free Software)與開放原始碼(Open Source)等特性,意即,只要使用者或企業(yè)是遵循GNU通用公眾授權(quán)條款(GNU General Public License,簡(jiǎn)稱GNU GPL或GPL)的內(nèi)容,便能夠自由地使用Linux核心(或稱為L(zhǎng)inux內(nèi)核)的所有底層原始碼,亦能夠自由地修改系統(tǒng)軟件與再發(fā)布修改后的系統(tǒng)軟件。由于Linux能供使用者(企業(yè)或個(gè)人)自由地對(duì)其進(jìn)行最大程度的定制,因此,Linux能成為各種開放或封閉式系統(tǒng)的平臺(tái),且應(yīng)用于中間件(Middleware)或嵌入式系統(tǒng)(Embedded system)上,故,目前有眾多電子產(chǎn)品(如:電腦、智慧型手機(jī)、導(dǎo)航系統(tǒng))的系統(tǒng)軟件是采用Linux核心所開發(fā)設(shè)計(jì)完成,例如Android系統(tǒng)即為其一代表性作品。
[0003]一般言,在Linux核心運(yùn)行的過(guò)程中,若應(yīng)用程序發(fā)生非致命的執(zhí)行時(shí)期錯(cuò)誤(nonfatal runtime errors)時(shí),Linux核心能對(duì)前述的錯(cuò)誤情況予以處理,且允許應(yīng)用程序執(zhí)行完畢后,再產(chǎn)生錯(cuò)誤結(jié)果訊息,但當(dāng)發(fā)生硬件錯(cuò)誤(如:irq conflict、bad block、high temperature),或是應(yīng)用程序發(fā)生除零(Divide By Zero)、存儲(chǔ)器訪問(wèn)越界(AccessDenied)、緩沖區(qū)溢位(Buffer Overflow)等不可恢復(fù)的錯(cuò)誤(或稱,致命錯(cuò)誤(fatalerror))時(shí),則可能會(huì)造成核心崩潰(KERNEL PANIC),令Linux核心無(wú)法正常運(yùn)行,進(jìn)而發(fā)生當(dāng)機(jī)情況。因此,使用者通常需讀取核心日志的內(nèi)容,以能了解核心崩潰的發(fā)生原因,進(jìn)而順利解決問(wèn)題。所謂的“核心日志”是指,Linux核心于運(yùn)行時(shí),其會(huì)記錄系統(tǒng)的執(zhí)行過(guò)程資訊,并將這些執(zhí)行過(guò)程資訊保存在一個(gè)內(nèi)部緩沖區(qū)中,記錄內(nèi)容大抵包括:事件發(fā)生的日期與時(shí)間、發(fā)生此事件的主機(jī)名稱或來(lái)源IP、啟動(dòng)此事件的服務(wù)名稱或函式名稱、該訊息的實(shí)際數(shù)據(jù)內(nèi)容…等,以供使用者能藉由“核心日志”的內(nèi)容,得知終端裝置的各個(gè)軟、硬件的工作狀態(tài)。
[0004]承上所述,在未發(fā)生核心崩潰的情況下,使用者能使用“ cat/proc/kmsg”命令輸出核心日志,以查看Linux核心的運(yùn)行狀況。但若系統(tǒng)發(fā)生核心崩潰的情況時(shí),則可能造成前述“cat/piOc/kmsg”命令無(wú)法輸出完整的核心日志,令使用者無(wú)法正確地判斷出發(fā)生核心崩潰的原因。因此,針對(duì)核心崩潰的情況,Linux核心本身提供了 panic機(jī)制與kdump機(jī)制,茲就前述兩種機(jī)制簡(jiǎn)單說(shuō)明如下:
[0005](I) panic機(jī)制:當(dāng)核心崩潰的情況發(fā)生時(shí),由于Linux核心不知目前的程序該如何執(zhí)行下一步驟,因此,其會(huì)將此時(shí)所能獲取到的所有資訊顯示出來(lái),但實(shí)際上,顯示內(nèi)容多寡會(huì)因造成核心崩潰的各種原因有所差異。舉例而言,當(dāng)核心崩潰的類型是hard panic,使用者能使用“/var/log/messages”命令取得堆迭追蹤(stack trace)訊息;又,使用者尚能搜索應(yīng)用程序日志,以取得各個(gè)應(yīng)用程序的運(yùn)作過(guò)程;最后,使用者能自行記錄終端裝置的屏幕上所顯示的dump資訊。另,當(dāng)核心崩潰的類型是soft panic, Linux核心會(huì)產(chǎn)生一個(gè)包含核心符號(hào)(kernel symbols)數(shù)據(jù)的dump資訊,該dump資訊會(huì)記錄于/var/log/messages中,又,使用者能透過(guò)ksymoops工具生成ksymoops檔案,以將核心符號(hào)數(shù)據(jù)轉(zhuǎn)換成可供判讀的數(shù)據(jù)。
[0006](2) kdump機(jī)制(即,核心崩潰轉(zhuǎn)儲(chǔ)機(jī)制):當(dāng)核心崩潰的情況發(fā)生時(shí),會(huì)啟動(dòng)kexec程序,將操作系統(tǒng)的當(dāng)前核心(即,發(fā)生核心崩潰的核心,后續(xù)稱前一個(gè)核心)引導(dǎo)至另一個(gè)備份核心。此時(shí),前一個(gè)核心運(yùn)行時(shí)的存儲(chǔ)器鏡像內(nèi)容,會(huì)被保存至/proc/vmcore中,使用者能透過(guò)“cp”命令或“scp”命令,將vmcore檔復(fù)制至磁片上,并在重啟操作系統(tǒng)后,透過(guò)分析工具對(duì)vmcore檔進(jìn)行分析,查找出導(dǎo)致前一個(gè)核心發(fā)生核心崩潰的原因。
[0007]綜上所述可知,無(wú)論是panic機(jī)制或kdump機(jī)制,均需先行對(duì)Linux核心進(jìn)行相關(guān)設(shè)定,且使用者亦需額外下達(dá)多個(gè)命令,才能取得核心日志,造成使用上的不便利性。因此,如何設(shè)計(jì)出一種更為方便的輸出核心日志的方法,令使用者不需對(duì)系統(tǒng)核心進(jìn)行繁復(fù)的額外設(shè)定,即成為相關(guān)業(yè)者的重要課題。

【發(fā)明內(nèi)容】

[0008]有鑒于現(xiàn)有輸出核心日志的方法,均需對(duì)系統(tǒng)核心進(jìn)行相關(guān)設(shè)定,造成使用上的困擾,尤其對(duì)于一些經(jīng)驗(yàn)不足的使用者而言,更是有著極大的不便性,因此,發(fā)明人經(jīng)過(guò)長(zhǎng)久努力研究與實(shí)驗(yàn),終于開發(fā)設(shè)計(jì)出本發(fā)明的一種操作系統(tǒng)發(fā)生核心崩潰情況下讀取完整核心日志的方法,以期藉由本發(fā)明而能提供使用者一種更為方便輸出核心日志的方法,大幅提高使用上的便利性。
[0009]本發(fā)明的一個(gè)目的在于提供一種操作系統(tǒng)發(fā)生核心崩潰情況下讀取完整核心日志的方法,主要能降低輸出核心日志的復(fù)雜度,且能保持核心日志的完整性,以便于使用者能在操作系統(tǒng)的核心崩潰(KERNEL PANIC)后,藉由閱讀核心日志的內(nèi)容而迅速地解決問(wèn)題。該方法應(yīng)用于一終端裝置(如:電腦、智慧型手機(jī))上,該終端裝置包括一中央處理單元及一存儲(chǔ)器單元,該存儲(chǔ)器單元系與該中央處理單元相電氣連接,且至少包括一核心運(yùn)作區(qū)、一核心緩沖區(qū)、一日志備份區(qū)及一用戶數(shù)據(jù)區(qū),其中該核心運(yùn)作區(qū)內(nèi)儲(chǔ)存有一系統(tǒng)核心(System Kernel),該方法能使中央處理單元藉由系統(tǒng)核心執(zhí)行一操作系統(tǒng),以驅(qū)動(dòng)該終端裝置上的其它硬件;然后,在中央處理單元執(zhí)行該操作系統(tǒng)的狀態(tài)下,會(huì)針對(duì)執(zhí)行過(guò)程的資訊,產(chǎn)生一核心日志,并將該核心日志分別儲(chǔ)存至該核心緩沖區(qū)及該日志備份區(qū)中,當(dāng)該中央處理單元被復(fù)位重置后,其會(huì)執(zhí)行一核心模塊(Kernel Object)初始化程序,并將該核心日志輸出至該用戶數(shù)據(jù)區(qū),該核心日志包括該中央處理單元被復(fù)位重置之前,運(yùn)行該系統(tǒng)核心的完整資訊。如此,使用者僅需對(duì)中央處理單元進(jìn)行復(fù)位重置(如:透過(guò)中央處理單元的重置腳位(Reset Pin)進(jìn)行硬件重置),便能夠?qū)⒃摵诵娜罩緦?dǎo)出至該用戶數(shù)據(jù)區(qū),以便使用者能藉由分析該核心日志的內(nèi)容,得知發(fā)生核心崩潰的原因。
[0010]為便于對(duì)本發(fā)明目的、技術(shù)特征及其功效,做更進(jìn)一步的認(rèn)識(shí)與了解,茲舉實(shí)施例配合附圖,詳細(xì)說(shuō)明如下:
【專利附圖】

【附圖說(shuō)明】
[0011]圖1是本發(fā)明的終端裝置的硬件方塊圖;
[0012]圖2是本發(fā)明的存儲(chǔ)器單元的分區(qū)示意圖;[0013]圖3是本發(fā)明的日志備份區(qū)的示意圖;
[0014]圖4是本發(fā)明的核心模塊初始化程序的腳本內(nèi)容;及
[0015]圖5是本發(fā)明的中央處理單元讀取核心日志的流程圖。
[0016]主要元件符號(hào)說(shuō)明
[0017]終端裝置............1
[0018]中央處理單元............10
[0019]存儲(chǔ)器單元............12
[0020]核心運(yùn)作區(qū)............121
[0021]系統(tǒng)核心............122
[0022]核心緩沖區(qū)............123
[0023]日志備份區(qū)............125
[0024]數(shù)據(jù)讀寫標(biāo)記區(qū) ……1251
[0025]數(shù)據(jù)起始區(qū)............1253 [0026]數(shù)據(jù)結(jié)束區(qū)............1255
[0027]實(shí)際數(shù)據(jù)區(qū)……1257
[0028]用戶數(shù)據(jù)區(qū)............127
【具體實(shí)施方式】
[0029]本發(fā)明是一種操作系統(tǒng)發(fā)生核心崩潰情況下讀取完整核心日志的方法,在一較佳實(shí)施例中,請(qǐng)參閱圖1所示,一終端裝置I包括一中央處理單元10及一存儲(chǔ)器單元12,其中該終端裝置I能夠?yàn)閭€(gè)人電腦(Personal Computer,簡(jiǎn)稱PC)、筆記本型電腦(Notebook,簡(jiǎn)稱NB)、智慧型手機(jī)(Smartphone)、導(dǎo)航裝置(navigation device)、平板電腦(Tabletcomputer)或個(gè)人數(shù)位處理器(Personal DigitalAssistant,簡(jiǎn)稱PDA)等。另,請(qǐng)參閱圖1及2所示,該存儲(chǔ)器單元12能夠?yàn)橐豢扉W存儲(chǔ)器(Flash Memory),并與該中央處理單元10相電氣連接,以能接收該中央處理單元10傳來(lái)的數(shù)據(jù),且能傳送其內(nèi)儲(chǔ)存的數(shù)據(jù)至該中央處理單元10。該存儲(chǔ)器單元12至少包括一核心運(yùn)作區(qū)121、一核心緩沖區(qū)123、一日志備份區(qū)125及一用戶數(shù)據(jù)區(qū)127 (UserData)。
[0030]在此特別一提者,不同的操作系統(tǒng)(如:UNIX系統(tǒng)、Linux系統(tǒng)、FreeBSD系統(tǒng))運(yùn)用至不同的終端裝置時(shí),會(huì)依實(shí)際需求規(guī)劃不同的分區(qū)。以智慧型手機(jī)搭配Android系統(tǒng)為例,依目前Android系統(tǒng)而言,其大致會(huì)劃分為下列各個(gè)分區(qū):
[0031](l)hboot分區(qū):主要作用為引導(dǎo)啟動(dòng)終端裝置,以能檢測(cè)終端裝置I的硬件訊息,并尋找操作系統(tǒng)所規(guī)劃的各個(gè)分區(qū);
[0032](2) radio分區(qū):主要作用為驅(qū)動(dòng)通信硬件,以使終端裝置能進(jìn)行通信作業(yè)(如:撥打電話、發(fā)送簡(jiǎn)訊);
[0033](3) recovery分區(qū):主要為儲(chǔ)存恢復(fù)操作系統(tǒng)所需的備份數(shù)據(jù);
[0034](4) boot分區(qū):主要為系統(tǒng)核心的儲(chǔ)存位置;
[0035](5) system分區(qū):主要為內(nèi)建程序的儲(chǔ)存位置;
[0036](6) cache分區(qū):主要為系統(tǒng)緩存區(qū);
[0037](7) userdata分區(qū):主要用以儲(chǔ)存使用者數(shù)據(jù),[0038]因此,復(fù)請(qǐng)參閱圖1及2所示,本發(fā)明所述的各個(gè)分區(qū),乃是使用上位名詞敘述各個(gè)分區(qū)的作用,其中核心運(yùn)作區(qū)121、核心緩沖區(qū)123及用戶數(shù)據(jù)區(qū)127,均為已知分區(qū),例如:核心運(yùn)作區(qū)121能為hboot分區(qū)、recovery分區(qū)、boot分區(qū)與system分區(qū)的統(tǒng)稱,核心緩沖區(qū)123為cache分區(qū),用戶數(shù)據(jù)區(qū)127則為userdata分區(qū)。其中核心運(yùn)作區(qū)121主要是指系統(tǒng)核心正常運(yùn)作時(shí)所需使用的多個(gè)分區(qū),至于核心緩沖區(qū)123與用戶數(shù)據(jù)區(qū)127則是因本發(fā)明的方法中,需對(duì)該二分區(qū)123、127進(jìn)行另外步驟,故才未劃分至核心運(yùn)作區(qū)121中,合先說(shuō)明。另,本發(fā)明的日志備份區(qū)125并非是已知分區(qū),而是在存儲(chǔ)器單元12中額外開辟一專用內(nèi)存區(qū)域,因此,當(dāng)操作系統(tǒng)發(fā)生核心崩潰(KERNEL PANIC)時(shí),日志備份區(qū)125不會(huì)受到核心崩潰影響而毀損。
[0039]復(fù)請(qǐng)參閱圖1及2所示,其中該核心運(yùn)作區(qū)121內(nèi)儲(chǔ)存有系統(tǒng)核心122 (SystemKernel),該中央處理單元10能藉由該系統(tǒng)核心122執(zhí)行一操作系統(tǒng),以驅(qū)動(dòng)該終端裝置I上的其它硬件(如:光碟機(jī)、顯示卡、藍(lán)牙模塊…等),在中央處理單元10執(zhí)行該操作系統(tǒng)的狀態(tài)下,其會(huì)針對(duì)執(zhí)行過(guò)程的資訊,產(chǎn)生一核心日志,又,該中央處理單元10會(huì)如同已知作法般,將核心日志儲(chǔ)存至該核心緩沖區(qū)123中,因此,若在Linux系統(tǒng)中,使用者便能使用“cat/proc/kmsg”命令,自核心緩沖區(qū)123輸出核心日志,以查看Linux核心的運(yùn)行狀況。此外,本發(fā)明的中央處理單元10,尚會(huì)將核心日志儲(chǔ)存至額外開辟的日志備份區(qū)125中,意即,本發(fā)明的核心日志會(huì)同時(shí)存在于核心緩沖區(qū)123與日志備份區(qū)125中。
[0040]另,請(qǐng)參閱圖1及3所示,該日志備份區(qū)125中包括一數(shù)據(jù)讀寫標(biāo)記區(qū)1251、一數(shù)據(jù)起始區(qū)1253、一數(shù)據(jù)結(jié)束區(qū)1255及一實(shí)際數(shù)據(jù)區(qū)1257,其中該數(shù)據(jù)讀寫標(biāo)記區(qū)1251設(shè)有一狀態(tài)指標(biāo),該狀態(tài)指標(biāo)至少包括三種狀態(tài),第一是寫入狀態(tài),第二是讀取狀態(tài),第三則是未知狀態(tài)。所謂的未知狀態(tài)是針對(duì)寫入狀態(tài)、讀取狀態(tài)而言,在該實(shí)施例中,當(dāng)狀態(tài)指標(biāo)的數(shù)值為“Oxbeefbeef ”代表寫入狀態(tài),當(dāng)狀態(tài)指標(biāo)的數(shù)值為“Oxfaceface”則代表讀取狀態(tài),至于不屬于前述數(shù)值者,便歸屬于未知狀態(tài)。當(dāng)終端裝置I第一次開機(jī)、或是經(jīng)正常關(guān)機(jī)程序后再開機(jī)時(shí),該狀態(tài)指標(biāo)均會(huì)為未知狀態(tài),且中央處理單元10能依操作系統(tǒng)的使用需求,將狀態(tài)指標(biāo)設(shè)定為`寫入狀態(tài)或讀取狀態(tài);當(dāng)狀態(tài)指標(biāo)為寫入狀態(tài)時(shí),中央處理單元10能將核心日志寫入至該實(shí)際數(shù)據(jù)區(qū)1257,且該核心日志在該實(shí)際數(shù)據(jù)區(qū)1257中的起始位置,會(huì)被記露于數(shù)據(jù)起始區(qū)1253中,以形成一起始位置數(shù)值,又,該核心日志在該實(shí)際數(shù)據(jù)區(qū)1257中的結(jié)束位置,則會(huì)被記露于數(shù)據(jù)結(jié)束區(qū)1255中,以形成一結(jié)束位置數(shù)值;當(dāng)狀態(tài)指標(biāo)為讀取狀態(tài)時(shí),中央處理單元10僅能自該實(shí)際數(shù)據(jù)區(qū)1257中讀取出核心日志,且其會(huì)依起始位置數(shù)值及結(jié)束位置數(shù)值,自實(shí)際數(shù)據(jù)區(qū)1257中讀取符合這些位置數(shù)值的核心日志內(nèi)容。
[0041]再者,復(fù)請(qǐng)參閱圖f3所示,當(dāng)使用者第一次開啟終端裝置I時(shí),或者是將正常關(guān)機(jī)的終端裝置I開啟時(shí),中央處理單元10會(huì)執(zhí)行一核心模塊(Kernel Object)初始化程序程序,并讀取狀態(tài)指標(biāo),當(dāng)其判斷出該狀態(tài)指標(biāo)為未知狀態(tài)后,會(huì)將狀態(tài)指標(biāo)設(shè)定為寫入狀態(tài),以能在后續(xù)執(zhí)行操作系統(tǒng)時(shí),于該實(shí)際數(shù)據(jù)區(qū)1257中寫入核心日志。當(dāng)操作系統(tǒng)發(fā)生核心崩潰(KERNEL PANIC)時(shí),使用者能對(duì)中央處理單元10采用硬件重置(hard reset)的方式,即將中央處理單元10的重置腳(reset PIN)短路,此時(shí),該中央處理單元10會(huì)執(zhí)行該核心模塊初始化程序,并讀取狀態(tài)指標(biāo),當(dāng)其判斷出該狀態(tài)指標(biāo)為寫入狀態(tài)后,即代表操作系統(tǒng)未經(jīng)過(guò)正常關(guān)機(jī)程序,狀態(tài)指標(biāo)才并非為未知狀態(tài)。因此,中央處理單元10會(huì)將該狀態(tài)指標(biāo)設(shè)定為讀取狀態(tài),且自數(shù)據(jù)起始區(qū)1253與數(shù)據(jù)結(jié)束區(qū)1255中,讀取起始位置數(shù)值與結(jié)束位置數(shù)值,然后,該中央處理單元10便會(huì)根據(jù)起始位置數(shù)值與結(jié)束位置數(shù)值,自實(shí)際數(shù)據(jù)區(qū)1257中讀取出核心日志,并儲(chǔ)存至用戶數(shù)據(jù)區(qū)127,之后,中央處理單元10會(huì)重新將狀態(tài)指標(biāo)設(shè)定為寫入狀態(tài),以便后續(xù)執(zhí)行操作系統(tǒng)時(shí),能于日志備份區(qū)125中寫入核心日志。另,假設(shè)當(dāng)中央處理單元10將該狀態(tài)指標(biāo)設(shè)定為讀取狀態(tài),但尚未完整讀取出核心日志時(shí),又再次發(fā)生核心崩潰,則中央處理單元10經(jīng)過(guò)硬件重置后,同樣會(huì)再次執(zhí)行該核心模塊初始化程序。又,當(dāng)其判斷出該狀態(tài)指標(biāo)為讀取狀態(tài)后,其會(huì)直接根據(jù)起始位置數(shù)值與結(jié)束位置數(shù)值,自實(shí)際數(shù)據(jù)區(qū)1257中讀取出核心日志,且在其將核心日志儲(chǔ)存到用戶數(shù)據(jù)區(qū)127后,會(huì)將狀態(tài)指標(biāo)設(shè)定為寫入狀態(tài)。
[0042]請(qǐng)參閱圖1-4所示,其中圖4為本發(fā)明的核心模塊初始化程序的部份腳本內(nèi)容與中文注解,其中“printk2glog.ko”為核心模塊初始化程序的名稱,但業(yè)者亦可依自身需求更改該名稱。另,“0x100000”為日志備份區(qū)125的容量大小,“0x2FE00000”則表示日志備份區(qū)125的起始地址,在該實(shí)施例中日志備份區(qū)125的容量為IM位元(Byte),可隨著微電子技術(shù)的精進(jìn),導(dǎo)致存儲(chǔ)器單元12容量大增的情況下,業(yè)者亦能夠提高日志備份區(qū)125的容量?!癵log.txt”為核心日志的名稱,在該實(shí)施例中,中央處理單元10會(huì)以每次讀取4K位元的容量大小,依序讀取出實(shí)際數(shù)據(jù)區(qū)1257的核心日志的內(nèi)容,至于最后生成的核心日志(SP,glog.txt)的大小,便是依起始位置數(shù)值及結(jié)束位置數(shù)值而定。在此聲明者,由于本發(fā)明的日志備份區(qū)125的容量大小為IM位元,若操作系統(tǒng)寫入的核心日志容量超過(guò)IM位元時(shí),則最后寫入的核心日志內(nèi)容,會(huì)覆蓋最早寫入的核心日志內(nèi)容,意即,起始位置數(shù)值會(huì)等于結(jié)束位置數(shù)值+1,如此,即可避免起始位置數(shù)值等于結(jié)束位置數(shù)值,造成中央處理單元10所輸出的核心日志內(nèi)容不正確。
[0043]承上所述,為能明確揭露前述的較佳實(shí)施例的整體方法,以下茲僅就本發(fā)明的中央處理單元10執(zhí)行核心模塊初始化程序的主要處理流程,進(jìn)行說(shuō)明,請(qǐng)參閱圖f 3及5所示:
[0044](301)執(zhí)行核心模塊初始化程序,進(jìn)入步驟(302);
[0045](302)讀取狀態(tài)指標(biāo),進(jìn)入步驟(303);
[0046](303)判斷狀態(tài)指標(biāo)是否為未知狀態(tài),若是,進(jìn)入步驟(304),若否,進(jìn)入步驟(305);
[0047](304)設(shè)定狀態(tài)指標(biāo)為寫入狀態(tài),并針對(duì)執(zhí)行操作系統(tǒng)過(guò)程的資訊,產(chǎn)生核心日志,且將該核心日志分別儲(chǔ)存至核心緩沖區(qū)123及日志備份區(qū)125中;
[0048](305)判斷狀態(tài)指標(biāo)是否為寫入狀態(tài),若是,進(jìn)入步驟(306),若否,進(jìn)入步驟(307);
[0049](306)設(shè)定狀態(tài)指標(biāo)為讀取狀態(tài),進(jìn)入步驟(307);及
[0050](307)讀取日志備份區(qū)125中的核心日志,并將該核心日志儲(chǔ)存至用戶數(shù)據(jù)區(qū)127,進(jìn)入步驟(304)。
[0051]綜上所述可知,復(fù)請(qǐng)參閱圖廣3所示,當(dāng)中央處理單元10被硬件重置后,此時(shí),狀態(tài)指標(biāo)不會(huì)恢復(fù)成未知狀態(tài),因此,中央處理單元10會(huì)自動(dòng)地將日志備份區(qū)125的核心日志,儲(chǔ)存至用戶數(shù)據(jù)區(qū)127中,故,使用者僅需自用戶數(shù)據(jù)區(qū)127中輸出核心日志,便能夠查閱中央處理單元10被硬件重置之前,操作系統(tǒng)的運(yùn)作情況,得知發(fā)生核心崩潰的原因。而不會(huì)如同已知方式(如:panic機(jī)制與kdump機(jī)制)般,需透過(guò)復(fù)雜設(shè)定才能取得核心日志。另,誠(chéng)如前述,由于本發(fā)明的日志備份區(qū)125是在存儲(chǔ)器單元12中額外開辟設(shè)置,并非是原有操作系統(tǒng)(如=Linux系統(tǒng))的已知分區(qū),因此,在操作系統(tǒng)發(fā)生核心崩潰時(shí),不會(huì)影響到日志備份區(qū)125,故能保證核心日志的完整性。
[0052]再者,復(fù)請(qǐng)參閱圖f 3所示,雖然前述實(shí)施例中,是以中央處理單元10被硬件重置為例,但在其它實(shí)施例中,業(yè)者能夠在操作系統(tǒng)上安裝一監(jiān)控程序(如:watchdog),當(dāng)該監(jiān)控程序發(fā)現(xiàn)操作系統(tǒng)出現(xiàn)異常時(shí),其能傳送一復(fù)位信號(hào)至中央處理單元10,該中央處理單元10在接收到該復(fù)位信號(hào)后,便會(huì)執(zhí)行前述步驟(301廣(307)。故可知,無(wú)論是使用者直接對(duì)中央處理單元10進(jìn)行硬件重置,或者是監(jiān)控程序?qū)χ醒胩幚韱卧?0傳送復(fù)位信號(hào),皆代表中央處理單元10被復(fù)位重置的情況。因此,只要中央處理單元10被復(fù)位重置后,會(huì)執(zhí)行執(zhí)行核心模塊初始化程序,并由額外開辟設(shè)置的日志備份區(qū)125讀取出核心日志,再將該核心日志儲(chǔ)存至用戶數(shù)據(jù)區(qū)127,即應(yīng)屬本發(fā)明所述及的方法。
[0053]在此特別一提者,本發(fā)明的實(shí)施例所用語(yǔ)匯僅供敘述之用,不應(yīng)視為本發(fā)明的限制,熟悉本發(fā)明相關(guān)技術(shù)之人士當(dāng)能在掌握本發(fā)明的主要技術(shù)特征后,自行利用其他近似結(jié)構(gòu)、裝置及系統(tǒng)加以實(shí)現(xiàn),從而達(dá)成本發(fā)明的目的,因此,本發(fā)明所主張的權(quán)利范圍,并不局限于此,凡熟悉該【技術(shù)領(lǐng)域】人士,依據(jù)本發(fā)明所揭示的技術(shù)內(nèi)容,可輕易思及的等效變化,均應(yīng)屬不脫離本發(fā)明的保護(hù)范疇,再者,雖然本發(fā)明的實(shí)施例與附圖中,乃繪制了分區(qū)格式內(nèi)容與腳本內(nèi)容,但僅為方便說(shuō)明,并得以供一般大眾或本【技術(shù)領(lǐng)域】的從業(yè)人員,迅速領(lǐng)略本發(fā)明揭示內(nèi)容的本質(zhì)與要旨,而并非僅限定為上述的記載內(nèi)容或方式。
【權(quán)利要求】
1.一種操作系統(tǒng)發(fā)生核心崩潰情況下讀取完整核心日志的方法,該方法應(yīng)用于一終端裝置上,該終端裝置包括一中央處理單元及一存儲(chǔ)器單元,該存儲(chǔ)器單元與該中央處理單元相電氣連接,且至少包括一核心運(yùn)作區(qū)、一核心緩沖區(qū)、一日志備份區(qū)及一用戶數(shù)據(jù)區(qū),其中該核心運(yùn)作區(qū)內(nèi)儲(chǔ)存有一系統(tǒng)核心,該方法能使該中央處理單元執(zhí)行下列步驟: 藉由該系統(tǒng)核心執(zhí)行一操作系統(tǒng),以驅(qū)動(dòng)該終端裝置上的其它硬件; 在執(zhí)行該操作系統(tǒng)的狀態(tài)下,會(huì)針對(duì)執(zhí)行過(guò)程的資訊,產(chǎn)生一核心日志,并將該核心日志分別儲(chǔ)存至該核心緩沖區(qū)及該日志備份區(qū)中; 在該中央處理單元被復(fù)位重置的情況下,執(zhí)行一核心模塊初始化程序; 讀取該日志備份區(qū)中的該核心日志;及 將該核心日志儲(chǔ)存至該用戶數(shù)據(jù)區(qū),該核心日志包括該中央處理單元被復(fù)位重置之前,運(yùn)行該系統(tǒng)核心的完整資訊。
2.如權(quán)利要求1所述的方法,其特征在于,該日志備份區(qū)包括: 一實(shí)際數(shù)據(jù)區(qū),能儲(chǔ)存該核心日志; 一數(shù)據(jù)讀寫標(biāo)記區(qū),其內(nèi)設(shè)有一狀態(tài)指標(biāo),在該狀態(tài)指標(biāo)被設(shè)定為寫入狀態(tài)的情況下,該中央處理單元能將該核心日志寫入至該實(shí)際數(shù)據(jù)區(qū),在該狀態(tài)指標(biāo)被設(shè)定為讀取狀態(tài)的情況下,該中央處理單元?jiǎng)t僅能讀取該實(shí)際數(shù)據(jù)區(qū)中已寫入的該核心日志; 一數(shù)據(jù)起始區(qū),對(duì)應(yīng)于該核心日志被寫入至該實(shí)際數(shù)據(jù)區(qū)的起始位置;及 一數(shù)據(jù)結(jié)束區(qū),對(duì)應(yīng)于該核心日志被寫入至該實(shí)際數(shù)據(jù)區(qū)的結(jié)束位置。
3.如權(quán)利要求2所述的方法,其特征在于,該中央處理單元在執(zhí)行該核心模塊初始化程序后,會(huì)執(zhí)行下列步驟,以讀取該日志備份區(qū)中的該核心日志: 讀取該狀態(tài)指標(biāo),并判斷該狀態(tài)指標(biāo)的狀態(tài)為何; 判斷出該狀態(tài)指標(biāo)為寫入狀態(tài)后,將該狀態(tài)指標(biāo)設(shè)定為讀取狀態(tài);及讀取該起始位置數(shù)值與該結(jié)束位置數(shù)值,且依據(jù)這些位置數(shù)值,讀取該實(shí)際數(shù)據(jù)區(qū)中的該核心日志。
4.如權(quán)利要求2所述的方法,其特征在于,該中央處理單元在執(zhí)行該核心模塊初始化程序后,會(huì)執(zhí)行下列步驟,以讀取該日志備份區(qū)中的該核心日志: 讀取該狀態(tài)指標(biāo),并判斷該狀態(tài)指標(biāo)的狀態(tài)為何 '及 判斷出該狀態(tài)指標(biāo)為讀取狀態(tài)后,讀取該起始位置數(shù)值與該結(jié)束位置數(shù)值,且依據(jù)這些位置數(shù)值,讀取該實(shí)際數(shù)據(jù)區(qū)中的該核心日志。
5.如權(quán)利要求3或4所述的方法,其特征在于,該中央處理單元被復(fù)位重置的情況,為該中央處理單元被采用硬件重置的方式。
6.如權(quán)利要求3或4所述的方法,其特征在于,該操作系統(tǒng)尚安裝一監(jiān)控程序,在該監(jiān)控程序傳送一復(fù)位信號(hào)至中央處理單元后,該中央處理單元會(huì)被復(fù)位重置。
7.如權(quán)利要求5所述的方法,其特征在于,在該中央處理單元將該核心日志輸出至該用戶數(shù)據(jù)區(qū)后,其會(huì)將該狀態(tài)指標(biāo)設(shè)定為寫入狀態(tài)。
8.如權(quán)利要求6所述的方法,其特征在于,在該中央處理單元將該核心日志輸出至該用戶數(shù)據(jù)區(qū)后,其會(huì)將該狀態(tài)指標(biāo)設(shè)定為寫入狀態(tài)。
【文檔編號(hào)】G06F9/445GK103809989SQ201210444344
【公開日】2014年5月21日 申請(qǐng)日期:2012年11月8日 優(yōu)先權(quán)日:2012年11月8日
【發(fā)明者】陳業(yè)新, 卞永才 申請(qǐng)人:英華達(dá)(南京)科技有限公司, 英華達(dá)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1