面向多線程程序的并行運(yùn)行時驗證
發(fā)布時間:2020-12-31 07:51
現(xiàn)代操作系統(tǒng)、嵌入式系統(tǒng)、航電系統(tǒng)等安全關(guān)鍵系統(tǒng)一般都使用C/C++語言進(jìn)行開發(fā),因此針對C程序的運(yùn)行時驗證技術(shù)研究變得非常重要。主流的運(yùn)行時驗證技術(shù)主要針對程序的內(nèi)存安全性和形式化規(guī)約進(jìn)行檢測,首先通過對C程序中與內(nèi)存操作和規(guī)約相關(guān)的代碼進(jìn)行插樁,然后編譯運(yùn)行插樁后的C程序來驗證原程序是否滿足內(nèi)存安全性和給定的規(guī)約。但是現(xiàn)有技術(shù)存在許多局限性。一方面,現(xiàn)有技術(shù)大都只能處理單線程的C程序,在多線程C程序的情況下,可能引起對運(yùn)行時信息的競爭訪問問題,從而導(dǎo)致錯誤的驗證結(jié)果。另一方面,針對形式化規(guī)約的運(yùn)行時驗證技術(shù)大都通過串行的方式處理多監(jiān)控器,在規(guī)約數(shù)量較多的情況下,多監(jiān)控器的串行運(yùn)行會導(dǎo)致運(yùn)行時性能大大降低。針對以上的兩個局限性,本文主要研究面向多線程C程序的運(yùn)行時驗證技術(shù)和多監(jiān)控器的并行驗證技術(shù)。具體工作和創(chuàng)新點(diǎn)包括:首先,針對內(nèi)存安全性問題,我們提出了面向多線程C程序的運(yùn)行時驗證算法。該算法采用有鎖哈希表或無鎖哈希表對指針元數(shù)據(jù)進(jìn)行插入、查找和刪除等操作,使得插樁后的多線程C程序可以并發(fā)地對指針元數(shù)據(jù)進(jìn)行訪問,從而實現(xiàn)對多線程C程序內(nèi)存安全性的運(yùn)行時驗證。第二,針對形式化規(guī)約的驗證...
【文章來源】:南京航空航天大學(xué)江蘇省 211工程院校
【文章頁數(shù)】:80 頁
【學(xué)位級別】:碩士
【部分圖文】:
單線程下內(nèi)存安全存取的哈希表性能分析
圖 6. 1 單線程下內(nèi)存安全存取的哈希表性能分析中縱坐標(biāo)的單位是秒,實驗數(shù)據(jù)是十次結(jié)果的平均值。A 表示使用希表;B 表示本文中可擴(kuò)展的哈希表(其中 CAS 原子操作換成賦值;D 表示無鎖可擴(kuò)充哈希表。圖中節(jié)點(diǎn)數(shù)表示哈希表進(jìn)行存取的節(jié)程情況下 B 哈希表運(yùn)行時負(fù)載是 A 哈希表的 5 倍左右,D 哈希表運(yùn)行的 5 倍左右。這是因為 B、D 哈希表存在遞歸桶元素的插入和鏈表存取時直接通過數(shù)組進(jìn)行鏈表訪問,不需要遞歸創(chuàng)建桶元素。這個擴(kuò)展的哈希表性能有所降低。程情況下哈希表存取實驗中,因為 A 哈希表和 B 哈希表沒有進(jìn)行并多線程情況下進(jìn)行哈希表的存取操作。我們將 C、D 兩種哈希表進(jìn)。012345A B C D節(jié)點(diǎn)數(shù) 1000000300000時間/us
圖 6. 3 形式化規(guī)約并行運(yùn)行時驗證性能 中時間單位是秒,記錄的時間值是進(jìn)行 10 次結(jié)果統(tǒng)計之后取平均值少個驗證線程。如果采用串行的方式運(yùn)行,性能最差。但是隨著線一個遞減的趨勢,結(jié)果和我們的預(yù)期不同。這是因為本實驗的硬件持超線程模式,一個處理器可以同時運(yùn)行兩個線程。當(dāng)超過 4 個線爭同一個處理器資源。同一時刻一個處理器也只是在運(yùn)行兩個線程 4 個線程時,才是真正意義上的并行運(yùn)算。從上圖的可知,在 3 個與一個主線程的情況下,運(yùn)行的時間最短。在最優(yōu)情況下對該實驗的運(yùn)行的總時間由原來的 51.51s 變?yōu)?23.53s。程序的性能提升了百分串行運(yùn)行時驗證的執(zhí)行時間和形式化規(guī)約的并行運(yùn)行時驗證的執(zhí)行并行運(yùn)行時驗證之后的工具性能提升明顯。總結(jié)們首先采用 SARD 測試集進(jìn)行 SoftBoundCets、Criuser 和 Movec 的工具對于多線程 C 程序內(nèi)存安全問題檢測的有效性,并采用 Miben
【參考文獻(xiàn)】:
博士論文
[1]面向千萬億次CPU-GPU異構(gòu)系統(tǒng)的編程模型與性能優(yōu)化關(guān)鍵技術(shù)研究[D]. 王鋒.國防科學(xué)技術(shù)大學(xué) 2013
本文編號:2949261
【文章來源】:南京航空航天大學(xué)江蘇省 211工程院校
【文章頁數(shù)】:80 頁
【學(xué)位級別】:碩士
【部分圖文】:
單線程下內(nèi)存安全存取的哈希表性能分析
圖 6. 1 單線程下內(nèi)存安全存取的哈希表性能分析中縱坐標(biāo)的單位是秒,實驗數(shù)據(jù)是十次結(jié)果的平均值。A 表示使用希表;B 表示本文中可擴(kuò)展的哈希表(其中 CAS 原子操作換成賦值;D 表示無鎖可擴(kuò)充哈希表。圖中節(jié)點(diǎn)數(shù)表示哈希表進(jìn)行存取的節(jié)程情況下 B 哈希表運(yùn)行時負(fù)載是 A 哈希表的 5 倍左右,D 哈希表運(yùn)行的 5 倍左右。這是因為 B、D 哈希表存在遞歸桶元素的插入和鏈表存取時直接通過數(shù)組進(jìn)行鏈表訪問,不需要遞歸創(chuàng)建桶元素。這個擴(kuò)展的哈希表性能有所降低。程情況下哈希表存取實驗中,因為 A 哈希表和 B 哈希表沒有進(jìn)行并多線程情況下進(jìn)行哈希表的存取操作。我們將 C、D 兩種哈希表進(jìn)。012345A B C D節(jié)點(diǎn)數(shù) 1000000300000時間/us
圖 6. 3 形式化規(guī)約并行運(yùn)行時驗證性能 中時間單位是秒,記錄的時間值是進(jìn)行 10 次結(jié)果統(tǒng)計之后取平均值少個驗證線程。如果采用串行的方式運(yùn)行,性能最差。但是隨著線一個遞減的趨勢,結(jié)果和我們的預(yù)期不同。這是因為本實驗的硬件持超線程模式,一個處理器可以同時運(yùn)行兩個線程。當(dāng)超過 4 個線爭同一個處理器資源。同一時刻一個處理器也只是在運(yùn)行兩個線程 4 個線程時,才是真正意義上的并行運(yùn)算。從上圖的可知,在 3 個與一個主線程的情況下,運(yùn)行的時間最短。在最優(yōu)情況下對該實驗的運(yùn)行的總時間由原來的 51.51s 變?yōu)?23.53s。程序的性能提升了百分串行運(yùn)行時驗證的執(zhí)行時間和形式化規(guī)約的并行運(yùn)行時驗證的執(zhí)行并行運(yùn)行時驗證之后的工具性能提升明顯。總結(jié)們首先采用 SARD 測試集進(jìn)行 SoftBoundCets、Criuser 和 Movec 的工具對于多線程 C 程序內(nèi)存安全問題檢測的有效性,并采用 Miben
【參考文獻(xiàn)】:
博士論文
[1]面向千萬億次CPU-GPU異構(gòu)系統(tǒng)的編程模型與性能優(yōu)化關(guān)鍵技術(shù)研究[D]. 王鋒.國防科學(xué)技術(shù)大學(xué) 2013
本文編號:2949261
本文鏈接:http://www.sikaile.net/kejilunwen/ruanjiangongchenglunwen/2949261.html
最近更新
教材專著