[發明專利]用于識別并且再現多線程程序中并發沖突的方法及系統有效
| 申請號: | 201180075811.2 | 申請日: | 2011-12-21 |
| 公開(公告)號: | CN104220989B | 公開(公告)日: | 2017-12-12 |
| 發明(設計)人: | J·戈特施利希;G·波卡姆;C·佩雷拉;J·何 | 申請(專利權)人: | 英特爾公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46;G06F11/36 |
| 代理公司: | 永新專利商標代理有限公司72002 | 代理人: | 劉瑜,王英 |
| 地址: | 美國加*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 用于 識別 并且 再現 多線程 程序 并發 沖突 方法 系統 | ||
技術領域
本公開概括而言涉及多線程程序,并且更具體地涉及對多線程程序中發生的并發沖突進行調試。
背景技術
近年來,并發/并行編程變得非常流行,在所述并發/并行編程中同時執行不同的計算機程序并且訪問共享存儲器。在單個計算機程序的上下文內進行操作的并發地執行程序通常被稱為多線程程序的線程。由于線程執行的同時性,并且因為程序的不同線程訪問共享存儲器,所以多線程編程具有固有的挑戰。作為線程同時執行的結果,由線程執行的操作未必以任何特定的順序發生。然而,存在以下的實例,其中多線程程序的適當的操作要求:在一個或多個線程中執行的一個或多個操作相對于一個或多個其他線程的操作以特定的順序來進行執行。例如,當訪問共享存儲器位置時,訪問同一存儲器位置的兩個或更多個線程可以依賴于所述共享存儲器位置中所呈現的具體的值或多個值。然而,當由任何給定的線程訪問所述存儲器位置時,所述共享存儲器位置中具體的值或多個值可能取決于一個或多個線程訪問所述共享存儲器位置的順序。進一步地,給定各種線程的同時操作,確保由多線程程序中任何給定的線程訪問共享存儲器位置的順序是非常難以控制的。
程序員常常使用復合語句和互斥鎖,來相對于另一個線程中執行的操作而對一個線程中執行的操作進行適當的排序。對操作進行排序的這個過程被稱作串行化。然而,鎖和復合語句必須被放置于任何給定的線程或處于使得執行期望的順序的操作的位置中的多個線程中。當這些鎖和/或復合語句放置不當時,就不能實現期望的順序的操作,并且可能導致并發沖突,由此造成計算機崩潰、不正確的程序輸出或其他不期望的結果。
修復包括由并發沖突造成的那些在內的任何計算機錯誤或故障,通常 涉及再現該故障,使得能夠正確地對該故障進行識別,并且使得能夠修改程序中承擔責任的部分以改正該故障。在串行程序的上下文中進行調試是非常簡單的,因為它涉及順序地單步調試代碼的指令,直至發生該故障,并且然后修正對該故障承擔責任的指令。然而,調試的這種方法在多線程程序中并不適用,因為多線程程序的各種線程的指令被執行的順序是未知的,而且實際上可以在程序的任何給定的執行期間改變。實際上,多線程程序中呈現的特定的故障可能不會發生于所述程序的每次執行中(即,所述故障可能是非確定性的)。
附圖說明
圖1是被實現為多線程控制器的示例工具的框圖,用于再現多線程程序中的并發沖突。
圖2示出了偽代碼表示的示例多線程程序的第一及第二線程的操作。
圖2A示出了偽代碼表示的示例多線程程序的第一及第二線程的操作,所述示例多線程程序具有分別插入到所述第一及第二線程中的第一線程控制器和第二線程控制器。
圖3是圖1的多線程控制器的示例實施方式的框圖。
圖4示出了偽代碼表示的示例控制結構的示例操作,所述示例控制結構被用于控制圖1和/或圖3的示例第一線程控制器及第二線程控制器的操作。
圖5示出了偽代碼表示的圖3的示例多線程控制器的示例狀態監視器的示例操作。
圖6示出了偽代碼表示的圖3的示例第一及第二線程控制器的示例操作,所述示例第一及第二線程控制器被配置為控制圖2的第一及第二線程的操作。
圖7是表示示例機器可讀指令的流程圖,所述示例機器可讀指令可以被執行以實現圖1的多線程控制器,以用于使第一線程及第二線程再現由除零異常所造成的并發沖突。
圖8是表示示例機器可讀指令的流程圖,可以執行所述示例機器可讀指令以實現圖3的多線程控制器,以用于使圖2的第一線程及第二線程再 現由除零異常造成的并發沖突。
圖9是表示示例機器可讀指令的流程圖,可以執行所述示例性機器可讀指令以實現圖6的多線程控制器,以用于使圖2的所述第一線程及第二線程再現由除零異常造成的并發沖突。
圖10是表示示例機器可讀指令的流程圖,可以執行所述示例性機器可讀指令以實現圖4的示例控制結構。
圖11示出了可以被用于實現圖4的控制結構的操作的偽代碼。
圖12是示例處理系統的框圖,其可以執行圖7、圖8、圖9、圖10和/或圖11的示例機器可讀指令來實現圖1、圖3、圖4、圖5和/或圖6的示例多線程控制器。
具體實施方式
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于英特爾公司,未經英特爾公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201180075811.2/2.html,轉載請聲明來源鉆瓜專利網。





