專利名稱:用于死鎖檢測的犧牲選擇的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式計算機系統(tǒng),尤其涉及檢測到死鎖或潛在死鎖時的犧牲選擇。
背景技術(shù):
在計算中長期存在的挑戰(zhàn)之一是處理死鎖問題。如果存在一組實體,此組中的每個實體都在等候此組中的另一實體釋放所占有的至少一種資源,這時死鎖就會發(fā)生。能夠占有一種資源的實體在這里稱為占有實體(possessory entity)。例如,在數(shù)據(jù)庫系統(tǒng)環(huán)境下,其中實體包括進程和事務,事務是指工作的基本單位。
例如,事務T1試圖獨占資源R1和R2。如果R1可用,但R2目前為另一事務T2所獨占,那么事務T1可以獨占R1但必須等候R2可用。如果事務T2試圖占有R1,且T2暫緩等候R1而不釋放R2,死鎖將會發(fā)生。因為T1和T2都在等候?qū)Ψ?,以致于雙方都被鎖死。
計算機系統(tǒng)利用多種死鎖處理機制(死鎖處理程序)檢測死鎖。解決死鎖的過程包括首先確定是否存在死鎖,其次確定如何解決死鎖。幾種處理死鎖的技術(shù)包括等待圖技術(shù)(wait-for graph technique)和超時技術(shù)(time-out technique)。
等待圖技術(shù)基于“循環(huán)(cycle)”檢測死鎖。具體而言,在進程請求資源,或等候資源超過閾值期限之后,可以生成并檢查用于所有循環(huán)的等待圖。如果識別出所有循環(huán),那么死鎖檢測機制識別出潛在的死鎖。然后選取是部分死鎖循環(huán)的資源用于解決死鎖。因為占有或正在請求資源的實體在采取措施解決死鎖時將通常蒙受性能損失,所以如此選出的資源此處稱為“犧牲資源(victimresource)”。同樣,占有或正在請求犧牲資源的實體此處稱為“犧牲實體”。在本文中所用的名詞“犧牲”指的是犧牲資源或犧牲實體。
通常,在循環(huán)內(nèi),犧牲資源是一種請求造成死鎖的實體所持有的資源。解決死鎖的一種方式是釋放對犧牲資源的鎖定??梢远喾N方式釋放對犧牲資源的鎖定。例如,當犧牲實體是事務時,把造成死鎖情形的資源請求的取消和造成事務所持有的資源釋放的回滾(rollback)結(jié)合起來。然后事務可以試圖重新獲得資源并重新執(zhí)行回滾的步驟。步驟的重新執(zhí)行可自動完成或基于客戶輸入啟動。
等待圖是一種說明哪些實體占有資源、哪些實體正在等候資源的圖表。在附圖中,術(shù)語“等待(WAITING)”表示實體處于等待資源的“等待狀態(tài)”,所以實體沒有“運行(RUNNING)”。等待圖的例子如圖1a和1b中所示。圖1a描述了下面的情況1)實體110占有資源R1;2)實體120占有資源R2且需要資源R1。因此實體120排在實體110之后,并進入等待狀態(tài),等待實體110完成使用資源R1;3)實體130占有資源R3且需要資源R2。因此實體130排在實體120之后,并進入等待狀態(tài),等待實體120完成使用資源R2;4)實體140占有資源R4且需要資源R3。因此實體140排在實體130之后,并進入等待狀態(tài),等待實體130完成使用資源R3;5)實體150占有資源R5且需要資源R4;因此實體150排在實體140之后,并進入等待狀態(tài),等待實體140完成使用資源R4;
6)實體160沒有資源,但它需要資源R5;因為實體150已經(jīng)占有資源R5,所以實體160排在實體150之后,并進入等待狀態(tài),等待實體150完成使用資源R5;7)實體110也需要資源R5;實體160已經(jīng)在等待資源R5;因此實體110排在實體160之后,并進入等待狀態(tài),等待實體160完成使用資源R5;描述等待圖的另一種方式是用節(jié)點來表示資源,箭頭表示占有實體。在圖1b中,R1、R2、R3、R4、R5、R6、R7、R8表示資源,箭頭E1、E2、E3、E4、E5、E6、E7、E8表示占有實體。箭頭起點表示占有實體正在持有的資源,箭頭末端表示占有實體正在請求的資源。所以,在圖1b中1)實體E1持有R1,正在請求R2;2)實體E2持有R2,正在請求R3;3)實體E3持有R3,正在請求R4;4)實體E4持有R4,正在請求R1和R5;5)實體E5持有R5,正在請求R6;6)實體E6持有R6,正在請求R7;7)實體E7持有R7,正在請求R8;以及8)實體E8持有R8,正在請求R1。
在圖1a和1b中,實體和資源的循環(huán)描述了一種死鎖情形。圖1a和1b中的所有實體都在等待資源,但是沒有一個實體愿意放棄資源以使其它實體得以進行。因此,需要采取措施打破這種循環(huán)。在圖1a中,實體110是最后一個請求資源的實體,且這個請求導致了死循環(huán),因此隨意地選取實體110所占有的資源用于釋放。問題在于,實體110正在持有的資源可能不是適合的釋放候選對象。
在超時技術(shù)中,一旦占有實體為獲得一種資源的擁有權(quán)等待了一定的閾值期間,就假定它陷入死鎖。但是獲得一種資源的擁有權(quán)引起的延遲原因除了死鎖之外還有許多原因,所以超時技術(shù)檢測死鎖的精確性不高。
不幸地是,選擇資源犧牲是(1)最近被請求的陷入死鎖環(huán)的資源,或者(2)“超時”的實體請求的資源,可造成巨大開銷。例如,在任何一種情況下,犧牲實體都可能是長期運行差不多完成的事務。在犧牲實體是事務的情況下,有必要重新執(zhí)行整個事務。在能夠以花費最小開銷的其它方式打破死鎖時,終止這樣的實體是非常浪費的。
基于上述,需要提供一種用于打破檢測到的死鎖的更高效的方法。
發(fā)明內(nèi)容
本發(fā)明描述了一種在檢測到潛在死鎖時選擇犧牲的機制和系統(tǒng)。根據(jù)一個實施例,選擇過程通過如下三個步驟(pass)來進行1)在步驟1中,從陷入死鎖的候選對象集合中確定一個候選對象子集,子集中的候選對象的CAN-BE-VICTIM(能-是-犧牲)標記所設的值表明允許候選對象被選作犧牲;2)如果步驟1得到的候選對象子集中的候選對象多于一個,那么在步驟2處理該子集,基于與資源類型相關(guān)的資源優(yōu)先級確定第二候選對象子集;以及3)如果步驟2得到的候選對象子集中的候選對象多于一個,那么處理該子集,選出一直在運行或占有最短時間的候選對象。
本發(fā)明通過例子進行說明,而非出于限制目的,在附圖中,相同標號指相同部分,其中圖1a是描述等待圖的框圖;圖1b是描述等待圖的框圖;以及圖2是能夠執(zhí)行本發(fā)明的實施例的計算機系統(tǒng)的框圖。
具體實施例方式
本發(fā)明描述了一種用于響應檢測到死鎖或潛在死鎖而選擇犧牲的方法和裝置。在下面的描述中,出于解釋目的,為了徹底地理解本發(fā)明,闡明了許多具體細節(jié)。然而,對于本領(lǐng)域技術(shù)人員來說顯而易見地是,即使沒有這些具體細節(jié)也可以實施本發(fā)明。在其它例子中,為了避免對本發(fā)明造成不必要的模糊,公知結(jié)構(gòu)和設備以框圖的形式顯示。
功能概述本發(fā)明描述了一種在檢測到潛在死鎖時選擇犧牲的機制和系統(tǒng)。資源可能不是在響應檢測到由于幾種原因造成死鎖時所選出的犧牲資源的適合的候選對象。例如,占有資源的占有實體可以是高優(yōu)先級進程或事務,需要盡可能快地完成。選擇由這種實體占有的資源作為死鎖的犧牲資源會造成占有實體遭受難以接受的損失。同樣,當占有資源的占有實體已經(jīng)運行了很長時間時,這種資源可能不是適合的犧牲資源。
為了解決這些問題,本發(fā)明提供了用來在多個陷入死鎖的候選對象中選出一個候選對象作為“犧牲”來解決死鎖的技術(shù)。這種技術(shù)包括基于一個或多個因素選出犧牲,這些因素可包括1)與每一候選對象相關(guān)的犧牲指示器的值,它表示被占有的資源是否可能被釋放或被請求的資源是否可能被延遲;2)分配給資源的類別和/或優(yōu)先級;以及3)占有實體運行的或資源被占有的時間長度。
一旦選出了犧牲,可使用多種技術(shù)解決死鎖問題。例如,其中一項技術(shù)包括回滾占有被選作犧牲資源的資源的實體。其它技術(shù)包括使對犧牲資源的請求失敗并延遲對犧牲資源的請求。雖然各種死鎖解決技術(shù)可以和此處描述的犧牲選擇技術(shù)一起使用,但本發(fā)明不限于在選出犧牲的情況下解決死鎖的任何特定技術(shù)。
CAN-BE-VICTIM(能-是-犧牲)標記在下面描述的實施例中,犧牲選擇操作的第一個步驟基于CAN-BE-VICTIM(能-是-犧牲)標記是否被設置為“真”或“假”。一個候選對象的CAN-BE-VICTIM(能-是-犧牲)標記的值表示這個候選對象是否被允許選作犧牲。這個CAN-BE-VICTIM(能-是-犧牲)標記可以用多種方式設置。例如,CAN-BE-VICTIM(能-是-犧牲)標記的值可以由用戶或裝置來設置,或基于服務策略來設置,在基于服務策略的情況下,用戶和裝置與服務策略進行協(xié)商。此外,其中CAN-BE-VICTIM(能-是-犧牲)標記可與進程、事務、或資源相關(guān)聯(lián)。這些設置CAN-BE-VICTIM(能-是-犧牲)標記的方式列表和與CAN-BE-VICTIM(能-是-犧牲)標記關(guān)聯(lián)的實體類型不被規(guī)定為排它性的列表。
資源優(yōu)先級有幾種用于計算資源優(yōu)先級的技術(shù)。例如,資源優(yōu)先級可以是應用開始時分配的靜態(tài)數(shù)值,或者可以是在資源生命期中隨資源使用和占有資源的占有實體的狀態(tài)變化的動態(tài)數(shù)值。在使用靜態(tài)和動態(tài)優(yōu)先級的實施例中,資源的動態(tài)優(yōu)先級值可以加到資源的靜態(tài)優(yōu)先級值上,以產(chǎn)生復合優(yōu)先級。
在一個實施例中,靜態(tài)優(yōu)先級可基于資源對于應用的功能意義分配給資源的數(shù)值來確定。
被占有資源的動態(tài)優(yōu)先級可通過計算對該資源的爭用量來確定。例如,爭用量可以是游值,最始設置為某一事先確定的值,當資源的存取模式高于閥值時,爭用量增加。同樣,當資源的存取模式低于閥值時,爭用量減少。閥值可以相同,也可以不同。而且,可以有幾個閥值,其中每一閥值與爭用量增加或減少的不同數(shù)量相關(guān)。
而且,資源的動態(tài)優(yōu)先級可通過查看所有已經(jīng)被它的占有實體占有或潛在占有的資源來確定。例如,占有實體所占有的資源的動態(tài)優(yōu)先級可以通過對占有實體所占有的所有資源的動態(tài)優(yōu)先級取平均來確定。這種求動態(tài)優(yōu)先級的平均以得到動態(tài)優(yōu)先級的方法可以用來確保犧牲資源將不屬于已經(jīng)占有幾種高優(yōu)先級資源的占有實體。
用于計算靜態(tài)優(yōu)先級和動態(tài)優(yōu)先級的輸入值可由用戶或裝置設置,或基于服務策略來設置,在基于服務策略的情況下,用戶和裝置與服務策略進行協(xié)商。這些僅僅是用于計算資源優(yōu)先級的技術(shù)的幾個例子。
選擇犧牲的技術(shù)根據(jù)一個實施例,使用一種三步過濾操作選出犧牲資源,如下所述步驟1在第一個步驟中,從死鎖圖中選出設置了CAN-BE-VICTIM(能-是-犧牲)標記的資源集合。如果圖中僅有一個設置有CAN-BE-VICTIM(能-是-犧牲)標記的資源,那么該資源是犧牲,否則進行步驟2。
步驟2在第二個步驟中,把從步驟1得到的資源集合分成子集,每個子集包含具有相同優(yōu)先級的資源。另一種方法是,從步驟1得到的集合可根據(jù)優(yōu)先級范圍進行分割。一旦已經(jīng)根據(jù)優(yōu)先級對資源進行分割,選出具有最小優(yōu)先級的資源子集。如果最小優(yōu)先級子集僅有一種資源,那么這唯一的資源就是犧牲,否則進行步驟3。
為了解釋步驟2,假設對圖1b中示出的資源R1到R8執(zhí)行步驟1。還假設R1、R2、R3、R4、R5、R6、R7、和R8都具有與其相關(guān)的CAN-BE-VICTIM(能-是-犧牲)標記?;趦?yōu)先級方案(也就是數(shù)值、或范圍),在步驟2中,在步驟1之后剩下的資源集合被分割以產(chǎn)生下面三個集合S0={R1,R5,R8}S1={R2,R3}S2={R4,R6,R7}這里S0>S1>S2和“>”表示“更大優(yōu)先級/優(yōu)先級范圍”。在這種情況中,集合S2={R4,R6,R7}將在步驟2中選出。因為所選出的集合包含多于一個的候選對象,選擇過程繼續(xù)進行到步驟3。
如上面所提到的,資源優(yōu)先級可以是應用開始時分配給它的某一靜態(tài)數(shù)值,和/或是在被占有資源生命周期中隨資源使用和占有資源的占有實體的狀態(tài)變化的某一動態(tài)數(shù)值。
步驟3在步驟2后剩下的資源(也就是最小優(yōu)先級集合中的資源)上執(zhí)行步驟3。在步驟3中,確定集合中每一資源的占有實體的運行時間。具有最短運行時間的占有實體所占有的資源被選作犧牲。
變化在上面所描述的實施例中,死鎖犧牲是通過實施三個步驟選出的,每一個步驟基于不同因素過濾死鎖犧牲候選對象集合。然而,在那些步驟中使用的步驟具體數(shù)量和具體因素因?qū)崿F(xiàn)方式而異。例如,犧牲候選對象集合可以先基于運行時間過濾,然后基于資源優(yōu)先級過濾。
同樣,確定犧牲資源優(yōu)先級值的技術(shù)因?qū)崿F(xiàn)方式和用于確定占有實體運行時間的技術(shù)而異。例如,如果占有實體是進程,則進程運行的時間可通過向操作系統(tǒng)發(fā)出呼叫來確定。另一方面,如果占有實體是事務,獲得事務的運行時間所使用的技術(shù)將取決于事務如何在所屬的系統(tǒng)中實現(xiàn)。
而且,過濾可在考慮了多種具有不同權(quán)重的因素的單一步驟中進行。例如,一個步驟可基于資源優(yōu)先級和運行時間過濾,其中如果其它候選對象的運行時間極大地超過具有相對高優(yōu)先級資源的候選對象,后者仍然可以被選作犧牲。其它因素可包括,例如,占有實體的類型和與占有實體相關(guān)的用戶的身份。
另外一種可能的技術(shù)是把這個算法應用到實體正請求資源但還沒有獲得那些資源的潛在死鎖中。資源將如何分配的等待圖可被構(gòu)造和分析。如果檢測到潛在死鎖,此處所描述的技術(shù)可能應用于確定哪個資源請求延遲。
硬件概述圖2是框圖,說明了可應用本發(fā)明的實施例的計算機系統(tǒng)200。計算機系統(tǒng)200包括用于傳遞信息的總線202或其它通信裝置、用于處理信息的與總線202連接的處理器204。計算機系統(tǒng)200還包括主存儲器206,例如隨機訪問存儲器(RAM)或者其它動態(tài)存儲裝置,與總線202連接,用于儲存信息及處理器204要執(zhí)行的指令。主存儲器206還可用于處理器204執(zhí)行指令過程中臨時變量或其他中間信息的存儲。計算機系統(tǒng)200還包括只讀存儲器(ROM)208或者其他靜態(tài)存儲裝置,與總線202連接,用于儲存靜態(tài)信息和處理器204的要執(zhí)行的指令。存儲裝置210,如磁盤或光盤,和總線202連接以儲存信息和指令。
計算機系統(tǒng)200可以經(jīng)由總線202連接到顯示器212,如陰極射線管(CRT),用于向計算機用戶顯示信息。包括字母數(shù)字鍵和其他鍵的輸入裝置214與總線202相連,用于傳遞通信信息和命令選擇到處理器204。另一種用戶輸入裝置是光標控制216,如鼠標、跟蹤球、或光標方向鍵,用于傳遞方向信息和命令選擇到處理器204及控制顯示器212上的光標移動。這個輸入設備通常在兩個軸上(第一個軸(例如X軸)和第二個軸(例如Y軸))具有兩個自由度,使裝置能指定平面上的位置。
本發(fā)明涉及將計算機系統(tǒng)200用于選擇適合的候選對象以解決死鎖或潛在死鎖。選擇這種候選對象的指令可從諸如存儲設備210的計算機可讀介質(zhì)讀入主存儲器206。通過執(zhí)行包含在主存儲器206中的指令序列,使處理器204執(zhí)行此處所述的處理步驟。在可選實施例中,硬連線電路(hard-wired circuitry)可取代軟件指令或者與軟件指令結(jié)合來實施該發(fā)明。因此,本發(fā)明中的實施例將不限于硬件電路和軟件的任何特定組合。
這里使用的術(shù)語“計算機可讀介質(zhì)”是指參與提供用于執(zhí)行的指令給處理器204的任何介質(zhì)。這種介質(zhì)可以采取很多形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)和傳遞介質(zhì)。非易失性介質(zhì)舉例來說包括光盤或磁盤,如存儲裝置210。易失性介質(zhì)包括動態(tài)存儲器,如主存儲器206。傳遞介質(zhì)包括同軸電纜、銅線、和光纖,包括由總線202組成的導線。傳遞介質(zhì)還可采取聲波或光波形式,例如那些在無線電波和紅外線數(shù)據(jù)通信過程中產(chǎn)生的聲波和光波。
通常的計算機可讀介質(zhì)舉例來說包括軟盤、柔性盤、活動硬盤、硬盤、磁帶,或者任何其它磁性介質(zhì)、CD-ROM、任何其它光介質(zhì)、打孔紙、紙帶、或者任何帶孔的物理介質(zhì)、RAM、PROM、EPROM、FLASH-EPROM、或者其他任何存儲芯片或者磁帶,或者以下提到的載波、或者計算機能讀的任何其他介質(zhì)。
各種形式的計算機可讀介質(zhì)可參與傳送一個或者多個指令的一個或多個序列到處理器204用以執(zhí)行。例如,指令開始可傳遞到遠程計算機的磁盤中。遠程計算機能將該指令序列加載到其動態(tài)存儲器中,然后通過調(diào)制解調(diào)器的電話線發(fā)送信息。計算機系統(tǒng)200本地的調(diào)制解調(diào)器可接收電話線上的數(shù)據(jù),然后使用紅外轉(zhuǎn)換器將數(shù)據(jù)轉(zhuǎn)換成紅外信號。紅外探測器可以接收紅外信號攜帶的數(shù)據(jù),通過一定的電路可以把信息放置到總線202上。總線202把數(shù)據(jù)傳遞到主存儲器206中,處理器204從主存儲器206取回并執(zhí)行這些指令。在處理器204執(zhí)行這些指令之前或之后,主存儲器206接收的指令可隨意地儲存于存儲裝置210中。
計算機系統(tǒng)200還包括連接到總線202的通信接口218。通信接口218提供雙向數(shù)據(jù)通信,連接到與局域網(wǎng)222相連的網(wǎng)絡鏈路220。例如,通信接口218可以是綜合業(yè)務數(shù)字網(wǎng)(ISDN)卡或者調(diào)制解調(diào)器,用于提供到相應類型電話線的數(shù)據(jù)通信連接。又如,通信接口218可以是局域網(wǎng)(LAN)卡,用于提供至兼容局域網(wǎng)(LAN)的數(shù)據(jù)通信連接。也可以使用無線鏈路。無論采用何種連接,通信接口218均發(fā)送和接受承載各種信息的數(shù)字數(shù)據(jù)流的電信號、電磁信號和光學信號。
網(wǎng)絡鏈路220通??赏ㄟ^一個或者多個網(wǎng)絡提供數(shù)據(jù)通信給其它數(shù)據(jù)裝置。例如,網(wǎng)絡鏈路220可通過局域網(wǎng)222與主機224連接,或者與互聯(lián)網(wǎng)服務提供商(ISP)226操作的數(shù)據(jù)設備連接。ISP226又通過目前通稱為“互聯(lián)網(wǎng)”228的全球分組數(shù)據(jù)通信網(wǎng)絡提供數(shù)據(jù)通信服務。局域網(wǎng)222和互聯(lián)網(wǎng)228都使用承載數(shù)字數(shù)據(jù)流的電信號、電磁信號或光學信號。這些信號,如通過各種網(wǎng)絡的信號,網(wǎng)絡鏈路220上的信號,通過通信接口218的信號,都傳送數(shù)字數(shù)據(jù)給計算機系統(tǒng)200或者傳送來自計算機系統(tǒng)200的數(shù)字數(shù)據(jù),是傳輸信息的載波的示范性形式。
計算機系統(tǒng)200能通過網(wǎng)絡、網(wǎng)絡鏈路220和通信接口218發(fā)送消息和接收數(shù)據(jù),包括程序代碼。例如,在互聯(lián)網(wǎng)上,服務器230可通過互聯(lián)網(wǎng)228、ISP 226、局域網(wǎng)222、和通信接口218,傳送所請求的用于應用程序的程序代碼。
當代碼被接收和/或儲存在存儲裝置210上或者其它非易失性介質(zhì)上用于隨后執(zhí)行時,處理器204可執(zhí)行所接收到的代碼。按照這種方式,計算機系統(tǒng)200可以載波的形式獲得應用代碼。
在前述的說明書中,參考具體實施例描述了本發(fā)明。然而,很顯然,在不脫離本發(fā)明的廣泛的精神和范圍的基礎之上,可以有諸多的調(diào)整和變化。說明書和附圖,僅用于說明本發(fā)明,而不是用于限制本發(fā)明的范圍。
權(quán)利要求
1.一種用于選擇在解決死鎖過程中使用的犧牲的方法,所述方法包括以下步驟最初確定多個陷入所述死鎖中的候選對象作為將成為所述犧牲的候選對象;基于一個或多個因素過濾所述多個候選對象,直到剩下唯一的候選對象作為將成為所述犧牲的候選對象;以及選擇所述唯一的候選對象作為在解決所述死鎖過程中使用的犧牲。
2.根據(jù)權(quán)利要求1所述的方法,其中所述過濾步驟還包括從所述多個候選對象中去除具有表明所述候選對象不能是犧牲的能-是-犧牲(CAN-BE-VICTIM)標記的任何候選對象。
3.根據(jù)權(quán)利要求1所述的方法,其中所述過濾步驟還包括從所述多個候選對象中去除資源優(yōu)先級高于其它候選對象的至少一個的資源優(yōu)先級的候選對象。
4.根據(jù)權(quán)利要求1所述的方法,其中所述過濾步驟還包括從所述多個候選對象中去除與占有實體關(guān)聯(lián)的所有候選對象,其中所述占有實體已經(jīng)運行的持續(xù)時間比與其它候選對象關(guān)聯(lián)的占有實體已經(jīng)運行的持續(xù)時間更長。
5.根據(jù)權(quán)利要求1所述的方法,其中所述過濾步驟還包括以下計算機實現(xiàn)步驟在第一步驟基于第一因素從多個候選對象中去除一些候選對象,其中所留下的候選對象是第一候選對象子集;以及在第二步驟基于不同于所述第一因素的第二因素從所述第一候選對象子集中去除一些候選對象。
6.根據(jù)權(quán)利要求5所述的方法,其中,在所述第二步驟之后留下的候選對象是第二候選對象子集,如果在執(zhí)行所述第一步驟之后所述第一候選對象子集中有多于一個的候選對象,則僅執(zhí)行基于所述第二因素的第二步驟。
7.根據(jù)權(quán)利要求6所述的方法,還包括以下計算機實現(xiàn)步驟僅當執(zhí)行所述第一步驟和所述第二步驟之后所述第二候選對象子集中還有多于一個的候選對象時,根據(jù)第三因素執(zhí)行第三步驟,其中所述第三因素不同于所述第一因素和所述第二因素。
8.根據(jù)權(quán)利要求1所述的方法,其中所述過濾步驟還包括以下計算機實現(xiàn)步驟執(zhí)行第一步驟,過濾掉所有具有表明其不是最后一個候選對象的能-是-犧牲標記的候選對象;如果在所述執(zhí)行第一步驟之后剩下多于一個的候選對象,那么執(zhí)行第二步驟以過濾掉資源優(yōu)先級高于其它候選對象的至少一個的資源優(yōu)先級的所有候選對象;如果在執(zhí)行所述第二步驟之后剩下多于一個的候選對象,那么執(zhí)行第三步驟,以過濾掉除了運行持續(xù)時間最短的候選對象之外的所有候選對象。
9.根據(jù)權(quán)利要求1所述的方法,其中所述過濾步驟包括基于為所述候選對象建立的優(yōu)先級進行過濾。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中動態(tài)確定給定候選對象的至少一部分優(yōu)先級。
11.根據(jù)權(quán)利要求10所述的方法,其中根據(jù)除了所述候選對象外有哪些資源由與所述給定候選對象關(guān)聯(lián)的占有實體所占有,確定所述部分。
12.根據(jù)權(quán)利要求9所述的方法,其中靜態(tài)確定給定候選對象的至少一部分優(yōu)先級。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中基于所述給定候選對象的類型確定所述部分。
14.一種計算機可讀介質(zhì),承載用于選擇將在解決死鎖過程中使用的犧牲的指令,所述計算機可讀介質(zhì)承載執(zhí)行以下步驟的指令最初確定陷入所述死鎖的多個候選對象作為將成為所述犧牲的候選對象;基于一個或多個因素過濾所述多個候選對象,直到剩下唯一的候選對象作為將成為所述犧牲的候選對象;以及選擇所述唯一候選對象作為在解決所述死鎖過程中使用的犧牲。
15.根據(jù)權(quán)利要求14所述的計算機可讀介質(zhì),其中所述過濾步驟還包括從所述多個候選對象中去除具有表明候選對象不能是犧牲的能-是-犧牲標記的任何候選對象。
16.根據(jù)權(quán)利要求14所述的計算機可讀介質(zhì),其中所述過濾步驟還包括從所述多個候選對象中去除資源優(yōu)先級高于其它候選對象的至少一個的資源優(yōu)先級的候選對象。
17.根據(jù)權(quán)利要求14所述的計算機可讀介質(zhì),其中所述過濾步驟還包括從所述多個候選對象中去除與占有實體關(guān)聯(lián)的所有候選對象,其中所述占有實體已經(jīng)運行的持續(xù)時間比與其它候選對象關(guān)聯(lián)的占有實體已經(jīng)運行的持續(xù)時間更長。
18.根據(jù)權(quán)利要求14所述的計算機可讀介質(zhì),其中所述過濾步驟還包括以下計算機實現(xiàn)步驟在第一步驟基于第一因素從多個候選對象中去除一些候選對象,其中所留下的候選對象是第一候選對象子集;以及在第二步驟基于不同于所述第一因素的第二因素從所述第一候選對象子集中去除一些候選對象。
19.根據(jù)權(quán)利要求18所述的計算機可讀介質(zhì),其中,在所述第二步驟之后留下的候選對象是第二候選對象子集,如果在執(zhí)行所述第一步驟之后第一候選對象子集中有多于一個的候選對象,則僅執(zhí)行基于所述第二因素的第二步驟。
20.根據(jù)權(quán)利要求19所述的計算機可讀介質(zhì),還包括用于執(zhí)行以下計算機實現(xiàn)步驟的指令僅當執(zhí)行所述第一步驟和所述第二步驟之后所述第二候選對象子集中還有多于一個的候選對象時,根據(jù)第三因素執(zhí)行第三步驟,其中所述第三因素不同于所述第一因素和所述第二因素。
21.根據(jù)權(quán)利要求14所述的計算機可讀介質(zhì),其中所述過濾步驟還包括以下計算機實現(xiàn)步驟執(zhí)行第一步驟,過濾掉所有具有表明其不是最后一個候選對象的能-是-犧牲標記的候選對象;如果在所述執(zhí)行第一步驟之后剩下多于一個的候選對象,那么執(zhí)行第二步驟以過濾掉資源優(yōu)先級高于其它候選對象的至少一個的資源優(yōu)先級的所有候選對象;如果在執(zhí)行所述第二步驟之后剩下多于一個的候選對象,那么執(zhí)行第三步驟,以過濾掉除了運行持續(xù)時間最短的候選對象之外的所有候選對象。
22.根據(jù)權(quán)利要求14所述的計算機可讀介質(zhì),其中所述過濾步驟包括基于為所述候選對象建立的優(yōu)先級進行過濾。
23.根據(jù)權(quán)利要求22中所述的計算機可讀介質(zhì),其中動態(tài)確定給定候選對象的至少一部分優(yōu)先級。
24.根據(jù)權(quán)利要求23所述的計算機可讀介質(zhì),其中根據(jù)除了所述候選對象之外有哪些資源由與所述給定候選對象關(guān)聯(lián)的占有實體所占有,確定所述部分。
25.根據(jù)權(quán)利要求22中所述的計算機可讀介質(zhì),其中靜態(tài)確定給定候選對象的至少一部分優(yōu)先級。
26.根據(jù)權(quán)利要求25所述的計算機可讀介質(zhì),其中基于給定候選對象的類型確定所述部分。
全文摘要
本發(fā)明描述了一種機制和系統(tǒng),在死鎖的情況下,這種機制和系統(tǒng)能夠釋放被占有的資源,或者在檢測到一種潛在的死鎖存在時延遲資源請求。該項技術(shù)涉及到用于選擇候選對象的三個步驟的算法,其中,候選對象是指一個占有實體或被使用的資源;該算法的三個步驟如下(1)確定設置有‘CAN-BE-VICTIM(能-是-犧牲)’標記的候選對象子集;(2)如果步驟1得到的候選對象子集中有多于一個的候選對象,則處理該子集,基于某一類型的資源優(yōu)先級確定第二候選對象子集;(3)如果步驟2得到的候選對象子集中有多于一個的候選對象,則處理該子集,選出運行或被占有持續(xù)時間最短的候選對象。
文檔編號G06F12/00GK1539105SQ02815280
公開日2004年10月20日 申請日期2002年7月24日 優(yōu)先權(quán)日2001年8月3日
發(fā)明者阿洛科·斯里瓦斯塔瓦, 阿洛科 斯里瓦斯塔瓦, 陳偉信 申請人:甲骨文國際公司