天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

面向并發(fā)程序的重構(gòu)一致性檢測(cè)方法

發(fā)布時(shí)間:2022-02-04 20:32
  針對(duì)并發(fā)軟件重構(gòu)后可能帶來(lái)的行為不一致問(wèn)題,提出了一種重構(gòu)一致性檢測(cè)方法,該方法使用控制流分析和數(shù)據(jù)流分析檢測(cè)重構(gòu)前后的變化,使用同步依賴分析檢測(cè)重構(gòu)前后同步依賴關(guān)系的變化.針對(duì)對(duì)象重用性、靜態(tài)共享字段、死鎖3種典型的引起并發(fā)錯(cuò)誤的情況,設(shè)計(jì)了3種檢測(cè)算法對(duì)重構(gòu)前后程序的不一致性進(jìn)行檢測(cè).依據(jù)該方法,在WALA軟件分析框架下實(shí)現(xiàn)了一個(gè)原型檢測(cè)工具.在實(shí)驗(yàn)中,使用該工具在SPECjbb2005和HSQLDB測(cè)試程序上進(jìn)行了驗(yàn)證,并與Schafer等提出的方法進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明,該方法能夠有效地發(fā)現(xiàn)并發(fā)軟件重構(gòu)的不一致行為. 

【文章來(lái)源】:河北師范大學(xué)學(xué)報(bào)(自然科學(xué)版). 2020,44(03)

【文章頁(yè)數(shù)】:9 頁(yè)

【部分圖文】:

面向并發(fā)程序的重構(gòu)一致性檢測(cè)方法


檢測(cè)框架

對(duì)象,算法,監(jiān)視器,類型


圖3為對(duì)象重用檢測(cè)算法.通過(guò)檢測(cè)監(jiān)視器對(duì)象的類型,對(duì)監(jiān)視器對(duì)象類型進(jìn)行判斷,判斷其是否為Boolean,Integer或String等類型.方法doPerformAnalysis(1~5行)中,被檢測(cè)的程序如果檢測(cè)的方法不為空,則通過(guò)調(diào)用方法populateBugInstances檢測(cè)程序中符合條件的監(jiān)視器對(duì)象信息,賦值給bugInstances實(shí)例獲取最終符合條件的重用對(duì)象.方法populateBugInstances(6~12行)判斷獲取的指令是否為重用對(duì)象.其中獲取的指令instruction必須為監(jiān)視器獲取鎖定指令.通過(guò)調(diào)用方法getReusableLockObjectTypes給reusableLockObjectTypes賦值.該reusableLockObjectTypes符合對(duì)象重用類型.方法getReusableLockObjectTypes(13~18行),獲取監(jiān)視器指令monitorInstruction的指向地址,將其賦值給instanceKey.通過(guò)方法createReusableChecker判斷instanceKey是否為重用對(duì)象類型.方法createReusableChecker(19~29行),獲取instanceKey的類型,如果其類型為Boolean,Integer或String等重用類型,則檢測(cè)出該程序中含有對(duì)象重用問(wèn)題.2.2 靜態(tài)共享字段檢測(cè)

對(duì)象,示例,類型,監(jiān)視器


對(duì)象的重用是在鎖定諸如Boolean,Integer等類型的對(duì)象時(shí)發(fā)生的重用,如Boolean類型只有2個(gè)值true和false,如果使用2個(gè)Boolean類型對(duì)象作為同步監(jiān)視器對(duì)象,可能會(huì)因指向同一地址而導(dǎo)致問(wèn)題.如圖2的示例程序,在synchronized同步塊中,其鎖定監(jiān)視器對(duì)象類型是Boolean類型.方法oneMethod( )和方法anotherMethod( )分別會(huì)在2個(gè)線程中執(zhí)行.由于Boolean FALSE和false 2個(gè)常量代表同一內(nèi)存位置,實(shí)際上是同一個(gè)同步對(duì)象,在圖2的程序中雖然使用2個(gè)不同名字的同步對(duì)象,但會(huì)導(dǎo)致臨界資源的訪問(wèn)形成互斥.圖3為對(duì)象重用檢測(cè)算法.通過(guò)檢測(cè)監(jiān)視器對(duì)象的類型,對(duì)監(jiān)視器對(duì)象類型進(jìn)行判斷,判斷其是否為Boolean,Integer或String等類型.方法doPerformAnalysis(1~5行)中,被檢測(cè)的程序如果檢測(cè)的方法不為空,則通過(guò)調(diào)用方法populateBugInstances檢測(cè)程序中符合條件的監(jiān)視器對(duì)象信息,賦值給bugInstances實(shí)例獲取最終符合條件的重用對(duì)象.方法populateBugInstances(6~12行)判斷獲取的指令是否為重用對(duì)象.其中獲取的指令instruction必須為監(jiān)視器獲取鎖定指令.通過(guò)調(diào)用方法getReusableLockObjectTypes給reusableLockObjectTypes賦值.該reusableLockObjectTypes符合對(duì)象重用類型.方法getReusableLockObjectTypes(13~18行),獲取監(jiān)視器指令monitorInstruction的指向地址,將其賦值給instanceKey.通過(guò)方法createReusableChecker判斷instanceKey是否為重用對(duì)象類型.方法createReusableChecker(19~29行),獲取instanceKey的類型,如果其類型為Boolean,Integer或String等重用類型,則檢測(cè)出該程序中含有對(duì)象重用問(wèn)題.


本文編號(hào):3613893

資料下載
論文發(fā)表

本文鏈接:http://www.sikaile.net/kejilunwen/jisuanjikexuelunwen/3613893.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶d16f4***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com