两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法

文檔序號(hào):6548792閱讀:327來(lái)源:國(guó)知局
一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法
【專利摘要】本發(fā)明提供一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法,屬于計(jì)算機(jī)操作系統(tǒng)領(lǐng)域,本發(fā)明通過(guò)添加一個(gè)系統(tǒng)調(diào)用,用于更新指定的內(nèi)核模塊,本方法所說(shuō)的系統(tǒng)調(diào)用實(shí)現(xiàn)了一個(gè)正在運(yùn)行著的內(nèi)核模塊,在不卸載及重新裝載的前提下,更新其代碼,用此內(nèi)核模塊新的版本替換舊的版本,并且,最關(guān)鍵的是:在此過(guò)程中,此內(nèi)核模塊仍能正常使用,即不中斷其提供的服務(wù)。
【專利說(shuō)明】 一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法
[0001]【技術(shù)領(lǐng)域】
本發(fā)明提供一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法,屬于計(jì)算機(jī)操作系統(tǒng)領(lǐng)域。通過(guò)添加一個(gè)新的系統(tǒng)調(diào)用,實(shí)現(xiàn)更新一個(gè)正在使用中的內(nèi)核動(dòng)態(tài)裝載的模塊代碼到新的版本。
【背景技術(shù)】
[0002]Linux內(nèi)核可熱插撥內(nèi)核模塊技術(shù)的出現(xiàn)極大的方便了 Linux內(nèi)核程序的開(kāi)發(fā),它使得人們?cè)贚inux上可以不重啟系統(tǒng)的前提下,添加需要用到的內(nèi)核模塊程序,并在不需要時(shí)卸載它,也不用重啟操作系統(tǒng),一直以來(lái),人們都認(rèn)為,這已經(jīng)非常方便各種應(yīng)用程序及設(shè)備驅(qū)動(dòng)的開(kāi)發(fā)了。但是,近年來(lái),各種高可靠性、高可持續(xù)性的服務(wù)要求對(duì)此特性越來(lái)越不滿足:我的重要服務(wù)在任何狀況下都盡可能不要中斷業(yè)務(wù),但在更新服務(wù)軟件相關(guān)的內(nèi)核模塊時(shí),服務(wù)程序不得不暫時(shí)停止,等相關(guān)的內(nèi)核模塊的新版本被裝載進(jìn)操作系統(tǒng)內(nèi)核后,再重新啟動(dòng)服務(wù)程序提供服務(wù),盡管維護(hù)者會(huì)盡可能在短時(shí)間內(nèi)完成這些事務(wù)性的工作,但是,這個(gè)短暫的中斷對(duì)于要求高可用性的服務(wù)仍然有著巨大的不良影響。
[0003]當(dāng)然,也許有人會(huì)說(shuō):可以利用雙機(jī)備份,等多種方式方法來(lái)解決這個(gè)問(wèn)題,但是,越發(fā)復(fù)雜的服務(wù)器集群一類的架構(gòu)不僅增加了大量的金錢浪費(fèi),而且也增加了出故障的更多可能,并且維護(hù)相關(guān)的費(fèi)用也是無(wú)底洞!因此迫切需要出現(xiàn)一種能夠以較低的成本,幾乎完全不中斷服務(wù)的方法去更新服務(wù)程序相關(guān)的內(nèi)核模塊技術(shù)。

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

