[發明專利]一種自適應輕量級動態混合數據競爭檢測方法有效
| 申請號: | 202110659412.6 | 申請日: | 2021-06-15 |
| 公開(公告)號: | CN113407447B | 公開(公告)日: | 2022-09-27 |
| 發明(設計)人: | 孫家澤;楊彥漫;舒新峰 | 申請(專利權)人: | 西安郵電大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 710061 *** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 自適應 輕量級 動態 混合 數據 競爭 檢測 方法 | ||
1.一種自適應輕量級動態混合數據競爭檢測方法,其特征在于包括以下步驟:
步驟一:針對一個Java并發程序P,在不影響P動態執行過程中,動態數據競爭檢測器為每個共享變量x分別維護兩個長度為Q_LEN=6的讀隊列RCx和寫隊列WCx,RCx和WCx均采用先入先出原則以緩存機制存儲各線程對x的讀訪問信息和寫訪問信息,訪問信息以epoch,LockSet形式存放,用來表示線程t的線程編號、訪問時間戳和當前線程所持有的鎖集合,其中epoch表示為t@c,意為線程t的當前時間戳為c;
步驟二:當線程t對x進行訪問,判斷當前是否為讀訪問,如果不為讀訪問則進入步驟五;否則首先判斷當前x是否已經處于讀共享狀態,如果是讀共享狀態則更新讀向量時鐘Rx為線程t的時鐘向量VCt;否則去判斷t當前讀訪問與RCx最后一個元素存放的讀訪問是否構成并發訪問狀態,如果是則動態數據競爭檢測器自動切換為讀向量時鐘Rx來記錄讀訪問歷史,進入步驟三;
步驟三:遍歷并分析WCx中線程u對x的歷史訪問信息直到最后一個元素,即如果WCx[u]中線程u的時間戳與當前線程t的時間戳VCt[u]不滿足Happens-before關系,且t目前獲得的鎖集與WCx[u].LockSet交集為空集,則報告寫-讀類型數據競爭錯誤,進入步驟四;
步驟四:判斷RCx最后一個元素的epoch值與t的epoch值是否相等,如果相等則更新最后一個元素的LockSet集合;否則判斷是否為滿隊,如果是滿隊狀態則刪除隊首元素并將當前的訪問信息加入到RCx中,否則直接將當前訪問信息加入到RCx;
步驟五:線程t對x進行訪問,判斷當前是否為寫訪問,如果不為寫訪問則返回步驟二,否則遍歷并分析WCx中線程u對x的歷史訪問信息直到最后一個元素,即如果WCx[u]中線程u的時間戳與當前線程t的時間戳VCt[u]不滿足Happens-before關系,且t目前獲得的鎖集與WCx[u].LockSet交集為空集,則報告寫-寫類型數據競爭錯誤,進入步驟六;
步驟六:判斷x當前是否處于讀共享狀態,如果處于讀共享狀態則判斷讀向量時鐘Rx與當前線程t是否滿足Happens-before關系,如果滿足則報讀-寫類型數據競爭錯誤并刪除Rx,否則進入步驟七;
步驟七:遍歷并分析RCx中線程u對x的歷史訪問信息直到最后一個元素,即如果RCx[u]中線程u的時間戳與當前線程t的時間戳VCt[u]不滿足Happens-before關系,且t目前獲得的鎖集與RCx[u].LockSet交集為空集,則報告讀-寫類型數據競爭錯誤,進入步驟八;
步驟八:判斷WCx最后一個元素的epoch值與t的epoch值是否相等,如果相等則更新最后一個元素的LockSet集合;否則判斷是否為滿隊,如果是滿隊狀態則刪除隊首元素并將當前的訪問信息加入到WCx中,否則直接將當前訪問信息加入到RCx;
步驟九:判斷終止條件,程序P是否執行完畢,如果P執行完畢,則輸出數據競爭檢測報告;否則,返回步驟二。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西安郵電大學,未經西安郵電大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110659412.6/1.html,轉載請聲明來源鉆瓜專利網。





