[發(fā)明專利]一種嵌入式系統(tǒng)熱補丁實現(xiàn)方法在審
| 申請?zhí)枺?/td> | 201710961788.6 | 申請日: | 2017-10-17 |
| 公開(公告)號: | CN107766069A | 公開(公告)日: | 2018-03-06 |
| 發(fā)明(設(shè)計)人: | 劉東棟 | 申請(專利權(quán))人: | 安徽皖通郵電股份有限公司 |
| 主分類號: | G06F8/65 | 分類號: | G06F8/65;G06F8/71 |
| 代理公司: | 北京科億知識產(chǎn)權(quán)代理事務(wù)所(普通合伙)11350 | 代理人: | 湯東鳳 |
| 地址: | 230000 *** | 國省代碼: | 安徽;34 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 嵌入式 系統(tǒng) 補丁 實現(xiàn) 方法 | ||
1.一種嵌入式系統(tǒng)熱補丁實現(xiàn)方法,包括補丁版本的在線配置和查詢、補丁版本添加、刪除、激活、去激活的前臺處理、主備補丁版本同步、外圍單板版本回寫,其特征在于包括以下步驟:
步驟一,制作熱補丁
對需要修復(fù)的源代碼進行修改,編譯生成動態(tài)庫,然后打包成補丁包pkg;
步驟二,添加熱補丁
把制作好的熱補丁包pkg加載到嵌入式通信設(shè)備的存儲中;
步驟三,激活熱補丁
把嵌入式存儲設(shè)備中的熱補丁包加載到被補丁進程的內(nèi)存空間中,讓需要補丁的指令跳轉(zhuǎn)到補丁區(qū)域,使用新的指令來完成功能,執(zhí)行完補丁區(qū)域的指令后,直接返回到原來指令區(qū)域,補丁區(qū)域和原來指令區(qū)域可以切換和跳轉(zhuǎn);
執(zhí)行步驟三后,被補丁的指令跳轉(zhuǎn)到了補丁區(qū)域?qū)?yīng)指令執(zhí)行,有如下兩種補丁場景:
所補丁模塊屬于關(guān)鍵進程所承載的流程,而且是可以補丁的范圍,則可以制作補丁,直接對關(guān)鍵進程打補丁,不需要重啟系統(tǒng),
所補丁模塊屬于非關(guān)鍵進程所承載的流程,涉及的修改較多,則對非關(guān)鍵進程通過打補丁的方式進行替換,然后重啟進程,不需要重啟整個系統(tǒng);
步驟四,去激活熱補丁
停止正在使用的補丁,使指令恢復(fù)到補丁前所指向,這時補丁區(qū)域處于空閑狀態(tài);
步驟五,刪除熱補丁
對于已經(jīng)去激活的補丁刪除通信設(shè)備存儲中的熱補丁包,從系統(tǒng)中移除熱補?。?/p>
步驟六,同步熱補丁
在主備單板之間,外圍單板之間進行同樣適用的熱補丁進行同步。
2.根據(jù)權(quán)利要求1所述的一種嵌入式系統(tǒng)熱補丁實現(xiàn)方法,其特征在于所述的步驟一包括以下步驟:
1)確定需要打補丁的進程;
2)修改打補丁的代碼,確定修改的粒度,新增和修改變量、函數(shù);一個進程至少可以打一個熱補丁,熱補丁依賴關(guān)系由熱補丁管理系統(tǒng)管理;
3)編譯修改的補丁代碼,編譯成動態(tài)庫,包含-fPIC和-shared選項;
4)使用熱補丁制作工具確定原指令和補丁指令之間的對應(yīng)關(guān)系,然后生成熱補丁包pkg,補丁包中可以包含補丁版本號,補丁制作信息用于多個熱補丁管理。
3.根據(jù)權(quán)利要求1所述的一種嵌入式系統(tǒng)熱補丁實現(xiàn)方法,其特征在于所述的步驟三以注射共享庫到一個運行期進程,步驟如下:
(1)調(diào)用ptrace關(guān)聯(lián)到目標進程;
(2)發(fā)現(xiàn)裝載共享庫的函數(shù),一般是_dl_open調(diào)用,將使用_dl_open裝載.so共享庫;
(3)裝載指定的.so共享動態(tài)庫;
(4)通過替換函數(shù)第一條指令為相對跳轉(zhuǎn)指令來重定向來完成我們需要的功能,函數(shù)入口指令跳轉(zhuǎn)到注射的共享庫中的替換函數(shù)入口指令;
(5)脫離進程;
通過以上步驟,被補丁的指令跳轉(zhuǎn)到了補丁區(qū)域?qū)?yīng)指令執(zhí)行;這時補丁區(qū)域可以是關(guān)鍵進程中替換的新的指令,也可以是替換的非關(guān)鍵進程,非關(guān)鍵進程打了熱補丁之后需要重啟觸發(fā)進程重啟,不會影響正在運行的關(guān)鍵進程的業(yè)務(wù)。
4.根據(jù)權(quán)利要求1所述的一種嵌入式系統(tǒng)熱補丁實現(xiàn)方法,其特征在于所述的步驟四包括以下步驟:
1)判斷線程是否在調(diào)用被補丁函數(shù):
是,則繼續(xù)運行調(diào)用被補丁函數(shù)的線程,并重復(fù)判斷N次,
否,則使用ptrace關(guān)聯(lián)進去保持不調(diào)用被補丁函數(shù)的線程掛起狀態(tài);
2)發(fā)現(xiàn)裝載共享庫的函數(shù),一般是_dl_open調(diào)用,使用_dl_open裝載.so共享庫;
3)裝載指定的.so共享動態(tài)庫;
4)通過替換函數(shù)第一條指令為相對跳轉(zhuǎn)指令重定向完成替換故障函數(shù)的目的,使用共享庫中新的替換函數(shù)執(zhí)行正確的功能,函數(shù)入口指令修改為相對跳轉(zhuǎn)指令,跳轉(zhuǎn)到共享動態(tài)庫中替換函數(shù)的入口指令;
5)脫離進程。
5.根據(jù)權(quán)利要求1所述的一種嵌入式系統(tǒng)熱補丁實現(xiàn)方法,其特征在于所述的步驟六中對于分布式通信設(shè)備,涉及主備單板,外圍單板,單板上運行的基礎(chǔ)系統(tǒng)一樣的進程,有時發(fā)生同樣的故障,可以通過補丁管理系統(tǒng)分別對每個單板進行打熱補丁,也可以通過熱補丁同步來對所有單板打同樣的補丁,特別對于同構(gòu)單板,熱補丁同步是必須的步驟,以免主備倒換后主備系統(tǒng)不一致導(dǎo)致異常。
6.根據(jù)權(quán)利要求5所述的一種嵌入式系統(tǒng)熱補丁實現(xiàn)方法,其特征在于,熱補丁涉及指令操作,需要嚴格和CPU體系匹配,同步熱補丁適用于相同CPU體系的單板。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于安徽皖通郵電股份有限公司,未經(jīng)安徽皖通郵電股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710961788.6/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:防皮膚老化奶茶及其制備方法
- 下一篇:一種纖體茶及其制作方法
- 互動業(yè)務(wù)終端、實現(xiàn)系統(tǒng)及實現(xiàn)方法
- 街景地圖的實現(xiàn)方法和實現(xiàn)系統(tǒng)
- 游戲?qū)崿F(xiàn)系統(tǒng)和游戲?qū)崿F(xiàn)方法
- 圖像實現(xiàn)裝置及其圖像實現(xiàn)方法
- 增強現(xiàn)實的實現(xiàn)方法以及實現(xiàn)裝置
- 軟件架構(gòu)的實現(xiàn)方法和實現(xiàn)平臺
- 數(shù)值預(yù)報的實現(xiàn)方法及實現(xiàn)系統(tǒng)
- 空調(diào)及其冬眠控制模式實現(xiàn)方法和實現(xiàn)裝置以及實現(xiàn)系統(tǒng)
- 空調(diào)及其睡眠控制模式實現(xiàn)方法和實現(xiàn)裝置以及實現(xiàn)系統(tǒng)
- 輸入設(shè)備實現(xiàn)方法及其實現(xiàn)裝置





