国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種內(nèi)核故障注入方法及電子設(shè)備的制造方法

      文檔序號:9765886閱讀:243來源:國知局
      一種內(nèi)核故障注入方法及電子設(shè)備的制造方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計算機領(lǐng)域,特別涉及一種內(nèi)核故障注入方法及電子設(shè)備。
      【背景技術(shù)】
      [0002]目前,Linux系統(tǒng)應用廣泛,在針對Linux內(nèi)核進行應用程序開發(fā)時,檢驗應用程序?qū)inux內(nèi)核故障的容錯機制的有效性非常重要,在Linux內(nèi)核中進行故障注入是必不可少的環(huán)節(jié)。但是,Linux系統(tǒng)的開發(fā)者出于保證內(nèi)核代碼正確性的考慮,不愿意在Linux內(nèi)核源代碼樹中加入一個調(diào)試器,以避免開發(fā)者通過內(nèi)核中的調(diào)試器引入不良的修正,所以對Linux內(nèi)核進行故障注入一直是個棘手的問題。
      [0003]內(nèi)核動態(tài)探針(Kernel Dynamic Probes,Kprobes)技術(shù)的出現(xiàn)有效解決了 Linux系統(tǒng)的內(nèi)核故障注入問題,提高了內(nèi)核故障注入的效率。參見圖1,其基本工作機制為:首先,注冊Kprobes結(jié)構(gòu)體,將用戶指定的探測點處的內(nèi)核指令替換為斷點指令,該被替換的內(nèi)核指令即為被探測的指令,然后把一個用戶定義的回調(diào)函數(shù)關(guān)聯(lián)到該斷點指令,當處理器執(zhí)行到該斷點指令時,處理器將轉(zhuǎn)而執(zhí)行與斷點指令相關(guān)聯(lián)的回調(diào)函數(shù),該回調(diào)函數(shù)執(zhí)行時將模擬對應的內(nèi)核故障,在回調(diào)函數(shù)執(zhí)行完后,返回執(zhí)行被探測的指令,繼續(xù)正常的代碼路徑的執(zhí)行,整個故障注入過程中無需對Linux內(nèi)核頻繁編譯和啟動。
      [0004]但是,現(xiàn)有技術(shù)中上述故障注入方法存在故障注入的等待時間較長的問題,使得整個應用程序開發(fā)周期延長。

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

      [0005]本發(fā)明實施例提供一種內(nèi)核故障注入方法及電子設(shè)備,用于解決故障注入的等待時間較長的技術(shù)問題。
      [0006]第一方面,本發(fā)明實施例提供了一種內(nèi)核故障注入方法,所述方法包括:
      [0007]在加載到內(nèi)存中的內(nèi)核指令集合中有指令被內(nèi)核動態(tài)探針Kprobes結(jié)構(gòu)體中的斷點指令替換時,處理器在執(zhí)行所述斷點指令時,轉(zhuǎn)向執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù);
      [0008]所述處理器在執(zhí)行完所述回調(diào)函數(shù)時,轉(zhuǎn)向執(zhí)行被替換的指令所在函數(shù)返回后的下一條內(nèi)核指令。
      [0009]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,處理器執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù),包括:
      [0010]所述處理器將所述回調(diào)函數(shù)中設(shè)定的錯誤狀態(tài)碼寫入數(shù)據(jù)寄存器。
      [0011 ] 結(jié)合第一方面,在第一方面的第二種可能的實現(xiàn)方式中,處理器執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù),包括:
      [0012]所述處理器讀取所述Kprobes結(jié)構(gòu)體中保存的所述被替換的指令的數(shù)據(jù)返回位置的位置信息,并確定出所述數(shù)據(jù)返回位置;
      [0013]所述處理器生成大小不大于所述數(shù)據(jù)返回位置的存儲容量的混淆數(shù)據(jù),并將所述混淆數(shù)據(jù)寫入所述數(shù)據(jù)返回位置。
      [0014]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,所述處理器生成大小不大于所述數(shù)據(jù)返回位置的存儲容量的混淆數(shù)據(jù),包括:
      [0015]隨機生成大小不大于所述數(shù)據(jù)返回位置的存儲容量的所述混淆數(shù)據(jù);或者
      [0016]從設(shè)定混淆數(shù)據(jù)中提取小于所述數(shù)據(jù)返回位置的存儲容量的部分作為所述混淆數(shù)據(jù)。
      [0017]第二方面,本發(fā)明實施例還提供了一種內(nèi)核故障注入方法,所述方法包括:
      [0018]在加載到內(nèi)存中的內(nèi)核指令集合中有指令被Kprobes結(jié)構(gòu)體中的斷點指令替換時,處理器在執(zhí)行所述斷點指令時,轉(zhuǎn)向執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù),產(chǎn)生設(shè)定時長的時延,所述設(shè)定時長為所述回調(diào)函數(shù)包含的時間參數(shù);
      [0019]所述處理器在產(chǎn)生所述設(shè)定時長的時延后執(zhí)行被替換的指令。
      [0020]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,處理器執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù),產(chǎn)生設(shè)定時長的時延,包括:
      [0021]所述處理器記錄執(zhí)行所述回調(diào)函數(shù)時的第一時間;
      [0022]所述處理器確定出所述第一時間之后的與所述第一時間相差所述設(shè)定時長的第二時間,以形成所述設(shè)定時長的時延。
      [0023]第三方面,本發(fā)明實施例還提供了一種電子設(shè)備,包括:
      [0024]內(nèi)存,用于存儲指令;
      [0025]處理器,用于執(zhí)行內(nèi)存中存儲的內(nèi)核指令;其中,在加載到內(nèi)存中的內(nèi)核指令集合中有指令被內(nèi)核動態(tài)探針Kprobes結(jié)構(gòu)體中的斷點指令替換時,處理器在執(zhí)行所述斷點指令時,轉(zhuǎn)向執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù);且所述處理器在執(zhí)行完所述回調(diào)函數(shù)時,轉(zhuǎn)向執(zhí)行被替換的指令所在函數(shù)返回后的下一條內(nèi)核指令。
      [0026]結(jié)合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,所述處理器用于執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù),具體為:將所述回調(diào)函數(shù)中設(shè)定的錯誤狀態(tài)碼寫入數(shù)據(jù)寄存器。
      [0027]結(jié)合第三方面,在第三方面的第二種可能的實現(xiàn)方式中,所述處理器用于執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù),具體為:讀取所述Kprobes結(jié)構(gòu)體中保存的所述被替換的指令的數(shù)據(jù)返回位置的位置信息,并確定出所述數(shù)據(jù)返回位置;以及生成大小不大于所述數(shù)據(jù)返回位置的存儲容量的混淆數(shù)據(jù),并將所述混淆數(shù)據(jù)寫入所述數(shù)據(jù)返回位置。
      [0028]結(jié)合第三方面的第二種可能的實現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中,所述處理器用于生成大小不大于所述數(shù)據(jù)返回位置的存儲容量的混淆數(shù)據(jù),具體為:隨機生成大小不大于所述數(shù)據(jù)返回位置的存儲容量的所述混淆數(shù)據(jù);或者從設(shè)定混淆數(shù)據(jù)中提取小于所述數(shù)據(jù)返回位置的存儲容量的部分作為所述混淆數(shù)據(jù)。
      [0029]第四方面,本發(fā)明實施例還提供了一種電子設(shè)備,包括:
      [0030]內(nèi)存,用于存儲指令;
      [0031]處理器,用于執(zhí)行內(nèi)存中存儲的內(nèi)核指令;其中,在加載到內(nèi)存中的內(nèi)核指令集合中有指令被Kprobes結(jié)構(gòu)體中的斷點指令替換時,處理器在執(zhí)行所述斷點指令時,轉(zhuǎn)向執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù),產(chǎn)生設(shè)定時長的時延,所述設(shè)定時長為所述回調(diào)函數(shù)包含的時間參數(shù);且所述處理器在產(chǎn)生所述設(shè)定時長的時延后執(zhí)行被替換的指令。
      [0032]結(jié)合第四方面,在第四方面的第一種可能的實現(xiàn)方式中,所述處理器用于執(zhí)行所述Kprobes結(jié)構(gòu)體中與所述斷點指令關(guān)聯(lián)的回調(diào)函數(shù),產(chǎn)生設(shè)定時長的時延,具體為:記錄執(zhí)行所述回調(diào)函數(shù)時的第一時間;以及確定出所述第一時間之后的與所述第一時間相差所述設(shè)定時長的第二時間,以形成所述設(shè)定時長的時延。
      [0033]本申請實施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
      [0034]本申請實施例中,處理器在執(zhí)行到斷點指令時,轉(zhuǎn)向執(zhí)行Kprobes結(jié)構(gòu)體中與斷點指令關(guān)聯(lián)的回調(diào)函數(shù),進而實現(xiàn)故障注入,并在實現(xiàn)故障注入之后,直接執(zhí)行被斷點指令替換的內(nèi)核指令所在的函數(shù)返回后的下一條內(nèi)核指令,減少了處理器所執(zhí)行的指令數(shù)量,減少了下一次內(nèi)核故障注入的等待時間,縮短了應用程序的開發(fā)周期。
      【附圖說明】
      [0035]為了更清楚地說明本申請實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0036]圖1為現(xiàn)有技術(shù)中利用Kprobes進行內(nèi)核故障注入的示例圖;
      [0037]圖2為本申請實施例1中內(nèi)核故障注入方法的流程示意圖;
      [0038]圖3為本申請實施例1中一應用實例的流程示意圖;
      [0039]圖4為本申請實施例1中另一應用實例的流程示意圖;
      [0040]圖5為本申請實施例2中內(nèi)核故障注入方法的流程示意圖;
      [0041]圖6為本申請實施例3中電子設(shè)備的結(jié)構(gòu)示意框圖;
      [0042]圖7為本申請實施例3中電子設(shè)備的詳細結(jié)構(gòu)示意框圖;
      [0043]圖8為本申請實施例4中電子設(shè)備的結(jié)構(gòu)示意框圖;
      [0044]圖9為本申請實施例4中電子設(shè)備的詳細結(jié)構(gòu)示意框圖。
      【具體實施方式】
      [0045]針對現(xiàn)有技術(shù)中利用Kprobes進行內(nèi)核故障注入的過程中存在故障注入的等待時間較長的技術(shù)問題,本申請實施例提供了一種內(nèi)核故障注入方法,在該內(nèi)核故障注入方法中,處理器在執(zhí)行完與斷點指令關(guān)聯(lián)的回調(diào)函數(shù)后,結(jié)束對被斷點指令替換的內(nèi)核指令所在函數(shù)的調(diào)用,直接執(zhí)行被替換的內(nèi)核指令所在函數(shù)返回后的下一條指令,減少了處理器所執(zhí)行的指令數(shù)量,減少了下一次內(nèi)核故障注入的等待時間,縮短了應用程序的開發(fā)周期。
      [0046]下面通過附圖以及具體實施例對本申請技術(shù)方案做詳細的說明,應當理解本申請實施例以及實施例中的具體特征是對本申請技術(shù)方案的詳細的說明,而不是對本申請技術(shù)方案的限定,在不沖突的情況下,本申請實施例以及實施例中的技術(shù)特征可以相互組合。
      [0047]為了便于描述,首先介紹本
      當前第1頁1 2 3 4 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1