[0004]一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法。為實(shí)現(xiàn)這一目的,本發(fā)明的技術(shù)解決方案是:通過(guò)向Linux操作系統(tǒng)添加一個(gè)內(nèi)核模塊升級(jí)系統(tǒng)調(diào)用,提供更新指定的內(nèi)核模塊的能力。本方法在內(nèi)核模塊升級(jí)系統(tǒng)調(diào)用實(shí)現(xiàn)了一個(gè)正在運(yùn)行著的內(nèi)核模塊,在不卸載及重新裝載的前提下,更新其代碼,用此內(nèi)核模塊新的版本替換舊的版本,在此過(guò)程中,此內(nèi)核模塊仍能正常使用,即不中斷該內(nèi)核模塊提供的服務(wù)。
[0005]通過(guò)在操作系統(tǒng)中新添加的模塊升級(jí)系統(tǒng)調(diào)用,同步地把指定的內(nèi)核模塊由當(dāng)前版本,升級(jí)到一個(gè)新的版本,并且這個(gè)新的版本可以是比當(dāng)前版本高或者低的。
[0006]當(dāng)使用模塊升級(jí)系統(tǒng)調(diào)用升級(jí)可熱插撥內(nèi)核模塊時(shí),以原模塊及新模塊全路徑為參數(shù),在升級(jí)內(nèi)存中的運(yùn)行著的該模塊的同時(shí)升級(jí)文件系統(tǒng)中的原模塊。
[0007]在升級(jí)正在運(yùn)行中的內(nèi)核模塊的過(guò)程為:
a.模塊升級(jí)系統(tǒng)調(diào)用把新版本的內(nèi)核模塊代碼添加到正在運(yùn)行著的內(nèi)核映像內(nèi)存中
去;
b.檢測(cè)舊版本的內(nèi)核模塊函數(shù)是否正在使用中,如果沒(méi)有在使用中,則在它的開(kāi)始處注入一個(gè)跳轉(zhuǎn)指令,從而調(diào)用函數(shù)的在新版本內(nèi)核中的實(shí)現(xiàn);
c.如果在使用中,則暫時(shí)放棄替換該函數(shù),并睡眠一小會(huì),然后再次嘗試b中的動(dòng)作,重復(fù)數(shù)次,如果失敗,則恢復(fù)原狀; 在升級(jí)文件系統(tǒng)中的原模塊的過(guò)程為:
a.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)把新模塊拷貝到原模塊目錄中,并命名一個(gè)新名字;
b.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)刪除原模塊;
c.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)把新模塊重命名為原模塊的名字,完成升級(jí)。
[0008]本發(fā)明的有益效果是:
本發(fā)明提供一種不中斷服務(wù)的方法去更新服務(wù)程序相關(guān)的內(nèi)核模塊技術(shù),在內(nèi)核模塊升級(jí)系統(tǒng)調(diào)用實(shí)現(xiàn)了一個(gè)正在運(yùn)行著的內(nèi)核模塊,在不卸載及重新裝載的前提下,更新其代碼,用此內(nèi)核模塊新的版本替換舊的版本,在此過(guò)程中,此內(nèi)核模塊仍能正常使用,即不中斷該內(nèi)核模塊提供的服務(wù)。實(shí)現(xiàn)了能夠以較低的成本,幾乎完全不中斷服務(wù)的方法去更新服務(wù)程序相關(guān)的內(nèi)核模塊技術(shù)。
【專利附圖】

