不要求進程重啟地動態(tài)更新代碼的方法和系統(tǒng)的制作方法
【專利摘要】一種動態(tài)更新授權(quán)代理管理的代碼的方法、系統(tǒng)和計算機程序。所述方法包括執(zhí)行系統(tǒng)存儲器中的代理代碼的多個版本。代理代碼的一個版本被執(zhí)行為有效版本,并且代理代碼的其他版本被執(zhí)行為無效版本。將代理代碼的有效版本和代理代碼的無效版本的版本號存儲在可再加載模塊矢量中。在比較代理代碼的有效版本和代理代碼的無效版本的版本號之后,將之前綁定到代理代碼的無效版本的客戶端實例綁定到代理代碼的有效版本。當沒有客戶端實例綁定到代理代碼的無效版本時,釋放代理代碼的無效版本使用的系統(tǒng)存儲器的部分。
【專利說明】不要求進程重啟地動態(tài)更新代碼的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及動態(tài)更新授權(quán)代理管理的代碼,更具體地,涉及更新授權(quán)代理管理的代碼而不要求代理進程或未授權(quán)進程重啟的方法、系統(tǒng)和計算機程序。
【背景技術(shù)】
[0002]在軟件產(chǎn)品中,該軟件產(chǎn)品可能在給定系統(tǒng)或系統(tǒng)集合上同時具有若干有效實例,通常使用集中的代理進程來管理各個實例。該代理進程可以跟蹤各個實例,并且還可能提供一些服務的集合給實例。在包括授權(quán)(信任)和未授權(quán)(不信任)代碼的系統(tǒng)中,代理將經(jīng)常提供授權(quán)服務的集合給未授權(quán)實例。在代理提供服務給實例的情況下,實例將綁定到代理,可能交換關(guān)于代理提供哪種服務以及如何訪問服務的細節(jié)。
[0003]如果系統(tǒng)管理員想要將服務應用于代理,則實例典型地必須用對新代理代碼提供的服務的任何改變更新。通常,代理停止以便應用服務,然后重新啟動,要求實例重新啟動并綁定到新代理。結(jié)果,實例一段時間不可用,并且停用(outage)出現(xiàn)。在要求服務連續(xù)可用的系統(tǒng)中,該停用是不可接受的,并且要求更新代理代碼的替代方式。
[0004]在當前系統(tǒng)中,代理代碼使用鎖定以指示未授權(quán)實例在接受代理之前應當?shù)却?。這允許代理有機會更新,知道在該時間不會有允許代碼的實例。這導致工作在它們不能使用代理的同時在實例中備份,可能導致對用戶的錯誤消息和/或不可接受的等待時間。
【發(fā)明內(nèi)容】
[0005]相應地,本發(fā)明的一個示例是一種動態(tài)更新授權(quán)代理管理的代碼的方法。該方法包括在系統(tǒng)存儲器中執(zhí)行代理代碼的多個版本。代理代碼的一個版本被執(zhí)行為有效版本,并且代理代碼的其他版本被執(zhí)行為無效版本。該方法還包括將代理代碼的有效版本和代理代碼的無效版本的版本號存儲在可再加載模塊矢量中。該方法還包括在比較代理代碼的有效版本和代理代碼的無效版本的版本號之后,將之前綁定到代理代碼的無效版本的客戶端實例綁定到代理代碼的有效版本。當該方法還包括沒有客戶端實例綁定到代理代碼的無效版本時,釋放代理代碼的無效版本使用的系統(tǒng)存儲器的部分。
[0006]本發(fā)明的一個示例是一種動態(tài)更新授權(quán)代理管理的代碼的系統(tǒng)。所述系統(tǒng)包括系統(tǒng)存儲器和耦合到系統(tǒng)存儲器的計算機處理器。該系統(tǒng)還包括也耦合到計算機處理器的執(zhí)行單元。該執(zhí)行單元在系統(tǒng)存儲器中執(zhí)行代理代碼的多個版本。代理代碼的一個版本被執(zhí)行為有效版本,并且代理代碼的其他版本被執(zhí)行為無效版本。該系統(tǒng)還包括存儲單元。該存儲器單元將代理代碼的有效版本和代理代碼的無效版本的版本號存儲在可再加載模塊矢量中。該系統(tǒng)還包括綁定單元。該綁定單元在比較代理代碼的有效版本和代理代碼的無效版本的版本號之后,將之前綁定到代理代碼的無效版本的客戶端實例綁定到代理代碼的有效版本。該系統(tǒng)還包括釋放單元。當沒有客戶端實例綁定到代理代碼的無效版本時,該釋放單元釋放代理代碼的無效版本使用的系統(tǒng)存儲器的部分。
[0007]本發(fā)明的一個示例是一種動態(tài)更新授權(quán)代理管理的代碼的計算機程序產(chǎn)品。該計算機程序產(chǎn)品包括計算機可讀程序代碼,其配置為:在系統(tǒng)存儲器中執(zhí)行代理代碼的多個版本,其中代理代碼的一個版本被執(zhí)行為有效版本,并且代理代碼的其他版本被執(zhí)行為無效版本;將代理代碼的有效版本和代理代碼的無效版本的版本號存儲在可再加載模塊矢量中;在比較代理代碼的有效版本和代理代碼的無效版本的版本號之后,將之前綁定到代理代碼的無效版本的客戶端實例綁定到代理代碼的有效版本;以及當沒有客戶端實例綁定到代理代碼的無效版本時,釋放代理代碼的無效版本使用的系統(tǒng)存儲器的部分。
【專利附圖】
【附圖說明】
[0008]僅通過示例的方式,現(xiàn)在將參考以下附圖描述本發(fā)明的實施例,附圖中:
[0009]圖1示出根據(jù)本發(fā)明一個實施例的、動態(tài)更新授權(quán)代理管理的代碼的系統(tǒng)。
[0010]圖2A和2B示出根據(jù)本發(fā)明一個實施例的、動態(tài)更新授權(quán)代理管理的代碼的方法。
【具體實施方式】
[0011]參考本發(fā)明的各實施例描述本發(fā)明。貫穿本發(fā)明的描述,參考圖1到2B。當參考附圖時,貫穿全文所示的相似結(jié)構(gòu)和元件用相似參考標號指示。
[0012]在一個實施例中,更新管理未授權(quán)進程的授權(quán)代理進程的更新軟件的方法,更新軟件而不要求代理進程或未授權(quán)進程重啟。該方法管理存儲器中的代理代碼的多個版本,并且管理它的生命周期而不中斷由未授權(quán)進程提供給終端用戶的服務的可用性。
[0013]圖1示出根據(jù)本發(fā)明一個實施例的、動態(tài)更新授權(quán)代理管理的代碼的系統(tǒng)102。該系統(tǒng)可以包括系統(tǒng)存儲器104、計算機處理器106、執(zhí)行單元108、存儲單元114、綁定單元120和釋放單元122。
[0014]執(zhí)行單元108耦合到計算機處理器106,并且執(zhí)行單元108在系統(tǒng)存儲器104中執(zhí)行代理代碼的多個版本。代理代碼的一個版本被執(zhí)行為有效版本110,并且代理代碼的其他版本被執(zhí)行為無效版本112。
[0015]存儲器單元114將代理代碼的有效版本110和代理代碼的無效版本112的版本號存儲在可再加載模塊矢量(reloadable module vector)118中。綁定單元120在比較代理代碼的有效版本110和代理代碼的無效版本112的版本號之后,將之前綁定到代理代碼的無效版本112的客戶端實例綁定到代理代碼的有效版本110。
[0016]當沒有客戶端實例綁定到代理代碼的無效版本112時,釋放單元122釋放代理代碼的無效版本112使用的系統(tǒng)存儲器104的部分。
[0017]在本發(fā)明的一個實施例中,計算機處理器106可以配置為將代理代碼的核心組件124存儲在系統(tǒng)存儲器104的私有存儲126中,并且將代理代碼的動態(tài)組件存儲在系統(tǒng)存儲器104的公共存儲128中。代理代碼的核心組件124可以配置為更新代理代碼的動態(tài)組件。
[0018]系統(tǒng)存儲器104的私有存儲126配置為被單個運行進程使用。系統(tǒng)存儲器的公共存儲128配置為被多個運行進程使用。計算機處理器106可以通過代理代碼的核心組件124加載公共存儲128中存儲的代理代碼的新版本。
[0019]在一個實施例中,計算機處理器106可以配置為當客戶端實例綁定到代理代碼的新版本時,遞增與代理代碼的新版本相關(guān)聯(lián)的代理計數(shù)130。[0020]在一個實施例中,計算機處理器106可以配置為將指向代理代碼的動態(tài)組件的指針132存儲在可再加載模塊矢量118中。計算機處理器106配置為通過可再加載模塊矢量118,將接口 134暴露給客戶端實例,以便通過代理代碼的動態(tài)組件執(zhí)行操作系統(tǒng)功能。代理代碼具有操作系統(tǒng)的用于執(zhí)行操作系統(tǒng)功能的授權(quán),并且客戶端實例不具有操作系統(tǒng)的用于執(zhí)行操作系統(tǒng)功能的授權(quán)。
[0021]在一個實施例中,計算機處理器106可以配置為登記出口點136。所述出口點136在客戶端實例的無效版本112終止時被驅(qū)動。位于出口點的代碼對于代理計數(shù)130連接到的任何可再加載模塊矢量118遞減代理計數(shù)130。當所述代理計數(shù)130遞減到零時,釋放代理代碼的無效版本112。
[0022]在一個實施例中,計算機處理器106可以配置為通過比較代理代碼的新版本和代理代碼的有效版本110的版本號,指定代理代碼的新版本為有效。如果版本號不同,則可以設置與代理代碼的新版本相關(guān)聯(lián)的有效標志138為真,并且設置與代理代碼的有效版本110相關(guān)聯(lián)的有效標志138為假。
[0023]圖2A和2B示出根據(jù)本發(fā)明一個實施例的、動態(tài)更新授權(quán)代理202管理的代碼的方法。該方法包括存儲步驟204。在存儲步驟204期間,將代理代碼的核心組件存儲在系統(tǒng)存儲器的私有存儲中,并且將代理代碼的動態(tài)組件存儲在系統(tǒng)存儲器的公共存儲中。
[0024]代理代碼的核心組件可以配置為更新代理代碼的動態(tài)組件。系統(tǒng)存儲器的私有存儲可以配置為被單個運行進程使用。系統(tǒng)存儲器的公共存儲可以配置為被多個運行進程使用。在一個實施例中,包括代理的軟件可以劃分為兩塊:加載到私有存儲中的部分和加載到公共存儲中的部分。
[0025]加載到私有存儲中的代碼(核心)負責初始化地址空間和加載被加載到公共存儲中的部分。核心還可以聽取由系統(tǒng)管理員發(fā)送的操作者命令。加載到公共存儲的代碼(動態(tài)擴展)提供未授權(quán)進程可以使用的服務。核心的大小與動態(tài)擴展的大小相比非常小。核心不能在沒有重啟代理的情況下被替代。在完成存儲步驟204之后,方法繼續(xù)到執(zhí)行步驟206。
[0026]在執(zhí)行步驟206,可以在系統(tǒng)存儲器中執(zhí)行代理代碼的多個版本。代理代碼的一個版本被執(zhí)行為有效版本,并且代理代碼的其他版本被執(zhí)行為無效版本。在執(zhí)行步驟206完成之后,方法繼續(xù)到存儲步驟208。
[0027]在存儲步驟208,將指向代理代碼的動態(tài)組件的指針存儲在可再加載模塊矢量中??稍偌虞d模塊矢量包含動態(tài)擴展的入口點地址、動態(tài)擴展的版本信息、實例號、有效/無效標志、和正在使用該動態(tài)擴展的其他地址空間的計數(shù)。在存儲步驟208完成之后,方法繼續(xù)到存儲步驟210。
[0028]在存儲步驟210,可以將代理代碼的有效版本和代理代碼的無效版本的版本號存儲在可再加載模塊矢量中。在存儲步驟210完成之后,方法繼續(xù)到暴露步驟212。
[0029]在暴露步驟212,通過可再加載模塊矢量,將接口暴露給客戶端實例,以便通過代理代碼的動態(tài)組件執(zhí)行操作系統(tǒng)功能。代理代碼具有操作系統(tǒng)的用于執(zhí)行操作系統(tǒng)功能的授權(quán),并且客戶端實例不具有操作系統(tǒng)的用于執(zhí)行操作系統(tǒng)功能的授權(quán)。在暴露步驟212完成之后,方法繼續(xù)到登記步驟214。
[0030]在登記步驟214,登記出口點。該出口點在客戶端實例終止時被驅(qū)動。在本發(fā)明的另一實施例中,該出口點在代理代碼的無效版本終止時被驅(qū)動。在一個實施例中,當未授權(quán)進程調(diào)用登記入口點時,登記進程的部分創(chuàng)建出口,該出口在未授權(quán)進程終止時被驅(qū)動。在z/OS操作系統(tǒng)上,例如,這可以通過將資源管理器向z/OS登記來實現(xiàn)。
[0031]登記代碼將當前可再加載模塊矢量定位在眾所周知的位置,并且如果它是有效的,則嘗試遞增正在使用動態(tài)擴展的地址空間的計數(shù)。有效檢查和遞增應當自動進行,并且這在z/OS上可以使用compare-and-swap指令來進行。如果計數(shù)成功遞增,則該未授權(quán)進程連接到代理,并且可以使用代理提供的服務,等待代理可能施加的任何額外授權(quán)檢查。登記代碼通過記錄矢量的實例號,記錄未授權(quán)進程連接到該特定可再加載模塊矢量的事實。在z/OS上,這可以通過登記系統(tǒng)級別名稱令牌,記錄未授權(quán)進程的STOKEN和來自矢量的實例號來進行。在登記步驟214完成之后,方法繼續(xù)到加載步驟216。
[0032]在加載步驟216,通過代理代碼的核心組件加載公共存儲中存儲的代理代碼的新版本。在一個實施例中,如果系統(tǒng)管理員希望提供服務給代理,則將新代理代碼加載到系統(tǒng)上的存儲,并且針對代理發(fā)出操作者命令,指示它再加載。代理將加載新代理代碼,并且加載動態(tài)擴展到公共存儲中。如果動態(tài)擴展中的版本號不同于當前動態(tài)擴展的版本號,則當前動態(tài)擴展將變?yōu)榕f動態(tài)擴展,并且新動態(tài)擴展將變?yōu)楫斍皠討B(tài)擴展。創(chuàng)建新的可再加載模塊矢量。該新的可再加載模塊矢量的實例號比當前可再加載模塊矢量大1,并且在新的可再加載模塊矢量中設置新的動態(tài)擴展地址。在加載步驟216完成之后,方法繼續(xù)到釋放步驟 218。
[0033]在釋放步驟218,指定代理代碼的新版本作為代理代碼的有效版本。在一個實施例中,通過比較代理代碼的新版本和代理代碼的有效版本的版本號,指定代理代碼的新版本作為代理代碼的有效版本。如果版本號不同,則設置與代理代碼的新版本相關(guān)聯(lián)的有效標志為真,并且設置與代理代碼的有效版本相關(guān)聯(lián)的有效標志為假。在指定步驟218完成之后,方法繼續(xù)到遞增步驟220。
[0034]在遞增步驟220,當客戶端實例綁定到代理代碼的新版本時,遞增與代理代碼的新版本相關(guān)聯(lián)的代理計數(shù)。在一個實施例中,當沒有地址空間連接時,計數(shù)從零開始。每次為代理矢量創(chuàng)建可再加載模塊矢量時,實例號遞增。核心向系統(tǒng)登記入口點,這允許未授權(quán)進程向授權(quán)代理登記。在一個實施例中,這在ζ/OS上可以使用PC例程實現(xiàn)??稍偌虞d模塊矢量的地址存儲在存儲中眾所周知的位置。在遞增步驟220完成之后,方法繼續(xù)到綁定步驟 222。
[0035]在綁定步驟222,在比較代理代碼的有效版本和代理代碼的無效版本的版本號之后,將之前綁定到代理代碼的無效版本的客戶端實例綁定到代理代碼的有效版本。在一個實施例中,當未授權(quán)進程調(diào)用代理提供的任何服務時,當前可再加載模塊矢量中的實例號與未授權(quán)進程所綁定的可再加載模塊矢量的實例號比較。如果實例號不同,則未授權(quán)進程必須與該新可再加載模塊矢量綁定。該第二綁定進程要求可再加載模塊矢量中的計數(shù)遞增,并且創(chuàng)建使用該可再加載模塊矢量的該未授權(quán)進程的新記錄。該進程現(xiàn)在將具有綁定到兩個或更多可再加載模塊矢量的兩個或更多記錄。未授權(quán)進程現(xiàn)在使用更新的代理代碼。在綁定步驟222完成之后,方法繼續(xù)到遞減步驟224。
[0036]在遞減步驟224,當出口點被驅(qū)動時,遞減與代理代碼的無效版本相關(guān)聯(lián)的代理計數(shù)。在一個實施例中,所述代理計數(shù)由可再加載模塊矢量管理。出口遞減它所綁定的所有可再加載模塊矢量的計數(shù)。這可以通過對當綁定到可再加載模塊矢量時進程創(chuàng)建的記錄迭代來實現(xiàn)。在z/OS上,這可以通過為進程可能已經(jīng)綁定到的每個可再加載模塊矢量構(gòu)造名稱令牌來實現(xiàn),其中通過獲得當前可再加載模塊矢量實例號并使用實例號來建立名稱令牌,并且持續(xù)向下到實例號零。如果名稱令牌存在,則進程需要為該可再加載模塊矢量遞減計數(shù)。
[0037]可再加載模塊矢量實例的地址通過找到當可再加載模塊矢量被刷新時存儲的地址來定位。在z/OS上,這通過找到當矢量被更新時創(chuàng)建的名稱令牌來完成。出口必須遞減矢量中的計數(shù),并且檢查矢量中的有效位。這應當自動進行。當所述代理計數(shù)遞減到零時,釋放代理代碼的無效版本。在遞減步驟224完成之后,方法繼續(xù)到釋放步驟226。
[0038]在釋放步驟226,當沒有客戶端實例綁定到代理代碼的無效版本時,釋放代理代碼的無效版本使用的系統(tǒng)存儲器的部分。在一個實施例中,如果計數(shù)已經(jīng)到達零,并且未設置有效位,則動態(tài)擴展可以從公共存儲卸載(unload)。當?shù)怯浀牡刂房臻g終止時從公共存儲卸載動態(tài)模塊防止代碼在它仍然在使用時被刪除,并且可以允許多次更新代理代碼而不用完公共存儲。
[0039]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼。
[0040]可以采用一個或多個計算機可讀的介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0041]計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0042]體現(xiàn)在計算機可讀介質(zhì)上的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括但不限于:無線、有線、光纜、RF等,或上述的任意合適的組合。
[0043]可以以一種或多種程序設計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向?qū)ο蟮某绦蛟O計語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設計語言一諸如”C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。
[0044]本文中將參照本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0045]也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。
[0046]也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
[0047]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、
[0048]程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
[0049]以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進,或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實施例。
【權(quán)利要求】
1.一種動態(tài)更新授權(quán)代理管理的代碼的方法,所述方法包括: 在系統(tǒng)存儲器中執(zhí)行代理代碼的多個版本,其中代理代碼的一個版本被執(zhí)行為有效版本,并且代理代碼的其他版本被執(zhí)行為無效版本; 將代理代碼的有效版本和代理代碼的無效版本的版本號存儲在可再加載模塊矢量中; 在比較代理代碼的有效版本和代理代碼的無效版本的版本號之后,將之前綁定到代理代碼的無效版本的客戶端實例綁定到代理代碼的有效版本;以及 當沒有客戶端實例綁定到代理代碼的無效版本時,釋放代理代碼的無效版本使用的系統(tǒng)存儲器的部分。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 將代理代碼的核心組件存儲在系統(tǒng)存儲器的私有存儲中,并且將代理代碼的動態(tài)組件存儲在系統(tǒng)存儲器的公共存儲中;以及 其中,代理代碼的核心組件配置為更新代理代碼的動態(tài)組件; 其中,系統(tǒng)存儲器的私有存儲配置為被單個運行進程使用;以及 其中,系統(tǒng)存儲器的公共存儲配置為被多個運行進程使用。
3.根據(jù)權(quán)利要求2所述的方法,還包括通過代理代碼的核心組件加載公共存儲中存儲的代理代碼的新版本。
4.根據(jù)權(quán)利要求3所述的方法,還包括當客戶端實例綁定到代理代碼的新版本時,遞增與代理代碼的新版本相關(guān)聯(lián)的代理計數(shù)。
5.根據(jù)權(quán)利要求2所述的方法,還包括將指向代理代碼的動態(tài)組件的指針存儲在可再加載模塊矢量中。
6.根據(jù)權(quán)利要求5所述的方法,還包括: 通過可再加載模塊矢量,將接口暴露給客戶端實例,以便通過代理代碼的動態(tài)組件執(zhí)行操作系統(tǒng)功能;以及 其中,代理代碼具有操作系統(tǒng)的用于執(zhí)行操作系統(tǒng)功能的授權(quán),并且客戶端實例不具有操作系統(tǒng)的用于執(zhí)行操作系統(tǒng)功能的授權(quán)。
7.根據(jù)權(quán)利要求1所述的方法,還包括登記出口點,該出口點在代理代碼的無效版本終止時被驅(qū)動。
8.根據(jù)權(quán)利要求7所述的方法,還包括: 當出口點被驅(qū)動時,遞減與代理代碼的無效版本相關(guān)聯(lián)的代理計數(shù),所述代理計數(shù)由可再加載模塊矢量管理;以及 其中,當所述代理計數(shù)遞減到零時,釋放代理代碼的無效版本。
9.根據(jù)權(quán)利要求3所述的方法,還包括: 通過比較代理代碼的新版本和代理代碼的有效版本的版本號,指定代理代碼的新版本作為代理代碼的有效版本;以及 其中,如果版本號不同,則設置與代理代碼的新版本相關(guān)聯(lián)的有效標志為真,并且設置與代理代碼的有效版本相關(guān)聯(lián)的有效標志為假。
10.一種動態(tài)更新授權(quán)代理管理的代碼的系統(tǒng),所述系統(tǒng)包括: 系統(tǒng)存儲器;耦合到系統(tǒng)存儲器的計算機處理器; 耦合到計算機處理器的執(zhí)行單元,所述執(zhí)行單元用于在系統(tǒng)存儲器中執(zhí)行代理代碼的多個版本,其中代理代碼的一個版本被執(zhí)行為有效版本,并且代理代碼的其他版本被執(zhí)行為無效版本; 存儲器單元,用于將代理代碼的有效版本和代理代碼的無效版本的版本號存儲在可再加載模塊矢量中; 綁定單元,用于在比較代理代碼的有效版本和代理代碼的無效版本的版本號之后,將之前綁定到代理代碼的無效版本的客戶端實例綁定到代理代碼的有效版本;以及 釋放單元,用于當沒有客戶端實例綁定到代理代碼的無效版本時,釋放代理代碼的無效版本使用的系統(tǒng)存儲器的部分。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),還包括: 其中,所述計算機處理器配置為將代理代碼的核心組件存儲在系統(tǒng)存儲器的私有存儲中,并且將代理代碼的動態(tài)組件存儲在系統(tǒng)存儲器的公共存儲中;以及其中,代理代碼的核心組件配置為更新代理代碼的動態(tài)組件; 其中,系統(tǒng)存儲器的私有存儲配置為被單個運行進程使用;以及 其中,系統(tǒng)存儲器的公共存儲配置為被多個運行進程使用。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述計算機處理器配置為通過代理代碼的核心組件加載公共存儲中存儲的代理代碼的新版本。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中所述計算機處理器配置為當客戶端實例綁定到代理代碼的新版本時,遞增與代理代碼的新版本相關(guān)聯(lián)的代理計數(shù)。
14.根據(jù)權(quán)利要求11所述的系統(tǒng)`,其中所述計算機處理器配置為將指向代理代碼的動態(tài)組件的指針存儲在可再加載模塊矢量中。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),還包括: 其中,所述計算機處理器配置為通過可再加載模塊矢量,將接口暴露給客戶端實例,以便通過代理代碼的動態(tài)組件執(zhí)行操作系統(tǒng)功能;以及 其中,代理代碼具有操作系統(tǒng)的用于執(zhí)行操作系統(tǒng)功能的授權(quán),并且客戶端實例不具有操作系統(tǒng)的用于執(zhí)行操作系統(tǒng)功能的授權(quán)。
16.根據(jù)權(quán)利要求10所述的系統(tǒng),所述計算機處理器配置為登記出口點,該出口點在代理代碼的無效版本終止時被驅(qū)動。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),還包括: 其中,所述計算機處理器配置為當出口點被驅(qū)動時,遞減與代理代碼的無效版本相關(guān)聯(lián)的代理計數(shù),所述代理計數(shù)由可再加載模塊矢量管理;以及 其中,當所述代理計數(shù)遞減到零時,釋放代理代碼的無效版本。
18.根據(jù)權(quán)利要求12所述的系統(tǒng),還包括: 其中,所述計算機處理器配置為通過比較代理代碼的新版本和代理代碼的有效版本的版本號,指定代理代碼的新版本作為代理代碼的有效版本;以及 其中,如果版本號不同,則設置與代理代碼的新版本相關(guān)聯(lián)的有效標志為真,并且設置與代理代碼的有效版本相關(guān)聯(lián)的有效標志為假。
【文檔編號】G06F9/445GK103870300SQ201310613126
【公開日】2014年6月18日 申請日期:2013年11月27日 優(yōu)先權(quán)日:2012年12月13日
【發(fā)明者】D.A.福利斯, T.D.凱辛斯基, M.J.賽克斯 申請人:國際商業(yè)機器公司