国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      并行程序的死鎖檢測方法和系統(tǒng)的制作方法

      文檔序號:6578194閱讀:237來源:國知局
      專利名稱:并行程序的死鎖檢測方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及并行程序,特別涉及并行程序的死鎖檢測方法和系統(tǒng)。
      背景技術(shù)
      隨著計算機技術(shù)的飛速發(fā)展,單核處理器逐漸被多核處理器所取替。多核處理器 通過把多個執(zhí)行內(nèi)核集成到一個物理處理器,從而顯著地增強計算機的處理能力和計算能 力,并把并行計算的優(yōu)勢充分發(fā)揮出來。所謂并行計算分為時間上的并行和空間上的并行, 時間上的并行就是指流水線技術(shù),而空間上的并行則是指用多個處理器并發(fā)的執(zhí)行計算。 通常用并行程序?qū)崿F(xiàn)并行計算,在并行程序中,任務(wù)處理被分成多個部分(線程),這些線 程可并行地執(zhí)行,并通過訪問某些共享數(shù)據(jù)結(jié)構(gòu)和使用合適的同步方法來彼此通信,以協(xié) 同并正確地工作。但是,并行程序中的進程(線程)死鎖(deadlock)是一個非常致命的問題。進 程(線程)死鎖是指是指兩個或兩個以上的進程(線程)在執(zhí)行過程中,因競爭共享資源 而造成的一種互相等待的現(xiàn)象,除非發(fā)生死鎖的某個進程(線程)放棄該共享資源,否則死 鎖中的兩個事務(wù)都將無限期等待下去。進程(線程)死鎖通常會導(dǎo)致整個系統(tǒng)癱瘓。觸發(fā) 進程(線程)死鎖的因素很多,其中主要包括(1)有限的系統(tǒng)資源;(2)進程(線程)運 行推進的順序不合適;(3)資源分配不當。如果系統(tǒng)資源充足,進程的資源請求都能夠得到 滿足,死鎖出現(xiàn)的可能性就很低,否則就會因爭奪有限的資源而陷入死鎖。其次,進程運行 推進順序與速度不同,也可能產(chǎn)生死鎖。為了避免進程(線程)死鎖對整個系統(tǒng)造成的重 大危害,提高系統(tǒng)的穩(wěn)定性,需要有一個有效的方法進行死鎖檢測,以便及時發(fā)現(xiàn)進程(線 程)死鎖,并采取適當?shù)拇胧┙獬梨i,避免系統(tǒng)運行狀況進一步惡化。通常利用鎖圖(lock graph)來直觀地表示死鎖的狀況,通過記錄并行程序執(zhí)行 過程中的鎖操作,并在鎖圖中相應(yīng)地增加節(jié)點和有向邊來獲得對應(yīng)于并行程序過程中的鎖 圖,在鎖圖中,節(jié)點表示為資源的鎖,從一個節(jié)點指向另一個節(jié)點的有向邊表示已獲得某個 資源的鎖的進程正在請求獲得另一個資源的鎖。如果鎖圖中兩個或多個節(jié)點之間的有向邊 構(gòu)成閉合的有向環(huán),說明并行程序中存在死鎖,因此可以通過檢查鎖圖中是否存在有向環(huán) 來檢測死鎖。圖1示出并行程序的死鎖狀態(tài)圖,其中線程Tl已經(jīng)獲得資源Rl的鎖,并請求 資源R2的鎖,線程T2具有資源R2的鎖,并請求資源Rl的鎖,因為這兩個線程都需要獲得 對方已經(jīng)擁有的資源才能繼續(xù)執(zhí)行,而Tl和T2擁有的資源又必須等到各自的線程繼續(xù)執(zhí) 行才會釋放出來,所以陷入了死鎖狀態(tài)。然而,在實際中應(yīng)用上述方法進行死鎖檢測并不十分有效,隨著程序的運行,越來 越多的節(jié)點和邊被添加到鎖圖中,圖2示出一個并行程序的鎖圖實例,該鎖圖中有1014個 節(jié)點和3051條有向邊,在鎖圖中檢測有向環(huán)的操作非常慢,耗費掉大量的時間和計算資 源,極大地降低了死鎖檢測的效率。因此,需要一種改進的死鎖檢測方法以提高死鎖檢測的效率。

      發(fā)明內(nèi)容
      基于上述問題,本發(fā)明提供一種并行程序的死鎖檢測方法和系統(tǒng)。根據(jù)本發(fā)明的一個方面,提供一種并行程序的死鎖檢測方法,包括在并行程序運 行過程中確定所述并行程序的鎖不再被使用;從對應(yīng)于所述并行程序運行過程的鎖圖中刪 除與不再被使用的鎖對應(yīng)的節(jié)點以及與不再被使用的鎖相關(guān)的邊以獲得更新的鎖圖,其中 所述鎖圖是根據(jù)所述并行程序的鎖操作構(gòu)建的;以及對所述更新的鎖圖進行死鎖檢測。根據(jù)本發(fā)明的一個方面,提供一種并行程序的死鎖檢測系統(tǒng),包括確定裝置,被 配置為在所述并行程序運行過程中確定所述并行程序的鎖不再被使用;鎖刪除裝置,被配 置為從對應(yīng)于所述并行程序運行過程的鎖圖中刪除與不再被使用的鎖對應(yīng)的節(jié)點以及與 不再被使用的鎖相關(guān)的邊以獲得更新的鎖圖,其中所述鎖圖是根據(jù)所述并行程序的鎖操作 構(gòu)建的;以及死鎖檢測裝置,被配置為對所述更新的鎖圖進行死鎖檢測。通過本發(fā)明提供的一種并行程序中死鎖檢測的方法和系統(tǒng),及時將不再使用的鎖 節(jié)點及其相關(guān)的邊從并行程序的鎖圖中刪除,從而有效降低了鎖圖的復(fù)雜性(減少大量節(jié) 點和邊)。基于修剪之后的鎖圖進行有向環(huán)的檢測以確定是否存在潛在的死鎖,能夠節(jié)約大 量時間和計算資源,極大地提高了死鎖檢測的效率。


      結(jié)合附圖,通過參考下列詳細的示例性實施例的描述,將會更好地理解本發(fā)明本 身、優(yōu)選的實施方式以及本發(fā)明的目的和優(yōu)點,其中圖1示出并行程序的死鎖狀態(tài)圖;圖2示出一個并行程序的鎖圖實例;圖3示出根據(jù)本發(fā)明實施例的并行程序的死鎖檢測方法;圖4a示出對應(yīng)于第一實施例的多線程并行程序執(zhí)行過程的鎖圖;圖4b示出從圖4a的鎖圖上刪除互斥鎖requestjnutex的節(jié)點以及與互斥鎖 request_mutex相關(guān)的邊后的鎖圖;圖4c示出從圖4b的鎖圖上刪除互斥鎖control_mutex的節(jié)點以及與互斥鎖 control_mutex相關(guān)的邊后的鎖圖;圖5a示出對應(yīng)于第二實施例的多線程并行程序執(zhí)行過程的鎖圖;圖5b示出從圖5a的鎖圖上刪除鎖G的節(jié)點以及與鎖G相關(guān)的邊后的鎖圖;圖5c示出從鎖圖5b上刪除鎖Ll的節(jié)點以及與鎖Ll相關(guān)的邊后的鎖圖;圖6a示出對應(yīng)于第三實施例的Java程序的字節(jié)碼在JVM上運行過程的鎖圖;圖6b示出從圖6a上刪除鎖G的節(jié)點以及與鎖G相關(guān)的邊后更新的鎖圖;圖6c示出從圖6b上刪除鎖Ll的節(jié)點以及與鎖Ll相關(guān)的邊后更新的鎖圖;以及圖7示出根據(jù)本發(fā)明實施例的并行程序的死鎖檢測系統(tǒng)的框圖。
      具體實施例方式以下結(jié)合附圖描述根據(jù)本發(fā)明實施例的并行程序的死鎖檢測方法和系統(tǒng)。圖3示 出根據(jù)本發(fā)明實施例的并行程序的死鎖檢測方法,包括在步驟S301,在并行程序運行過 程中確定所述并行程序的鎖不再被使用;在步驟S302,從對應(yīng)于所述并行程序運行過程的
      5鎖圖中刪除與不再被使用的鎖對應(yīng)的節(jié)點以及與不再被使用的鎖相關(guān)的邊以獲得更新的 鎖圖,其中所述鎖圖是根據(jù)所述并行程序的鎖操作構(gòu)建的;以及在步驟S303,對所述更新 的鎖圖進行死鎖檢測。具體地,在步驟S301,其中在并行程序運行過程中確定所述并行程序的鎖不再被 使用進一步包括響應(yīng)于接收到所述并行程序的鎖不再被使用的事件通知,確定所述并行程 序的鎖不再被使用。在并行程序運行過程中確定所述并行程序的鎖不再被使用進一步包括通過對所 述并行程序的代碼進行掃描,對所述并行程序的鎖的生命周期進行分析。根據(jù)本發(fā)明的一個實施例,對所述并行程序的鎖的生命周期進行分析進一步包括 響應(yīng)于檢測到并行程序中存在顯式的破壞鎖的函數(shù)調(diào)用,從而識別出在并行程序運行過程 中所述并行程序的鎖被最后使用的位置。在所述并行程序的鎖被最后使用的位置附近添加 標記,所述標記用于在所述并行程序運行過程中觸發(fā)所述并行程序的鎖不再被使用的事件 通知。例如,在Linux上,多線程應(yīng)用程序常使用的pthread庫提供的互斥鎖Mutex,其破壞 鎖的函數(shù)為 intpthread_mutex_destroy(pthread_mutex_t * mutex);而多進程常用來實 現(xiàn)互斥的信號量semaphore也是一種特殊的鎖,其破壞鎖的函數(shù)為int semctl (int semid, int semnum, IPC_RMID,…)。根據(jù)本發(fā)明的一個實施例,對鎖的生命周期進行分析進一步包括識別出并行程序 運行過程中所述并行程序的鎖可能被最后使用的位置的集合,具體地,響應(yīng)于未檢測到并 行程序中存在破壞鎖的函數(shù)調(diào)用,對所述并行程序進行數(shù)據(jù)流分析,確定所述并行程序的 鎖被定義和被使用的位置,從而識別出所述并行程序運行過程中所述并行程序的鎖可能被 最后使用的位置的集合。在并行程序的鎖可能被最后使用的位置附近添加標記,所述標記 用于在并行程序運行過程中觸發(fā)所述并行程序的鎖可能不再被使用的事件通知,響應(yīng)于接 收到所有所述標記觸發(fā)的所述并行程序的鎖可能不再被使用的事件通知,確定所述并行程 序的鎖不再被使用。根據(jù)本發(fā)明的一個實施例,可以利用靜態(tài)代碼分析的方法實現(xiàn)對并行程序的鎖的 生命周期進行分析,靜態(tài)代碼分析就是在不執(zhí)行代碼的情況下進行代碼檢查(例如進行源 代碼檢查、二進制代碼檢查或是字節(jié)碼檢查)。靜態(tài)代碼掃描是靜態(tài)代碼分析的首要步驟, 以下分別列舉針對具有顯式破壞鎖的函數(shù)調(diào)用的多線程的并行程序和不具有顯式破壞鎖 的函數(shù)調(diào)用的多線程的并行程序進行靜態(tài)代碼分析的實例。為了易于理解,下述實施例均 采用對源代碼進行靜態(tài)分析的方式。第一實施例以下示出對具有顯式破壞鎖的函數(shù)調(diào)用的c語言程序examplel. c進行靜態(tài)代碼 分析的實例,c語言程序examplel. c中包含了 Linux的pthread庫中的互斥鎖Mutex,破壞 互斥鎖 Mutex 的函數(shù)是intpthread_mutex_destroy (pthread_mutex_t ~k mutex),靜態(tài)代 碼分析需要在不執(zhí)行代碼的情況下對源代碼examplel. c進行掃描,識別出與破壞互斥鎖 Mutex的函數(shù)相匹配的函數(shù)代碼,進而識別出并行程序運行過程中鎖被最后使用的位置, 并在鎖被最后使用的位置附近添加標記,以在并行程序運行過程中觸發(fā)鎖被破壞的事件通 知,從而在并行程序運行過程中發(fā)送鎖不再被使用的事件通知。
      權(quán)利要求
      一種并行程序的死鎖檢測方法,包括在并行程序運行過程中確定所述并行程序的鎖不再被使用;從對應(yīng)于所述并行程序運行過程的鎖圖中刪除與不再被使用的鎖對應(yīng)的節(jié)點以及與不再被使用的鎖相關(guān)的邊以獲得更新的鎖圖,其中所述鎖圖是根據(jù)所述并行程序的鎖操作構(gòu)建的;以及對所述更新的鎖圖進行死鎖檢測。
      2.根據(jù)權(quán)利要求1所述的死鎖檢測方法,其中在并行程序運行過程中確定所述并行程 序的鎖不再被使用進一步包括響應(yīng)于接收到所述并行程序的鎖不再被使用的事件通知,確 定所述并行程序的鎖不再被使用。
      3.根據(jù)權(quán)利要求2所述的死鎖檢測方法,其中在所述并行程序運行過程中確定所述并 行程序的鎖不再被使用進一步包括通過對所述并行程序的代碼進行掃描,對所述并行程序 的鎖的生命周期進行分析。
      4.根據(jù)權(quán)利要求3所述的死鎖檢測方法,其中對所述并行程序的鎖的生命周期進行分 析進一步包括識別出所述并行程序運行過程中所述并行程序的鎖可能被最后使用的位置 的集合。
      5.根據(jù)權(quán)利要求4所述的死鎖檢測方法,其中識別出所述并行程序運行過程中所述并 行程序的鎖可能被最后使用的位置的集合進一步包括響應(yīng)于未檢測到所述并行程序中存 在破壞鎖的函數(shù)調(diào)用,對所述并行程序進行數(shù)據(jù)流分析,確定所述并行程序的鎖被定義和 被使用的位置,從而識別出所述并行程序運行過程中所述并行程序的鎖可能被最后使用的 位置的集合。
      6.根據(jù)權(quán)利要求5所述的死鎖檢測方法,進一步包括在所述并行程序的鎖可能被最后 使用的位置附近添加標記,所述標記用于在所述并行程序運行過程中觸發(fā)所述并行程序的 鎖可能不再被使用的事件通知。
      7.根據(jù)權(quán)利要求6所述的死鎖檢測方法,其中響應(yīng)于接收到所述并行程序的鎖不再被 使用的事件通知確定所述并行程序的鎖不再被使用進一步包括響應(yīng)于接收到所有所述標 記觸發(fā)的所述并行程序的鎖可能不再被使用的事件通知,確定所述并行程序的鎖不再被使 用。
      8.根據(jù)權(quán)利要求3所述的死鎖檢測方法,其中對所述并行程序的鎖的生命周期進行分 析進一步包括響應(yīng)于檢測到所述并行程序中存在破壞鎖的函數(shù)調(diào)用,確定出在所述并行程 序運行過程中所述并行程序的鎖被最后使用的位置。
      9.根據(jù)權(quán)利要求8所述的死鎖檢測方法,進一步包括在所述并行程序的鎖被最后使用 的位置附近添加標記,所述標記用于在所述并行程序運行過程中觸發(fā)所述并行程序的鎖不 再被使用的事件通知。
      10.根據(jù)權(quán)利要求1或4所述的死鎖檢測方法,其中在并行程序運行過程中確定所述并 行程序的鎖不再被使用進一步包括響應(yīng)于在所述并行程序運行過程中檢測到所述并行程 序的鎖被垃圾回收,確定出所述并行程序的鎖不再被使用。
      11.一種并行程序的死鎖檢測系統(tǒng),包括確定裝置,被配置為在所述并行程序運行過程中確定所述并行程序的鎖不再被使用;鎖刪除裝置,被配置為從對應(yīng)于所述并行程序運行過程的鎖圖中刪除與不再被使用的鎖對應(yīng)的節(jié)點以及與不再被使用的鎖相關(guān)的邊以獲得更新的鎖圖,其中所述鎖圖是根據(jù)所 述并行程序的鎖操作構(gòu)建的;以及死鎖檢測裝置,被配置為對所述更新的鎖圖進行死鎖檢測。
      12.根據(jù)權(quán)利要求11所述的死鎖檢測系統(tǒng),其中所述確定裝置進一步被配置為響應(yīng)于 接收到所述并行程序的鎖不再被使用的事件通知,確定所述并行程序的鎖不再被使用。
      13.根據(jù)權(quán)利要求12所述的死鎖檢測系統(tǒng),其中所述確定裝置進一步包括鎖的生命周 期分析裝置,被配置為通過對所述并行程序的代碼進行掃描,對所述并行程序的鎖的生命 周期進行分析。
      14.根據(jù)權(quán)利要求13所述的死鎖檢測系統(tǒng),其中所述鎖的生命周期分析裝置進一步被 配置為識別出在所述并行程序運行過程中所述并行程序的鎖可能被最后使用的位置的集合 O
      15.根據(jù)權(quán)利要求14所述的死鎖檢測系統(tǒng),其中所述鎖的生命周期分析裝置進一步被 配置為響應(yīng)于未檢測到所述并行程序中存在破壞鎖的函數(shù)調(diào)用,對所述并行程序進行數(shù)據(jù) 流分析,確定所述并行程序的鎖被定義和被使用的位置,從而找到在所述并行程序運行過 程中所述并行程序的鎖可能被最后使用的位置的集合。
      16.根據(jù)權(quán)利要求15所述的死鎖檢測系統(tǒng),其中所述鎖的生命周期分析裝置進一步被 配置為在所述并行程序的鎖可能被最后使用的位置附近添加標記,所述標記用于在所述并 行程序運行過程中觸發(fā)所述并行程序的鎖可能不再被使用的事件通知。
      17.根據(jù)權(quán)利要求16所述的死鎖檢測系統(tǒng),其中所述確定裝置進一步被配置為響應(yīng)于 接收到所有所述標記觸發(fā)的所述并行程序的鎖可能不再被使用的事件通知,確定所述并行 程序的鎖不再被使用。
      18.根據(jù)權(quán)利要求13所述的死鎖檢測方法,其中所述鎖的生命周期分析裝置進一步被 配置為響應(yīng)于檢測到所述并行程序中存在破壞鎖的函數(shù)調(diào)用,確定出在所述并行程序運行 過程中所述并行程序的鎖被最后使用的位置。
      19.根據(jù)權(quán)利要求18所述的死鎖檢測系統(tǒng),其中所述鎖的生命周期分析裝置進一步被 配置為在所述并行程序的鎖被最后使用的位置附近添加標記,所述標記用于在所述并行程 序運行過程中觸發(fā)所述并行程序的鎖不再被使用的事件通知。
      20.根據(jù)權(quán)利要求11或14所述的死鎖檢測系統(tǒng),其中所述確定裝置進一步被配置為響 應(yīng)于在所述并行程序運行過程中檢測到所述并行程序的鎖被垃圾回收,確定出所述并行程 序的鎖不再被使用。
      全文摘要
      本發(fā)明公開一種并行程序的死鎖檢測方法和系統(tǒng),其中該方法包括在并行程序運行過程中確定所述并行程序的鎖不再被使用;從對應(yīng)于所述并行程序運行過程的鎖圖中刪除與不再被使用的鎖對應(yīng)的節(jié)點以及與不再被使用的鎖相關(guān)的邊以獲得更新的鎖圖,其中所述鎖圖是根據(jù)所述并行程序的鎖操作構(gòu)建的;以及對所述更新的鎖圖進行死鎖檢測。
      文檔編號G06F9/54GK101937365SQ20091013982
      公開日2011年1月5日 申請日期2009年6月30日 優(yōu)先權(quán)日2009年6月30日
      發(fā)明者羅志達, 鄭勇, 齊堯 申請人:國際商業(yè)機器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1