【附圖說(shuō)明】
[0009]圖1是Linux可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)原理圖;
圖2是Linux可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)流程簡(jiǎn)圖。
【具體實(shí)施方式】
[0010]下面按照說(shuō)明書(shū)附圖對(duì)本發(fā)明作詳細(xì)說(shuō)明:
本發(fā)明的技術(shù)解決方案是:通過(guò)向Linux操作系統(tǒng)添加一個(gè)內(nèi)核模塊升級(jí)系統(tǒng)調(diào)用,提供更新指定的內(nèi)核模塊的能力。本方法在內(nèi)核模塊升級(jí)系統(tǒng)調(diào)用實(shí)現(xiàn)了一個(gè)正在運(yùn)行著的內(nèi)核模塊,在不卸載及重新裝載的前提下,更新其代碼,用此內(nèi)核模塊新的版本替換舊的版本,在此過(guò)程中,此內(nèi)核模塊仍能正常使用,即不中斷該內(nèi)核模塊提供的服務(wù)。
[0011]如圖1,內(nèi)核模塊升級(jí)系統(tǒng)調(diào)用,先把新內(nèi)核模塊代碼添加到內(nèi)核映像中去,然后在舊模塊要升級(jí)的函數(shù)入口處,注入跳轉(zhuǎn)指令(X86系統(tǒng)上jmp是跳轉(zhuǎn)指令),跳轉(zhuǎn)到新內(nèi)核模塊的對(duì)應(yīng)于舊模塊的函數(shù)升級(jí)后的新函數(shù)去執(zhí)行新函數(shù)的代碼,從而實(shí)現(xiàn)了舊模塊中的代碼更新為新模塊中的代碼。
[0012]在Linux操作系統(tǒng),添加內(nèi)核模塊升級(jí)系統(tǒng)調(diào)用,在該系統(tǒng)調(diào)用中升級(jí)正在運(yùn)行中的舊內(nèi)核模塊及在文件系統(tǒng)中的舊內(nèi)核模塊,如圖2:
在升級(jí)正在運(yùn)行中的內(nèi)核模塊的過(guò)程為:
a.校驗(yàn)證新內(nèi)核模塊是否是舊內(nèi)核模塊的升級(jí)版本或降級(jí)版本;
b.模塊升級(jí)系統(tǒng)調(diào)用把新版本的內(nèi)核模塊代碼添加到正在運(yùn)行著的內(nèi)核映像內(nèi)存中
去;
c.檢測(cè)舊版本的內(nèi)核模塊函數(shù)是否正在使用中,如果沒(méi)有在使用中,則在它的開(kāi)始處注入一個(gè)跳轉(zhuǎn)指令,從而調(diào)用函數(shù)的在新版本內(nèi)核中的實(shí)現(xiàn);
d.如果在使用中,則暫時(shí)放棄替換該函數(shù),并睡眠一小會(huì),然后再次嘗試b中的動(dòng)作,重復(fù)數(shù)次,如果失敗,則恢復(fù)原狀;
在升級(jí)文件系統(tǒng)中的原模塊的過(guò)程為:
a.校驗(yàn)證新內(nèi)核模塊是否是舊內(nèi)核模塊的升級(jí)版本或降級(jí)版本;
b.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)把新模塊拷貝到原模塊目錄中,并命名一個(gè)新名字;
C.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)刪除原模塊;
d.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)把新模塊重命名為原模塊的名字,完成升級(jí)。這樣便實(shí)現(xiàn)了一個(gè)正在運(yùn)行著的內(nèi)核模塊,在不卸載及重新裝載的前提下,更新其代碼,用此內(nèi)核模塊新的版本替換舊的版本,在此過(guò)程中,此內(nèi)核模塊仍能正常使用,即不中斷該內(nèi)核模塊提供的服務(wù)。
【權(quán)利要求】
1.一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法,其特征在于通過(guò)添加一個(gè)新的系統(tǒng)調(diào)用,實(shí)現(xiàn)更新一個(gè)正在使用中的內(nèi)核動(dòng)態(tài)裝載的模塊代碼到新的版本,并不中斷該模塊原來(lái)提供的任何服務(wù)。
2.如權(quán)利要求1所述的一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法,其特征在于:通過(guò)在操作系統(tǒng)中新添加的模塊升級(jí)系統(tǒng)調(diào)用,同步地把指定的內(nèi)核模塊由當(dāng)前版本,升級(jí)到一個(gè)新的版本,并且這個(gè)新的版本可以是比當(dāng)前版本高或者低的。
3.如權(quán)利要求2所述的一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法,其特征在于:當(dāng)使用模塊升級(jí)系統(tǒng)調(diào)用升級(jí)可熱插撥內(nèi)核模塊時(shí),以原模塊及新模塊全路徑為參數(shù),在升級(jí)內(nèi)存中的運(yùn)行著的該模塊的同時(shí)升級(jí)文件系統(tǒng)中的原模塊。
4.如權(quán)利要求3所述的一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法,其特征在于:在升級(jí)正在運(yùn)行中的內(nèi)核模塊的過(guò)程為: a.模塊升級(jí)系統(tǒng)調(diào)用把新版本的內(nèi)核模塊代碼添加到正在運(yùn)行著的內(nèi)核映像內(nèi)存中去; b.檢測(cè)舊版本的內(nèi)核模塊函數(shù)是否正在使用中,如果沒(méi)有在使用中,則在它的開(kāi)始處注入一個(gè)跳轉(zhuǎn)指令,從而調(diào)用函數(shù)的在新版本內(nèi)核中的實(shí)現(xiàn); c.如果在使用中,則暫時(shí)放棄替換該函數(shù),并睡眠一小會(huì),然后再次嘗試b中的動(dòng)作,重復(fù)數(shù)次,如果失敗,則恢復(fù)原狀。
5.如權(quán)利要求3所述的一種Linux內(nèi)核可熱插撥內(nèi)核模塊運(yùn)行時(shí)升級(jí)方法,其特征在于:在升級(jí)文件系統(tǒng)中的原模塊的過(guò)程為: a.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)把新模塊拷貝到原模塊目錄中,并命名一個(gè)新名字; b.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)刪除原模塊; c.模塊升級(jí)系統(tǒng)調(diào)用調(diào)用文件系統(tǒng)函數(shù)把新模塊重命名為原模塊的名字,完成升級(jí)。
【文檔編號(hào)】G06F9/445GK103984585SQ201410248550
【公開(kāi)日】2014年8月13日 申請(qǐng)日期:2014年6月6日 優(yōu)先權(quán)日:2014年6月6日
【發(fā)明者】任元 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
隆尧县| 华安县| 舞钢市| 德州市| 新沂市| 吴桥县| 清远市| 水富县| 团风县| 安泽县| 丽江市| 祁阳县| 龙胜| 柘城县| 武邑县| 克山县| 石门县| 沙雅县| 鸡东县| 平南县| 房产| 凤阳县| 田阳县| 博野县| 长寿区| 凤冈县| 泰宁县| 淮阳县| 松滋市| 安塞县| 喀喇| 称多县| 子洲县| 三原县| 宜宾市| 乐至县| 吉隆县| 保靖县| 兰考县| 临沭县| 罗山县|