[發(fā)明專利]用于驗證運行時引用的方法有效
| 申請?zhí)枺?/td> | 201180057874.5 | 申請日: | 2011-10-25 |
| 公開(公告)號: | CN103250136A | 公開(公告)日: | 2013-08-14 |
| 發(fā)明(設計)人: | A.賴特;P.R.李;P.A.德沃爾;E.A.艾迪森 | 申請(專利權(quán))人: | 國際商業(yè)機器公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 北京市柳沈律師事務所 11105 | 代理人: | 黃小臨 |
| 地址: | 美國紐*** | 國省代碼: | 美國;US |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 用于 驗證 運行 引用 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及應用編程的領(lǐng)域。具體地,本發(fā)明涉及用于驗證運行時引用的方法和系統(tǒng)。
背景技術(shù)
諸如IBM的CICS事務處理系統(tǒng)的大型復雜系統(tǒng)包括成千上萬個分立和獨立的程序。每個程序包括源代碼,并且,源代碼提供特定類型的功能或服務。為了使用此功能,程序?qū)⑾蛐枰褂玫某绦颉⒒蛟谛枰褂玫某绦蛑校M行“調(diào)用(call)”,調(diào)取(invoke)函數(shù),針對其他類發(fā)送消息或調(diào)取方法(在面向?qū)ο蟮恼Z言中)。
在特定類型的應用中,將程序分組為域。域是被設計為提供特定功能的程序集合,如存儲管理或鎖定。域類似于面向?qū)ο笳Z言中的類。每個域提供允許其他類調(diào)取其服務的門。
為了使程序調(diào)用另一程序,程序包括對數(shù)據(jù)結(jié)構(gòu)和參數(shù)列表的聲明(引用),用來調(diào)取另一域內(nèi)的門。典型地,在程序起始附近的部分內(nèi)聲明參數(shù)列表,其定義不同類型的參數(shù)、選項、響應和原因代碼字段等等,其允許代碼在運行時對其它域進行調(diào)用。這些聲明包括參數(shù)列表存儲區(qū),其在對另一域進行調(diào)用之前在運行時建立,且在從域調(diào)用返回時填充,其具有來自程序內(nèi)的調(diào)用的例程的各種響應和原因代碼。
經(jīng)常,程序被表述為“單線程的”,這意味著:在任一時刻,僅存在通過程序運行的單線程控制。這還意味著:在任意時間點,僅一組參數(shù)存儲正被使用于處理對另一域的調(diào)取。
將不同的參數(shù)列表區(qū)聲明為彼此重疊是通常的實踐。在諸如PLX的編程語言中,例如,這通過將參數(shù)列表定義為數(shù)據(jù)結(jié)構(gòu)的“聯(lián)合”來實現(xiàn),所有數(shù)據(jù)結(jié)構(gòu)全被映射到程序的工作存儲器內(nèi)的同一開始點。“聯(lián)合”被聲明為所有參數(shù)列表區(qū)中的最大者的最大存儲大小。此途徑的優(yōu)點在于,其簡化了程序的工作存儲器的映射,并減小了對于較大的程序堆棧區(qū)的需要。
分別聲明每個域的參數(shù)列表區(qū)意味著:在程序運行時,每一個將被映射到計算機存儲器的獨立區(qū)域。這將導致較大的程序堆棧區(qū)、以及存儲使用的增大。重疊參數(shù)列表區(qū)通過將存儲器中的相同區(qū)域重用于每個參數(shù)列表,而避免了該不必要的額外存儲需求。
重疊參數(shù)列表區(qū)是編程環(huán)境內(nèi)的更佳存儲使用的有效途徑。然而,在使用重疊參數(shù)列表,且在源代碼內(nèi)不確保正確地管理它們的引用范圍時,可能出現(xiàn)問題。
考慮程序調(diào)取對“域1”的調(diào)用的情況。程序在參數(shù)列表中建立參數(shù),以在共享存儲區(qū)中調(diào)取“域1”,并調(diào)用“域1”。當“域1”已滿足其目的時,整個程序的控制流從“域1”返回到程序。在程序內(nèi)嵌入邏輯,其可測試已在參數(shù)列表區(qū)內(nèi)設置的、諸如來自“域1”的響應和原因代碼的字段,且可基于調(diào)用的結(jié)果進行運行時判定。
然而,在測試來自調(diào)用的“域1”的結(jié)果之前,對于程序調(diào)取另一個調(diào)用(對“域2”)沒有約束。程序建立用來在共享存儲區(qū)中調(diào)取“域2”的參數(shù)。隨后,程序調(diào)用“域2”。當程序的控制流從“域2”返回到程序時,現(xiàn)在,邏輯可如同之前一樣測試參數(shù)列表區(qū)內(nèi)的字段,并基于調(diào)用的結(jié)果來進行運行時判定。程序邏輯測試對“域2”的調(diào)用的結(jié)果,這是由于,現(xiàn)在,在共享存儲區(qū)內(nèi)保持所述結(jié)果。然而,在不同情形中,程序邏輯可能決定檢查較早的對“域1”的調(diào)用的結(jié)果。然而,因為在存儲器的參數(shù)列表區(qū)內(nèi)不再保持此信息(這是因為,其已被“域2”的結(jié)果覆寫),所以,程序邏輯正在測試為“域2”建立或由“域2”返回的參數(shù)內(nèi)的字段,而不是“域1”。這可能在運行時導致邏輯錯誤,因為共享存儲區(qū)不包含正確信息。
因此,在現(xiàn)有技術(shù)中,存在減輕上述問題的需要。
發(fā)明內(nèi)容
從第一方面,本發(fā)明提供了一種用于識別在程序列表中聲明的共享存儲區(qū)的重疊數(shù)據(jù)結(jié)構(gòu)的、沖突的所聲明的無效運行時引用的方法,該方法包括以下步驟:響應于在程序列表中識別出參數(shù)列表的第一參數(shù)聲明,識別第一運行時調(diào)用、以及所述第一運行時調(diào)用的通過所述程序列表的順序執(zhí)行流,以便將數(shù)據(jù)寫入所述共享存儲區(qū);響應于在所述程序列表中識別出第二參數(shù)列表的第二參數(shù)聲明,識別第二運行時調(diào)用、以及所述第二運行時調(diào)用的通過所述程序列表的順序執(zhí)行流,以便將數(shù)據(jù)寫入所述共享存儲區(qū);當所述第一和第二運行時調(diào)用中的每個請求對域訪問時分析所述第一和第二運行時調(diào)用的所識別的順序執(zhí)行流,并生成所述第一和第二運行時調(diào)用的元數(shù)據(jù)狀態(tài);以及分析所述元數(shù)據(jù)狀態(tài),以確定所述第一運行時調(diào)用的元數(shù)據(jù)狀態(tài)是否與所述第二運行時調(diào)用的元數(shù)據(jù)狀態(tài)沖突。
優(yōu)選地,本發(fā)明提供一種方法,其中,所述域包括所述運行時調(diào)用需要訪問的資源。
優(yōu)選地,本發(fā)明提供一種方法,其中,分析元數(shù)據(jù)的步驟還包括:訪問規(guī)則集,所述規(guī)則集確定所識別的執(zhí)行流內(nèi)運行時調(diào)用的重要性。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于國際商業(yè)機器公司,未經(jīng)國際商業(yè)機器公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201180057874.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:全自動貼合口字膠的裝置
- 下一篇:半主動減振器端蓋固定裝置





