[發(fā)明專利]一種基于異步檢查點的多線程軟件動態(tài)升級方法有效
| 申請?zhí)枺?/td> | 201410305827.3 | 申請日: | 2014-06-27 |
| 公開(公告)號: | CN104111848B | 公開(公告)日: | 2017-04-26 |
| 發(fā)明(設計)人: | 鄒德清;羌衛(wèi)中;金海;王皓 | 申請(專利權(quán))人: | 華中科技大學 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445 |
| 代理公司: | 華中科技大學專利中心42201 | 代理人: | 朱仁玲 |
| 地址: | 430074 湖北*** | 國省代碼: | 湖北;42 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 異步 檢查點 多線程 軟件 動態(tài) 升級 方法 | ||
1.一種基于異步檢查點的多線程軟件動態(tài)升級方法,其特征在于,包括以下步驟:
(1)獲取待升級軟件的新舊版本,分別提取新舊版本中的項目源文件,并分別將該新舊版本的項目源文件整合;
(2)對整合后的新版本的項目源文件和舊版本的項目源文件進行對比,以生成初級補??;
(3)將異步檢查點插入初級補丁中,以生成動態(tài)升級補丁,其中異步檢查點中保存了待升級軟件的新舊版本的延續(xù)點的映射關系;
(4)將生成的動態(tài)升級補丁加載到運行中的待升級軟件的舊版本中;
(5)接收用戶的初始化請求,并根據(jù)該初始化請求使用動態(tài)升級補丁中待更新的函數(shù)名查找內(nèi)存中對應的函數(shù)體,并將步驟(3)中的異步檢查點插入該函數(shù)體中;
(6)接收用戶的應用請求,并根據(jù)該應用請求利用異步檢查點算法使待升級軟件中的所有線程達到阻塞狀態(tài);
(7)對于待升級軟件中的線程中未被使用和執(zhí)行的函數(shù)及變量,采用二進制重寫的方式實現(xiàn)函數(shù)的間接跳轉(zhuǎn),對于待升級軟件中的線程中正在使用和執(zhí)行的函數(shù)及變量,采用堆棧重構(gòu)的方式進行映射和狀態(tài)轉(zhuǎn)換;
(8)根據(jù)動態(tài)升級補丁中異步檢查點中保存的新舊版本的延續(xù)點的映射關系恢復執(zhí)行所有線程,過程結(jié)束。
2.根據(jù)權(quán)利要求1所述的多線程軟件動態(tài)升級方法,其特征在于,步驟(1)是采用通用中間語言中的合并功能進行項目源文件的整合。
3.根據(jù)權(quán)利要求1所述的多線程軟件動態(tài)升級方法,其特征在于,步驟(5)將異步檢查點插入函數(shù)體中是利用動態(tài)插樁方式,插入函數(shù)體的位置是位于該函數(shù)體的頭部、循環(huán)體的開頭、函數(shù)調(diào)用之前。
4.根據(jù)權(quán)利要求1所述的多線程軟件動態(tài)升級方法,其特征在于,步驟(6)具體包括以下子步驟:
(6-1)接收用戶的應用請求,該應用請求中包括待更新軟件的進程ID、以及步驟(3)中動態(tài)升級補丁文件的路徑;
(6-2)初始化空的第一映射表和第二映射表,其中第一映射表表示線程已經(jīng)獲得的臨界變量以及協(xié)助動態(tài)升級的鎖,第二映射表表示線程希望獲得的臨界變量以及協(xié)助動態(tài)升級的鎖;
(6-3)通過包裝替換系統(tǒng)調(diào)用來追蹤線程的共享臨界變量和協(xié)助動態(tài)升級的鎖,當系統(tǒng)每次對共享臨界變量和協(xié)助動態(tài)升級的鎖有操作時,查找步驟(6-2)中的第一映射表和第二映射表,然后進入步驟(6-4),若沒有則將臨界變量名和協(xié)助動態(tài)升級的鎖的名稱添加到第一映射表和第二映射表中,并在每個變量或鎖的后面添加對其操作的線程ID,然后進入步驟(6-4);
(6-4)判斷線程是占用協(xié)助動態(tài)升級的鎖,還是占用共享臨界變量,如果是前者則先將其線程ID添加到第二映射表中,如果第一映射表中協(xié)助動態(tài)升級的鎖沒有線程ID,則將其線程ID添加到第一映射表中協(xié)助動態(tài)升級的鎖后面,并將該線程標記為協(xié)助狀態(tài),如果第一映射表中協(xié)助動態(tài)升級的鎖有線程ID將該線程標記為阻塞狀態(tài);如果是后者則先將其線程ID添加到第二映射表中,如果第一映射表中對應的共享臨界變量沒有線程ID,則將其線程ID添加到第一映射表中該共享臨界變量的后面,并將該線程標記為協(xié)助狀態(tài),如果第一映射表中對應的共享臨界變量有線程ID將該線程標記為阻塞狀態(tài);
(6-5)持續(xù)檢查所有線程的狀態(tài),當發(fā)現(xiàn)沒有線程處于run狀態(tài)時,則將標記為協(xié)助狀態(tài)的線程阻塞,此時所有線程都進入阻塞狀態(tài),通知系統(tǒng)可以進行后續(xù)的動態(tài)升級操作。
5.一種基于異步檢查點的多線程軟件動態(tài)升級系統(tǒng),其特征在于,包括:
第一模塊,用于獲取待升級軟件的新舊版本,分別提取新舊版本中的項目源文件,并分別將該新舊版本的項目源文件整合;
第二模塊,用于對整合后的新版本的項目源文件和舊版本的項目源文件進行對比,以生成初級補??;
第三模塊,用于將異步檢查點插入初級補丁中,以生成動態(tài)升級補丁,其中異步檢查點中保存了待升級軟件的新舊版本的延續(xù)點的映射關系;
第四模塊,用于將生成的動態(tài)升級補丁加載到運行中的待升級軟件的舊版本中;
第五模塊,用于接收用戶的初始化請求,并根據(jù)該初始化請求使用動態(tài)升級補丁中待更新的函數(shù)名查找內(nèi)存中對應的函數(shù)體,并將第三模塊中的異步檢查點插入該函數(shù)體中;
第六模塊,用于接收用戶的應用請求,并根據(jù)該應用請求利用異步檢查點算法使待升級軟件中的所有線程達到阻塞狀態(tài);
第七模塊,用于對于待升級軟件中的線程中未被使用和執(zhí)行的函數(shù)及變量,采用二進制重寫的方式實現(xiàn)函數(shù)的間接跳轉(zhuǎn),對于待升級軟件中的線程中正在使用和執(zhí)行的函數(shù)及變量,采用堆棧重構(gòu)的方式進行映射和狀態(tài)轉(zhuǎn)換;
第八模塊,用于根據(jù)動態(tài)升級補丁中異步檢查點中保存的新舊版本的延續(xù)點的映射關系恢復執(zhí)行所有線程,過程結(jié)束。
該專利技術(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/201410305827.3/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 多線程應用系統(tǒng)的異常處理方法和異常處理裝置
- 一種面向片上網(wǎng)絡的多線程調(diào)度實現(xiàn)方法
- 基于計算機多線程多核顯微鏡細胞圖像快速掃描處理方法
- 一種基于同步鎖的多線程處理方法、終端以及存儲介質(zhì)
- 多線程并發(fā)處理系統(tǒng)及方法
- 海外控股估值流程控制方法、裝置、計算機設備及存儲介質(zhì)
- 讀數(shù)方法、電子裝置、計算機設備及存儲介質(zhì)
- 一種基于云平臺多線程調(diào)度的方法、系統(tǒng)、設備及介質(zhì)
- 一種基于云平臺的前端多線程調(diào)度方法和系統(tǒng)
- 多線程調(diào)度方法、裝置、電子設備及存儲介質(zhì)





