[發明專利]驅動程序中數據競爭檢測方法及裝置有效
| 申請號: | 201910096301.1 | 申請日: | 2019-01-31 |
| 公開(公告)號: | CN109885489B | 公開(公告)日: | 2020-07-21 |
| 發明(設計)人: | 胡事民;陳秋良;白家駒 | 申請(專利權)人: | 清華大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F8/41 |
| 代理公司: | 北京路浩知識產權代理有限公司 11002 | 代理人: | 王瑩;吳歡燕 |
| 地址: | 100084 北京市海*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 驅動程序 數據 競爭 檢測 方法 裝置 | ||
1.一種驅動程序中數據競爭檢測方法,其特征在于,包括:
當待檢測驅動程序運行時,獲取所述待檢測驅動程序中的共享變量訪問和并發執行的函數調用路徑組合;
從所述共享變量訪問中獲取至少含有一個鎖的共享變量訪問,將至少含有一個鎖的所述共享變量訪問作為潛在競爭訪問;
將任一所述潛在競爭訪問的調用棧和所有所述共享變量訪問中任一共享變量訪問的調用棧進行組合,判斷調用棧組合在所述函數調用路徑組合中是否存在,根據判斷結果確定所述待檢測驅動程序是否存在數據競爭。
2.根據權利要求1所述的方法,其特征在于,當待檢測驅動程序運行時,獲取所述待檢測驅動程序中共享變量訪問和并發執行的函數調用路徑組合的步驟之前還包括:
使用Clang編譯器對所述待檢測驅動程序的源代碼進行編譯,獲取所述待檢測驅動程序的中間字節碼文件;
使用LLVM工具鏈在所述中間字節碼文件中插入外部函數調用;
使用所述Clang編譯器將插入外部函數調用后的所述中間字節碼文件編譯為匯編文件;
使用GCC編譯器將所述匯編文件和所述外部函數調用的定義文件進行編譯,獲取所述待檢測驅動程序的可執行文件;
相應地,當待檢測驅動程序運行時,獲取所述待檢測驅動程序中共享變量訪問的上下文信息和并發執行的函數調用路徑組合的步驟具體包括:
加載并運行所述可執行文件,并運行所述待檢測驅動程序的工作負載;
在所述可執行文件和所述工作負載運行的過程中,通過所述外部函數調用,獲取所述待檢測驅動程序中的共享變量訪問和并發執行的函數調用路徑組合。
3.根據權利要求2所述的方法,其特征在于,在所述中間字節碼文件中插入外部函數調用的步驟具體包括:
在所述中間字節碼文件中的加鎖函數、解鎖函數、共享變量讀寫、函數入口和函數出口位置插入外部函數調用。
4.根據權利要求1所述的方法,其特征在于,獲取所述待檢測驅動程序中的共享變量訪問和并發執行的函數調用路徑組合的步驟還包括:
使用獨立的線程記錄所述共享變量訪問和并發執行的函數調用路徑組合;
使用寫文件緩存機制將所述共享變量訪問和并發執行的函數調用路徑組合寫入日志文件中;
使用哈希表對所述日志文件中共享變量訪問和并發執行的函數調用路徑組合進行去重。
5.根據權利要求1-4任一所述的方法,其特征在于,獲取所述待檢測驅動程序中共享變量訪問的步驟具體包括:
將所述待檢測驅動程序的各函數中所有指針類型的參數作為潛在共享變量;
若所述待檢測驅動程序中各函數體內指令的操作數為全局變量或指針類型的參數,則將所述指令的返回值作為所述潛在共享變量;
將所述潛在共享變量的訪問作為共享變量訪問。
6.根據權利要求1-4任一所述的方法,其特征在于,獲取所述待檢測驅動程序中的并發執行的函數調用路徑組合的步驟具體包括:
若所述待檢測驅動程序在并發執行的過程中出現中斷,則從各函數調用路徑中將中斷期間的調用函數路徑從各所述函數調用路徑中刪除,并將所述中斷期間的調用函數路徑記錄為獨立的調用棧;
將與刪除后的函數調用路徑并發執行的函數調用路徑進行組合,將與所述中斷期間的調用函數路徑并發執行的調用函數路徑進行組合,將各組合結果作為所述并發執行的函數調用路徑組合。
7.根據權利要求1-4任一所述的方法,其特征在于,根據判斷結果確定所述待檢測驅動程序是否存在數據競爭的步驟具體包括:
若各所述調用棧組合在所述函數調用路徑組合中存在,且任一所述潛在競爭訪問和所述任一共享變量訪問同時滿足三個預設條件,則獲知所述待檢測驅動程序存在數據競爭;
其中,第一個所述預設條件為是否訪問同一內存地址;
第二個所述預設條件為鎖集合的交集為空;
第三個所述預設條件為至少一個為寫操作。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于清華大學,未經清華大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910096301.1/1.html,轉載請聲明來源鉆瓜專利網。
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





