• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    淺析VxWorks內(nèi)存泄露檢測(cè)機(jī)制存在的不足及改進(jìn)

    2014-04-29 00:00:00劉國(guó)棟

    摘 要:隨著信息技術(shù)的不斷發(fā)展,嵌入式設(shè)備也越來(lái)越多的在國(guó)防科技、網(wǎng)絡(luò)通信以及工業(yè)控制領(lǐng)域中應(yīng)用,因此對(duì)于系統(tǒng)的安全性與可靠性也越來(lái)越提出更多的要求,其中VxWorks操作系統(tǒng),不僅具有可搶占式調(diào)度、中斷延遲小、系統(tǒng)內(nèi)核可剪裁的優(yōu)勢(shì),而且也被應(yīng)用到大多數(shù)的嵌入式產(chǎn)品中。以下本篇就將淺析在VxWorks系統(tǒng)中其內(nèi)存泄露檢測(cè)機(jī)制中存在的不足以及改進(jìn)對(duì)策。

    關(guān)鍵詞:VxWorks系統(tǒng);內(nèi)存泄露檢測(cè);不足

    中圖分類號(hào):TN929.53;TP319

    基于當(dāng)前嵌入式設(shè)備存儲(chǔ)器容量較小的特征,因此對(duì)嵌入式系統(tǒng)的性能以及可靠性都提出較高的要求,特別是對(duì)于嵌入式操作系統(tǒng)的內(nèi)存管理問(wèn)題,更是成為當(dāng)前的重點(diǎn),不僅會(huì)直接影響到嵌入式設(shè)備的正常運(yùn)行,還將會(huì)影響系統(tǒng)的安全性和可靠性。以下本篇就對(duì)VxWorks內(nèi)存管理中存在的不足進(jìn)行探討,并給出有效的改進(jìn)對(duì)策。

    1 VxWorks操作系統(tǒng)內(nèi)存泄露介紹

    VxWorks操作系統(tǒng)中內(nèi)存管理作為其重要的研究領(lǐng)域,解決以及處理內(nèi)存泄漏問(wèn)題以成為重點(diǎn),就根據(jù)程序在申請(qǐng)到動(dòng)態(tài)內(nèi)存,且使用完動(dòng)態(tài)內(nèi)存后,不釋放動(dòng)態(tài)內(nèi)存,并將其保存動(dòng)態(tài)內(nèi)存的地址變量用作其它時(shí)期,使動(dòng)態(tài)內(nèi)存并不能被釋放,其它程序不能再使用動(dòng)態(tài)內(nèi)存,也無(wú)法被VxWorks操作系統(tǒng)回收,因此就會(huì)造成內(nèi)存泄漏[1]。內(nèi)存泄漏是因?yàn)槭韬鲆约板e(cuò)誤而造成的程序在使用完之后未能釋放動(dòng)態(tài)內(nèi)存的情況,針對(duì)內(nèi)存泄露問(wèn)題,不僅會(huì)使VxWorks應(yīng)用程序申請(qǐng)動(dòng)態(tài)內(nèi)存的行為失敗,也會(huì)導(dǎo)致服務(wù)中止,并且還會(huì)導(dǎo)致整個(gè)系統(tǒng)的資源崩潰。一般內(nèi)存泄露就是指系統(tǒng)中堆內(nèi)存的泄露,在云計(jì)算中虛擬技術(shù)作為關(guān)鍵技術(shù),針對(duì)虛擬機(jī)的內(nèi)存管理依然存在著內(nèi)存泄露風(fēng)險(xiǎn)。

    2 當(dāng)前VxWorks系統(tǒng)內(nèi)存泄露檢測(cè)機(jī)制

    針對(duì)當(dāng)前內(nèi)存管理中面對(duì)于內(nèi)存泄漏的檢測(cè)方法中,可以分為動(dòng)態(tài)檢測(cè)方法與靜態(tài)檢測(cè)方法兩類。其中動(dòng)態(tài)檢測(cè)方法中,根據(jù)程序動(dòng)態(tài)內(nèi)存分配時(shí),就可以在內(nèi)存堆中作出標(biāo)記,那么當(dāng)程序退出的時(shí)候,釋放所分配內(nèi)存,可以通過(guò)檢查堆上的殘留的對(duì)象[2],以檢測(cè)程序內(nèi)存是否泄露。靜態(tài)檢測(cè)方法,就是通過(guò)程序源代碼進(jìn)行分析,之后再模擬所有可能執(zhí)行路徑,以此來(lái)判定程序中的可執(zhí)行路徑中是否存在安全缺陷,這樣的檢測(cè)不需要實(shí)際執(zhí)行程序,不僅能夠克服動(dòng)態(tài)分析的開銷較大弊端,還可以提高檢測(cè)性能。

    3 VxWorks系統(tǒng)內(nèi)存泄露檢測(cè)機(jī)制中存在的不足

    對(duì)于當(dāng)前VxWorks操作系統(tǒng)之中,在內(nèi)存泄露檢測(cè)中,依然存在一定的不足,動(dòng)態(tài)檢測(cè)方法雖然可以直接發(fā)現(xiàn)在實(shí)際程序中的缺陷,然而這樣的檢測(cè)機(jī)制中,時(shí)間開銷大,且程序執(zhí)行路徑覆蓋中還存在死角,其內(nèi)存泄露檢測(cè)結(jié)果的完備性不足[3],且實(shí)際中的漏報(bào)率較高。對(duì)于靜態(tài)分析檢測(cè)中,并不能精確判斷程序輸入以及環(huán)境變量等數(shù)據(jù)信息,因此在其檢測(cè)之中的模擬執(zhí)行路徑可能會(huì)存在不可行路徑,靜態(tài)分析方法的誤報(bào)率也較高。內(nèi)存泄漏檢測(cè)機(jī)制中,主要基于靜態(tài)代碼插樁、中斷式插入、熱補(bǔ)丁三種方式,但是這些都無(wú)法滿足嵌入式操作系統(tǒng)對(duì)內(nèi)存泄漏檢測(cè)機(jī)制的需求,不能滿足實(shí)時(shí)性、便捷性以及可靠性的要求,還會(huì)導(dǎo)致操作系統(tǒng)內(nèi)存崩潰。

    4 改進(jìn)后的VxWorks 操作系統(tǒng)內(nèi)存泄露檢測(cè)機(jī)制

    針對(duì)以上內(nèi)存泄露檢測(cè)機(jī)制中的不足,可以在基于Xen虛擬機(jī)的內(nèi)存管理機(jī)制,采取動(dòng)態(tài)檢測(cè)虛擬機(jī)取檢測(cè)內(nèi)存泄露,其主要原理就是在虛擬機(jī)運(yùn)行時(shí),可以修改開源軟件Valgrind中的源碼,將其內(nèi)插入監(jiān)測(cè)代碼,以便去動(dòng)態(tài)截獲虛擬機(jī)中申請(qǐng)的內(nèi)存函數(shù)和釋放內(nèi)存函數(shù),將其記錄下來(lái),以此來(lái)檢測(cè)內(nèi)存泄露,該內(nèi)存檢測(cè)機(jī)制不僅不需要修改被探測(cè)程序源代碼,也不需要去重新編譯,簡(jiǎn)化檢測(cè)力度,降低內(nèi)存泄露檢測(cè)的漏報(bào)率。

    4.1 動(dòng)態(tài)截獲虛擬機(jī)內(nèi)存原理

    該檢測(cè)機(jī)制中,對(duì)于內(nèi)存申請(qǐng)、釋放的接口均具有統(tǒng)一、簡(jiǎn)單的特色,通過(guò)動(dòng)態(tài)檢測(cè)方法通對(duì)內(nèi)存管理機(jī)制進(jìn)行研究,用來(lái)截獲內(nèi)存申請(qǐng)以及釋放的函數(shù),可重載內(nèi)存管理函數(shù)、內(nèi)存讀取函數(shù)以及進(jìn)行指針運(yùn)算,有效控制內(nèi)存的操作功能。在內(nèi)存分配以及回收中,主要是通過(guò)malloc與free實(shí)現(xiàn),通過(guò)鉤子程序與宏定義的方式進(jìn)行替換,并且還具備記錄調(diào)用函數(shù)源文件、與源文件所處位置的功能,還可以在自定義表中增加以及刪除調(diào)用信息,不管是針對(duì)管理內(nèi)存塊、堆、棧以及全局變量,只要是有指針引用該內(nèi)存,內(nèi)存塊的起始地址和內(nèi)存塊大小等信息就會(huì)被記錄到全局表中,從符號(hào)表中得到靜態(tài)內(nèi)存,通過(guò)重載內(nèi)存管理函數(shù)實(shí)現(xiàn)對(duì)堆里動(dòng)態(tài)內(nèi)存的分配。

    4.2 自動(dòng)內(nèi)存泄漏檢測(cè)機(jī)制的優(yōu)勢(shì)

    在基于VxWorks操作系統(tǒng)自動(dòng)內(nèi)存泄漏檢測(cè)機(jī)制中,可以預(yù)定義內(nèi)存泄漏的門限以及內(nèi)存駐留時(shí)間門限,并通過(guò)中斷服務(wù)去喚醒檢測(cè)任務(wù),以此例收集泄漏內(nèi)存信息,不僅具有實(shí)時(shí)性、便捷性;自動(dòng)內(nèi)存泄漏檢測(cè)機(jī)制,在可靠性方面也有很大的應(yīng)用價(jià)值,可以滿足不同內(nèi)存用戶環(huán)境下的內(nèi)存泄漏檢測(cè)需求。

    4.3 自動(dòng)內(nèi)存泄漏檢測(cè)機(jī)制實(shí)際應(yīng)用

    在VxWorks操作系統(tǒng)的自動(dòng)內(nèi)存泄漏檢測(cè)機(jī)制中,主要包括內(nèi)存塊頭結(jié)構(gòu)、中斷及檢測(cè)任務(wù)以及檢測(cè)結(jié)果三個(gè)部分,從而實(shí)現(xiàn)對(duì)VxWorks內(nèi)存泄露的有效檢測(cè)。其中在內(nèi)存塊頭結(jié)構(gòu)中,VxWorks 系統(tǒng)會(huì)在分配每個(gè)內(nèi)存塊的同時(shí),也為其分配一個(gè)塊頭Block_Hdr,不僅標(biāo)記有指向前一塊指針,還包括塊大小、塊標(biāo)識(shí)等信息,其塊頭結(jié)構(gòu)如下所示:

    Typedef struct blockHdr

    {

    struct blockHdr * pPrevHdr;

    unsigned int nWords:31;

    unsigned int free:1;

    } BLOCK_HDR;

    可以標(biāo)記任務(wù)ID、任務(wù)棧信息、內(nèi)存創(chuàng)建時(shí)間、內(nèi)存狀態(tài)以及內(nèi)存塊大小等。在VxWorks的中斷及檢測(cè)任務(wù)中,為提高VxWorks 的實(shí)時(shí)性,以中斷方式告知系統(tǒng)外部事件,判斷系統(tǒng)內(nèi)存占用率,提高中斷服務(wù)程序能力,進(jìn)行針對(duì)硬件的中斷處理。追加定位信息的內(nèi)存塊頭結(jié)構(gòu)如下所示:

    Typedef struct memInfoHdr

    {

    unsigned int moduleID;

    unsigned int taskID;

    unsigned int stack[MAX_CALLLS];

    unsigned int crtTime;

    unsigned int isFreed;

    unsigned int size;

    } MEM_INFO_HDR;

    在內(nèi)存泄露檢測(cè)中,實(shí)現(xiàn)內(nèi)存泄漏檢測(cè)的自動(dòng)運(yùn)行,通過(guò)中斷及檢測(cè)任務(wù),保證檢測(cè)機(jī)制的實(shí)時(shí)性,提高內(nèi)存泄露檢測(cè)的靈活性,進(jìn)一步定位內(nèi)存泄漏點(diǎn)及問(wèn)題代碼,實(shí)施中斷處理,自行啟動(dòng)態(tài)內(nèi)存頭的信息,確保系統(tǒng)資源使用情況。

    5 結(jié)束語(yǔ)

    綜上所述,針對(duì)嵌入式操作系統(tǒng)的內(nèi)存泄漏問(wèn)題,可以采取動(dòng)態(tài)檢測(cè)虛擬機(jī)中內(nèi)存泄露的方法,對(duì)應(yīng)用程序中資源的申請(qǐng)、釋放以及資源使用情況進(jìn)行檢測(cè),并插入有效的監(jiān)測(cè)代碼,以便檢測(cè)出VxWorks系統(tǒng)內(nèi)存泄露代碼,不僅具有一定的可行性,對(duì)提高VxWorks內(nèi)存泄露檢測(cè)機(jī)制也發(fā)揮不小的作用。

    參考文獻(xiàn):

    [1]朱筱菲,黃鳳崗.一種基于VxWorks的內(nèi)存分配算法[J].工業(yè)控制計(jì)算機(jī),2010,21(14):56-57.

    [2]何先波,鐘樂(lè)海,蘆東昕.嵌入式操作系統(tǒng)封裝層的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2011,14(12):76-77.

    [3]萬(wàn)逸珠,戚文芽.嵌入式實(shí)時(shí)操作系統(tǒng)Vx Works的內(nèi)存管理方案[J].信息工程大學(xué)學(xué)報(bào),2012,07(18):41-42.

    作者單位:西安近代光學(xué)研究所,西安 710065

    公主岭市| 丰台区| 甘洛县| 白朗县| 河北区| 通州市| 湖北省| 天等县| 庆阳市| 宽甸| 星座| 客服| 礼泉县| 赣榆县| 南开区| 甘洛县| 武城县| 高密市| 双鸭山市| 锡林浩特市| 金寨县| 新余市| 丰城市| 吉木萨尔县| 万宁市| 池州市| 屯昌县| 天祝| 苍溪县| 正阳县| 农安县| 天门市| 乌海市| 禄丰县| 乌兰察布市| 汝南县| 年辖:市辖区| 田林县| 金门县| 日喀则市| 边坝县|