專(zhuān)利名稱(chēng):用于解決計(jì)算資源死鎖的設(shè)備、系統(tǒng)以及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算資源死鎖,具體來(lái)說(shuō),涉及解決計(jì)算資源死鎖。
背景技術(shù):
當(dāng)一個(gè)進(jìn)程不能獲得完成該進(jìn)程所需要的資源時(shí),會(huì)發(fā)生死鎖。例如,當(dāng)?shù)谝贿M(jìn)程需要第二進(jìn)程所持有的資源,而該第二進(jìn)程又正在等待第一進(jìn)程所持有的資源時(shí)。這種情況導(dǎo)致無(wú)論哪一個(gè)進(jìn)程都無(wú)法完成。死鎖由于浪費(fèi)了滿(mǎn)足其他請(qǐng)求所需要的資源,而大大地降低了系統(tǒng)性能。盡管從理論上來(lái)講解決該問(wèn)題的方案是簡(jiǎn)單的,但是,產(chǎn)生妥善的解決方案是困難的。當(dāng)前的解決方案沒(méi)有消除該問(wèn)題。結(jié)果,每年死鎖會(huì)造成損失達(dá)數(shù)百萬(wàn)美元的系統(tǒng)中斷。
避免死鎖的一種方法是通過(guò)應(yīng)用標(biāo)準(zhǔn)的順序來(lái)向進(jìn)程分配資源。對(duì)于持有有序類(lèi)別的資源R1,...,Rz的進(jìn)程,此方法限制其請(qǐng)求另一個(gè)資源,除非它與預(yù)先定義的標(biāo)準(zhǔn)匹配。例如,如果a>d,持有類(lèi)別d的資源Rd的進(jìn)程只能請(qǐng)求類(lèi)別a的資源Ra。這種限制通過(guò)不給進(jìn)程提供對(duì)所有資源的可能的訪問(wèn),妨礙最佳性能的實(shí)現(xiàn)。
類(lèi)似地,存在針對(duì)死鎖預(yù)防的理論,但是這些理論要么有缺陷,要么不切實(shí)際。例如,禁止對(duì)于資源的排他的訪問(wèn)對(duì)于那些不能被緩沖的資源來(lái)說(shuō)是不切實(shí)際的。類(lèi)似地,要求進(jìn)程在啟動(dòng)之前請(qǐng)求它們將需要的所有資源是不切實(shí)際的,因?yàn)橄到y(tǒng)需要預(yù)先知道所需要的所有資源,不管程序流如何。
從前面的討論可以看出,顯然需要一種用于解決計(jì)算資源死鎖的設(shè)備、系統(tǒng)和方法。優(yōu)選情況下,這樣的設(shè)備、系統(tǒng)和方法將有效地解決計(jì)算死鎖問(wèn)題,并減少每年由于計(jì)算資源死鎖造成的巨大的金錢(qián)損失。
發(fā)明內(nèi)容
本發(fā)明是針對(duì)當(dāng)前的技術(shù)狀況,具體來(lái)說(shuō),針對(duì)當(dāng)前技術(shù)中的當(dāng)前的解決方案還沒(méi)有完全解決的問(wèn)題和需求而開(kāi)發(fā)出來(lái)的。相應(yīng)地,本發(fā)明是為提供克服當(dāng)前技術(shù)中的許多上文所討論的缺點(diǎn)或全部缺點(diǎn)的用于解決計(jì)算死鎖的設(shè)備、系統(tǒng)、方法而開(kāi)發(fā)的。
用于解決計(jì)算死鎖的設(shè)備配備有一個(gè)邏輯單元,該邏輯單元包含多個(gè)模塊,被配置為在功能上執(zhí)行在一組正在執(zhí)行的進(jìn)程內(nèi)檢測(cè)一組被死鎖的進(jìn)程,取消該組被死鎖的進(jìn)程中的優(yōu)先級(jí)最低的進(jìn)程,允許用戶(hù)向進(jìn)程分配優(yōu)先級(jí)級(jí)別,并為該組正在執(zhí)行的進(jìn)程生成被請(qǐng)求資源報(bào)告的所需要的步驟。所描述的實(shí)施例中的這些模塊包括死鎖檢測(cè)模塊、死鎖解決模塊、優(yōu)先級(jí)分配模塊以及資源跟蹤模塊。
在一個(gè)實(shí)施例中,該設(shè)備被配置為在一組正在執(zhí)行的進(jìn)程內(nèi)檢測(cè)一組被死鎖的進(jìn)程。該設(shè)備還可以被配置為取消該組被死鎖的進(jìn)程中的一個(gè)進(jìn)程。在一個(gè)實(shí)施例中,被選擇為將予以取消的進(jìn)程具有最低的優(yōu)先級(jí)。如果有一個(gè)以上的進(jìn)程具有最低的優(yōu)先級(jí),則可以使用輔助選擇標(biāo)準(zhǔn),如帶有最多相關(guān)進(jìn)程的進(jìn)程,或具有最短等待時(shí)間的進(jìn)程。
該設(shè)備可以被配置為允許用戶(hù)向進(jìn)程分配優(yōu)先級(jí)級(jí)別。默認(rèn)情況下,可以分配優(yōu)先級(jí),以滿(mǎn)足所有進(jìn)程都具有優(yōu)先級(jí)級(jí)別的要求??梢栽谏院蟮哪硞€(gè)時(shí)間、在進(jìn)程完成之前調(diào)整優(yōu)先級(jí)級(jí)別。用戶(hù)能夠通過(guò)圖形用戶(hù)界面或命令行界面來(lái)調(diào)整優(yōu)先級(jí)級(jí)別。
該設(shè)備可以被配置為生成資源報(bào)告,該報(bào)告包含該組正在執(zhí)行的進(jìn)程請(qǐng)求的資源的信息。報(bào)告可以呈現(xiàn)順序文件的形式。報(bào)告可以通過(guò)從操作系統(tǒng)獲取的信息來(lái)生成,它也可以從操作系統(tǒng)本身來(lái)生成。在生成報(bào)告之后,可能需要對(duì)報(bào)告進(jìn)行分析。該設(shè)備可以處理被請(qǐng)求資源報(bào)告,以檢測(cè)是否存在一組被死鎖的進(jìn)程。
在檢測(cè)死鎖的一個(gè)實(shí)施例中,掃描每一個(gè)資源的排它的持有者,以判斷它是否正在等待報(bào)告中列出的任何額外的資源。如果持有者正在等待不同的資源,則識(shí)別第二資源的所有者。然后,將第二資源的所有者與第一資源的等待者進(jìn)行比較。如果第二資源的所有者是第一資源的等待者,那么,存在死鎖。
本發(fā)明還提供了用于解決計(jì)算資源死鎖的系統(tǒng)。該系統(tǒng)可以在計(jì)算系統(tǒng)中實(shí)現(xiàn)。具體來(lái)說(shuō),在一個(gè)實(shí)施例中,該系統(tǒng)包括系統(tǒng)總線、一個(gè)或多個(gè)存儲(chǔ)設(shè)備、網(wǎng)絡(luò)接口卡、中央處理單元(CPU)、主存儲(chǔ)器、操作系統(tǒng)以及網(wǎng)絡(luò)主干線路。
該系統(tǒng)可以進(jìn)一步包括操作系統(tǒng)的資源,正在執(zhí)行的進(jìn)程,以及包括用于解決計(jì)算資源死鎖的進(jìn)程監(jiān)視器。服務(wù)、進(jìn)程以及進(jìn)程監(jiān)視器可以包括在操作系統(tǒng)中,部分地或完全地存儲(chǔ)在主存儲(chǔ)器中。在一個(gè)實(shí)施例中,進(jìn)程監(jiān)視器連接到網(wǎng)絡(luò)主干線路,并可以服務(wù)于駐留在網(wǎng)絡(luò)上的其他設(shè)備。
本發(fā)明還提供了用于解決計(jì)算資源死鎖的方法。所說(shuō)明的實(shí)施例中的方法基本上包括執(zhí)行上文對(duì)于所描述的設(shè)備和系統(tǒng)的操作所提供的功能所需的步驟。在一個(gè)實(shí)施例中,該方法包括在一組正在執(zhí)行的進(jìn)程內(nèi)檢測(cè)一組被死鎖的進(jìn)程以及取消優(yōu)先級(jí)最低的被死鎖的進(jìn)程組的操作。該方法還可以包括允許用戶(hù)向進(jìn)程分配優(yōu)先級(jí)級(jí)別,并為該組正在執(zhí)行的進(jìn)程生成被請(qǐng)求資源報(bào)告的操作。
在再一個(gè)實(shí)施例中,該方法包括處理被請(qǐng)求資源報(bào)告,以判斷是否存在死鎖。如果存在死鎖,則可以選擇將一個(gè)具有最低的優(yōu)先級(jí)的進(jìn)程取消。如果有多個(gè)進(jìn)程具有最低的優(yōu)先級(jí),那么,可以選擇該組被死鎖的進(jìn)程中的具有最多相關(guān)資源的進(jìn)程,或具有最短等待時(shí)間的進(jìn)程。取消被選擇的進(jìn)程可以釋放由未選擇的進(jìn)程請(qǐng)求的資源。
在整個(gè)說(shuō)明書(shū)中對(duì)特征、優(yōu)點(diǎn)的引用或類(lèi)似的語(yǔ)言的引用并不意味著,可以利用本發(fā)明實(shí)現(xiàn)的所有特征和優(yōu)點(diǎn)應(yīng)該是或位于本發(fā)明的任何單一實(shí)施例中。相反地,引用了特征和優(yōu)點(diǎn)的語(yǔ)言被理解為意味著,與實(shí)施例一起描述的特定特征、優(yōu)點(diǎn)或特點(diǎn)包括在本發(fā)明的至少一個(gè)實(shí)施例中。如此,整個(gè)說(shuō)明書(shū)中的對(duì)特征和優(yōu)點(diǎn)的討論,以及類(lèi)似的語(yǔ)言可以,但不一定是指相同實(shí)施例。
此外,在一個(gè)或多個(gè)實(shí)施例中,本發(fā)明的所描述的特征、優(yōu)點(diǎn)和特點(diǎn)可以以任何合適的方式來(lái)組合。那些本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,本發(fā)明可以在沒(méi)有特定實(shí)施例的一個(gè)或多個(gè)特定功能或優(yōu)點(diǎn)的情況下來(lái)實(shí)現(xiàn)。在其他情況下,在某些實(shí)施例中可以有其他特征和優(yōu)點(diǎn),不一定存在于本發(fā)明的所有實(shí)施例中。
通過(guò)下面的描述和所附的權(quán)利要求,本發(fā)明的這些特征和優(yōu)點(diǎn)將變得顯而易見(jiàn),或者,如下面所描述的,也可以通過(guò)本發(fā)明的實(shí)施例的實(shí)踐來(lái)了解。
為了輕松地理解本發(fā)明的優(yōu)點(diǎn),將通過(guò)參考附圖中顯示的特定實(shí)施例,提供上文簡(jiǎn)要描述的本發(fā)明的比較特定的描述。可以理解這些附圖只描述了本發(fā)明的典型的實(shí)施例,因此,不被視為對(duì)其范圍的限制,將通過(guò)使用附圖并利用額外的專(zhuān)門(mén)描述和細(xì)節(jié)來(lái)說(shuō)明本發(fā)明,在附圖中圖1是說(shuō)明根據(jù)本發(fā)明的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的示意圖;圖2是說(shuō)明根據(jù)本發(fā)明的操作環(huán)境的一個(gè)實(shí)施例的示意圖;圖3是說(shuō)明了根據(jù)本發(fā)明的用于解決計(jì)算資源死鎖的方法的一個(gè)實(shí)施例的示意流程圖;圖4是說(shuō)明了根據(jù)本發(fā)明的用于解決計(jì)算資源死鎖的方法的另一個(gè)實(shí)施例的示意流程圖;以及圖5是描述了根據(jù)本發(fā)明的解決計(jì)算資源死鎖的示例的流程圖。
具體實(shí)施例方式
本說(shuō)明書(shū)中描述的許多功能單元被標(biāo)記為模塊,以便特別強(qiáng)調(diào)它們的實(shí)現(xiàn)方式的獨(dú)立性。例如,模塊可以作為包括自定義VLSI電路或門(mén)陣列、諸如邏輯芯片之類(lèi)的現(xiàn)成半導(dǎo)體、晶體管或其他分離的元件的硬件電路來(lái)實(shí)現(xiàn)。模塊還可以以諸如現(xiàn)場(chǎng)可編程門(mén)陣列、可編程陣列邏輯、可編程邏輯器件之類(lèi)的可編程硬件設(shè)備來(lái)實(shí)現(xiàn)。
模塊還可以以用于供各種處理器來(lái)執(zhí)行的軟件來(lái)實(shí)現(xiàn)。例如,可執(zhí)行代碼的標(biāo)識(shí)的模塊可以包括計(jì)算機(jī)指令的一個(gè)或多個(gè)物理或邏輯塊,指令例如可以作為對(duì)象、過(guò)程、函數(shù)來(lái)組織。盡管如此,標(biāo)識(shí)的模塊的可執(zhí)行程序不必在物理上位于一起,但可以包括存儲(chǔ)在不同位置的不同的指令,當(dāng)這些指令在邏輯上聯(lián)合在一起時(shí),構(gòu)成模塊,并實(shí)現(xiàn)該模塊的指定的用途。
實(shí)際上,可執(zhí)行代碼的模塊可以是單個(gè)指令、或許多指令,甚至可以在多個(gè)不同代碼段、在不同的程序中以及跨多個(gè)存儲(chǔ)設(shè)備地分布。同樣,這里可以在模塊內(nèi)標(biāo)識(shí)和顯示操作數(shù)據(jù),并可以以任何合適的形式來(lái)實(shí)現(xiàn)并在任何合適的數(shù)據(jù)結(jié)構(gòu)類(lèi)型內(nèi)組織。操作數(shù)據(jù)可以作為單個(gè)數(shù)據(jù)集來(lái)收集,也可以在不同的位置上分布,包括在不同的存儲(chǔ)設(shè)備上分布,可以至少部分地,只作為系統(tǒng)或網(wǎng)絡(luò)上的電子信號(hào)存在。
在本說(shuō)明書(shū)中對(duì)“一個(gè)實(shí)施例”或“實(shí)施例”的引用,或類(lèi)似的語(yǔ)言,意味著,涉及實(shí)施例所描述的特定特征、結(jié)構(gòu)或特點(diǎn)包括在本發(fā)明的至少一個(gè)實(shí)施例中。如此,在本說(shuō)明書(shū)中出現(xiàn)的短語(yǔ)“在一個(gè)實(shí)施例中”或“在實(shí)施例中”以及類(lèi)似的語(yǔ)言可以,但不一定都是指同一個(gè)實(shí)施例。
對(duì)信號(hào)承載介質(zhì)的引用可以采用能夠生成信號(hào)、使信號(hào)生成,或使數(shù)字處理設(shè)備上的機(jī)器可讀取的指令的程序執(zhí)行中的任何形式。信號(hào)承載介質(zhì)可以通過(guò)傳輸線路、光盤(pán)、數(shù)字視盤(pán)、磁帶、伯努利驅(qū)動(dòng)器、磁盤(pán)、穿孔卡片、快閃存儲(chǔ)器、集成電路或其他數(shù)字處理設(shè)備存儲(chǔ)設(shè)備來(lái)實(shí)現(xiàn)。
此外,在一個(gè)或多個(gè)實(shí)施例中,所描述的本發(fā)明的特征、結(jié)構(gòu)或特征可以以任何合適的方式來(lái)組合。在下面的描述中,提供了許多具體細(xì)節(jié),如編程、軟件模塊、用戶(hù)選擇、網(wǎng)絡(luò)事務(wù)、數(shù)據(jù)庫(kù)查詢(xún)、數(shù)據(jù)庫(kù)結(jié)構(gòu)、硬件模塊、硬件電路、硬件芯片等等的示例,以提供對(duì)本發(fā)明的實(shí)施例的全面的了解。然而,那些本領(lǐng)域的普通人員將認(rèn)識(shí)到,本發(fā)明可以在沒(méi)有一個(gè)或多個(gè)具體細(xì)節(jié)的情況下來(lái)實(shí)現(xiàn),或利用其他方法、組件、材料等等來(lái)實(shí)現(xiàn)。在其他情況下,沒(méi)有顯示或詳細(xì)描述已知的結(jié)構(gòu)、材料、或操作,以免妨礙對(duì)本發(fā)明的某些方面的理解。
圖1是根據(jù)本發(fā)明的計(jì)算系統(tǒng)100的示意方框圖。所描述的計(jì)算系統(tǒng)100包括主存儲(chǔ)器102、系統(tǒng)總線104、操作系統(tǒng)106、資源108、進(jìn)程110、進(jìn)程監(jiān)視器112、一個(gè)或多個(gè)存儲(chǔ)設(shè)備114、中央處理單元(CPU)116、網(wǎng)絡(luò)接口卡(NIC)118、網(wǎng)絡(luò)119以及計(jì)算機(jī)120。計(jì)算系統(tǒng)100是適合應(yīng)用本發(fā)明的計(jì)算系統(tǒng)的一個(gè)示例。
系統(tǒng)總線104可以在計(jì)算機(jī)120內(nèi)的各個(gè)組件之間提供通信信道。存儲(chǔ)設(shè)備114可以是計(jì)算機(jī)120中的一個(gè)組件。存儲(chǔ)設(shè)備114可以包括各種設(shè)備,如直接訪問(wèn)存儲(chǔ)設(shè)備(DASD)、磁帶驅(qū)動(dòng)器等等。在某些實(shí)施例中,存儲(chǔ)設(shè)備可以是可寫(xiě)入的。
CPU 116可以連接到系統(tǒng)總線104。在一個(gè)實(shí)施例中,CPU對(duì)通過(guò)系統(tǒng)總線104接收到的數(shù)據(jù)進(jìn)行處理,并將數(shù)據(jù)傳輸?shù)街T如主存儲(chǔ)器102之類(lèi)的連接到系統(tǒng)總線104的組件。主存儲(chǔ)器102可以是易失性存儲(chǔ)器。在一個(gè)實(shí)施例中,主存儲(chǔ)器102存儲(chǔ)操作系統(tǒng)106、操作系統(tǒng)資源108、進(jìn)程110以及進(jìn)程監(jiān)視器112。進(jìn)程監(jiān)視器112包括用于解決計(jì)算資源死鎖的模塊。
NIC 118可以通過(guò)系統(tǒng)總線104與計(jì)算機(jī)120進(jìn)行通信。NIC118可以與網(wǎng)絡(luò)119進(jìn)行通信。在一個(gè)實(shí)施例中,NIC 118在系統(tǒng)總線104和網(wǎng)絡(luò)119之間創(chuàng)建了通信鏈路,使得計(jì)算機(jī)120與諸如另一臺(tái)計(jì)算機(jī)120之類(lèi)的同一個(gè)網(wǎng)絡(luò)119上的設(shè)備進(jìn)行通信。計(jì)算機(jī)120可以是服務(wù)器,允許進(jìn)程監(jiān)視器112服務(wù)于網(wǎng)絡(luò)119上的其他計(jì)算機(jī)。
圖2是說(shuō)明根據(jù)本發(fā)明的操作環(huán)境200的示意圖。所描述的操作環(huán)境200包括進(jìn)程監(jiān)視器210、優(yōu)先級(jí)分配模塊220、資源跟蹤模塊230、死鎖檢測(cè)模塊240、死鎖解決模塊250、資源260以及進(jìn)程270。所描述的操作環(huán)境200解決了計(jì)算資源死鎖問(wèn)題。
所描述的進(jìn)程監(jiān)視器210包括解決計(jì)算資源死鎖問(wèn)題所需的模塊。進(jìn)程監(jiān)視器210可以通過(guò)實(shí)用程序來(lái)實(shí)現(xiàn),也可以作為操作系統(tǒng)的服務(wù)來(lái)實(shí)現(xiàn)。優(yōu)先級(jí)分配模塊220可以便于對(duì)進(jìn)程的默認(rèn)優(yōu)先級(jí)級(jí)別的修改。在一個(gè)實(shí)施例中,通過(guò)圖形用戶(hù)界面來(lái)訪問(wèn)優(yōu)先級(jí)分配模塊220。在另一個(gè)實(shí)施例中,通過(guò)命令行界面來(lái)訪問(wèn)優(yōu)先級(jí)分配模塊220。對(duì)優(yōu)先級(jí)分配模塊220的訪問(wèn)可以允許指定一個(gè)進(jìn)程在資源可用時(shí)重新啟動(dòng)。
資源跟蹤模塊230可以生成便于在操作環(huán)境200內(nèi)執(zhí)行一組進(jìn)程270的資源的報(bào)告。報(bào)告可以是當(dāng)前已經(jīng)分配的資源的列表。在一個(gè)實(shí)施例中,報(bào)告可以由操作系統(tǒng)資源爭(zhēng)用服務(wù)來(lái)生成。在優(yōu)選實(shí)施例中,對(duì)報(bào)告進(jìn)行分析,以判斷哪一個(gè)進(jìn)程270正在持有哪一個(gè)資源260。
然后,可以對(duì)進(jìn)程270進(jìn)行掃描,以獲取諸如進(jìn)程標(biāo)識(shí)、優(yōu)先級(jí)級(jí)別、隊(duì)列中的時(shí)間、由它所控制的資源、由它所請(qǐng)求的資源以及由它所請(qǐng)求的當(dāng)前不可用的資源之類(lèi)的信息。資源跟蹤模塊230可以將報(bào)告和進(jìn)程信息提供到死鎖檢測(cè)模塊240。在一個(gè)實(shí)施例中,每隔一定的時(shí)間間隔生成和提供報(bào)告和進(jìn)程信息。在另一個(gè)實(shí)施例中,報(bào)告和進(jìn)程信息可以應(yīng)請(qǐng)求而生成和提供。
死鎖檢測(cè)模塊240可以對(duì)由資源跟蹤模塊230提供的信息進(jìn)行分析,以檢測(cè)進(jìn)程270之中的一個(gè)或多個(gè)死鎖狀態(tài)。例如,當(dāng)報(bào)告指出了一個(gè)進(jìn)程P1正控制著資源R1,并需要另一個(gè)資源R2才能使進(jìn)程完成;而另一個(gè)進(jìn)程P2正控制著R2并需要R1才能使進(jìn)程完成時(shí),可以檢測(cè)到死鎖。由于兩個(gè)進(jìn)程都需要不可用的資源,因此,哪一個(gè)進(jìn)程都無(wú)法完成。同樣,由于哪一個(gè)進(jìn)程都無(wú)法完成,因此,它們當(dāng)前控制著的資源都仍保持不可用。
死鎖檢測(cè)模塊240可以識(shí)別死鎖解決模塊250的被死鎖的進(jìn)程的組。死鎖解決模塊250可以通過(guò)取消該組被死鎖的進(jìn)程中的優(yōu)先級(jí)最低的進(jìn)程來(lái)解決進(jìn)程270之中的死鎖問(wèn)題。在一個(gè)實(shí)施例中,如果該組被死鎖的進(jìn)程具有多個(gè)優(yōu)先級(jí)最低的進(jìn)程,則被選擇予以取消的進(jìn)程具有最多的相關(guān)進(jìn)程。在另一個(gè)實(shí)施例中,如果該組被死鎖的進(jìn)程具有多個(gè)優(yōu)先級(jí)最低的進(jìn)程,則被選擇予以取消的進(jìn)程具有最短等待時(shí)間。
死鎖解決模塊250可以在取消之后重新啟動(dòng)被取消的進(jìn)程。在一個(gè)實(shí)施例中,重新啟動(dòng)的進(jìn)程從取消的點(diǎn)繼續(xù)。在另一個(gè)實(shí)施例中,重新啟動(dòng)的進(jìn)程是從其開(kāi)始處啟動(dòng)的。
操作環(huán)境200的資源260可以包括分配主存儲(chǔ)器以促進(jìn)進(jìn)程270的完成。進(jìn)程270可以是操作環(huán)境200的服務(wù),也可以是用戶(hù)提交的任務(wù)。可以給進(jìn)程270分配促進(jìn)完成所需的優(yōu)先級(jí)級(jí)別和資源260。
隨后的簡(jiǎn)要流程圖一般是作為邏輯流程圖闡述的。如此,所描述的順序和標(biāo)出的步驟表示所呈現(xiàn)的方法的一個(gè)實(shí)施例??梢詷?gòu)想在功能、邏輯或效果上等效于所說(shuō)明的方法的一個(gè)或多個(gè)步驟或其一部分的其他步驟和方法。另外,所使用的格式和符號(hào)只是說(shuō)明該方法的邏輯步驟,不應(yīng)理解為對(duì)該方法的范圍作出限制。雖然可以在流程圖中使用各種箭頭和線條類(lèi)型,但是,它們不應(yīng)被理解為對(duì)對(duì)應(yīng)的方法的范圍作出限制。實(shí)際上,可以使用某些箭頭或其他連接符來(lái)只表示方法的邏輯流程。例如,箭頭可以表示所描述的方法的所列舉的步驟之間的未指定的持續(xù)時(shí)間的等待或監(jiān)視時(shí)間段。另外,執(zhí)行特定方法的順序可以,也可以不嚴(yán)格地遵循所顯示的對(duì)應(yīng)的步驟的順序。
圖3描述了用于解決計(jì)算死鎖的方法300的一個(gè)實(shí)施例。方法300包括跟蹤310與計(jì)算環(huán)境關(guān)聯(lián)的資源,生成320資源報(bào)告,進(jìn)行測(cè)試330以查找一個(gè)或多個(gè)死鎖狀態(tài),并解決340死鎖問(wèn)題。所描述的方法300按優(yōu)先級(jí)處理方式來(lái)促進(jìn)計(jì)算死鎖問(wèn)題的解決。
跟蹤310資源可以包括獲取有關(guān)有助于在操作環(huán)境200內(nèi)執(zhí)行進(jìn)程270的資源的信息。信息可以是當(dāng)前已經(jīng)分配的資源的列表的形式。在一個(gè)實(shí)施例中,跟蹤310資源是由獨(dú)立的實(shí)用程序來(lái)完成的。在另一個(gè)實(shí)施例中,跟蹤310資源是作為操作系統(tǒng)的服務(wù)來(lái)執(zhí)行的。
生成320資源報(bào)告的過(guò)程可以包括將通過(guò)跟蹤310資源獲取的信息分類(lèi)??梢詫?duì)資源信息進(jìn)行分類(lèi),以?xún)?yōu)化判斷死鎖的能力。在一個(gè)實(shí)施例中,信息是從操作系統(tǒng)資源爭(zhēng)用服務(wù)獲取的。在優(yōu)選實(shí)施例中,生成320資源報(bào)告的過(guò)程包括將資源信息拉到順序文件中。生成320資源報(bào)告的過(guò)程可以提供信息,以通過(guò)測(cè)試330死鎖狀態(tài)判斷是否存在一組被死鎖的進(jìn)程。
測(cè)試330死鎖狀態(tài)可以包括對(duì)通過(guò)生成320資源報(bào)告獲得的信息進(jìn)行分析。在一個(gè)實(shí)施例中,將掃描每一個(gè)資源的排它的持有者,以查看它是否正在等待報(bào)告中列出的任何額外的資源。如果持有者正在等待不同的資源,則識(shí)別第二資源的所有者。然后,將第二資源的所有者與第一資源的等待者進(jìn)行比較。如果第二資源的所有者是第一資源的等待者,那么,存在死鎖狀態(tài)。
解決340死鎖過(guò)程可以包括取消選擇的進(jìn)程。在一個(gè)實(shí)施例中,被取消的進(jìn)程是從其開(kāi)始處重新啟動(dòng)的。在另一個(gè)實(shí)施例中,被取消的進(jìn)程是從執(zhí)行的最后一個(gè)命令處重新啟動(dòng)的。此外,在另一個(gè)實(shí)施例中,被取消的進(jìn)程不重新啟動(dòng),而必須重新提交。
圖4描述了用于解決340死鎖的方法400的一個(gè)實(shí)施例。方法400包括判斷410優(yōu)先級(jí)最低的進(jìn)程,判斷415被選擇的進(jìn)程,取消420被選擇的進(jìn)程,并重新啟動(dòng)430被取消的進(jìn)程。所描述的方法400有助于解決計(jì)算死鎖問(wèn)題。
在一個(gè)實(shí)施例中,判斷410優(yōu)先級(jí)最低的進(jìn)程包括對(duì)被檢測(cè)處于死鎖狀態(tài)的進(jìn)程組進(jìn)行掃描。每一個(gè)進(jìn)程的屬性可以是優(yōu)先級(jí)級(jí)別。進(jìn)程的優(yōu)先級(jí)級(jí)別可以是默認(rèn)優(yōu)先級(jí)級(jí)別,也可以是用戶(hù)分配的優(yōu)先級(jí)級(jí)別??梢员容^被判斷處于被死鎖的進(jìn)程組中的所有進(jìn)程的優(yōu)先級(jí)級(jí)別。被選擇予以取消的進(jìn)程可以是帶有最低的優(yōu)先級(jí)級(jí)別的進(jìn)程。
如果有一個(gè)以上的進(jìn)程具有最低的優(yōu)先級(jí)級(jí)別,那么,可以使用用于判斷415選擇的進(jìn)程的輔助標(biāo)準(zhǔn)。在一個(gè)實(shí)施例中,對(duì)優(yōu)先級(jí)級(jí)別最低的進(jìn)程進(jìn)行掃描,以選擇具有最多相關(guān)進(jìn)程(正在等待由另一個(gè)進(jìn)程持有的資源的進(jìn)程)的進(jìn)程。在另一個(gè)實(shí)施例中,對(duì)優(yōu)先級(jí)級(jí)別最低的進(jìn)程進(jìn)行掃描,以選擇具有最短等待時(shí)間的進(jìn)程。
取消420選擇的進(jìn)程可以包括在當(dāng)前指令周期之后結(jié)束進(jìn)程。當(dāng)被死鎖的進(jìn)程組中的被選擇的進(jìn)程正在被取消時(shí),一個(gè)或多個(gè)未選擇的進(jìn)程可以等待被選擇的進(jìn)程的資源釋放。當(dāng)被取消的進(jìn)程的資源已釋放時(shí),未選擇的進(jìn)程可以請(qǐng)求資源供使用。在一個(gè)實(shí)施例中,根據(jù)進(jìn)程的優(yōu)先級(jí)級(jí)別,給它們授予釋放的資源。
隨后,被取消的進(jìn)程可以等待425,直到已經(jīng)釋放的資源可供使用。一旦資源可用,方法可以通過(guò)重新啟動(dòng)430被取消的進(jìn)程繼續(xù)。在一個(gè)實(shí)施例中,被取消的進(jìn)程在它被取消的指令周期中重新啟動(dòng)。在另一個(gè)實(shí)施例中,被取消的進(jìn)程在第一個(gè)指令周期中重新啟動(dòng)。
圖5是描述了解決計(jì)算死鎖的示例500的流程圖。示例500包括第一資源510、第二資源520、第一進(jìn)程530、第二進(jìn)程540以及死鎖解決模塊550。示例500顯示了在解決特定計(jì)算死鎖時(shí)涉及的關(guān)系。
第一資源510和第二資源520可用于完成進(jìn)程。如在示例500的第二步驟中所描述的,第一進(jìn)程530可以獲得第一資源510并請(qǐng)求第二資源520。類(lèi)似地,第二進(jìn)程520可以獲得第二資源520,并請(qǐng)求第一資源510。如所描述的,因?yàn)樵诓皇褂糜善渌M(jìn)程獲得的資源的情況下第一進(jìn)程530和第二進(jìn)程540無(wú)論哪個(gè)進(jìn)程都無(wú)法完成,因此發(fā)生了死鎖。
為解決死鎖,死鎖解決模塊550被配置為取消優(yōu)先級(jí)級(jí)別最低的進(jìn)程。在所描述的方法500中,第二進(jìn)程540被選為優(yōu)先級(jí)最低的進(jìn)程,隨后被取消。在第二資源520不再由第二進(jìn)程540掌握的情況下,第二資源可以分配給第一進(jìn)程530以促進(jìn)完成該進(jìn)程。
在第一進(jìn)程530完成時(shí),死鎖解決模塊550重新啟動(dòng)被取消的第二進(jìn)程540。因此,第一和第二資源510,520促進(jìn)了第一進(jìn)程530的完成,并不再由它持有。因此,第一和第二資源510,520可以分配給第二進(jìn)程540,以促進(jìn)完成該進(jìn)程。在完成第二進(jìn)程540時(shí),第一和第二資源510,520不再被進(jìn)程530和540需要,可以響應(yīng)來(lái)自另一個(gè)進(jìn)程的請(qǐng)求而被分配出去。
在不偏離本發(fā)明的精神和基本特征的情況下,本發(fā)明可以以其他特定形式來(lái)實(shí)現(xiàn)。所描述的實(shí)施例在各個(gè)方面都只作為說(shuō)明性的,而不是限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求而不是由前面的描述指出。在權(quán)利要求的等效內(nèi)的含義和范圍內(nèi)的所有更改都將包括在它們的范圍內(nèi)。
權(quán)利要求
1.一種用于解決計(jì)算資源死鎖的設(shè)備,該設(shè)備包括死鎖檢測(cè)模塊,被配置為在一組正在執(zhí)行的進(jìn)程內(nèi)檢測(cè)一組被死鎖的進(jìn)程;以及死鎖解決模塊,被配置為取消該組被死鎖的進(jìn)程中的優(yōu)先級(jí)最低的進(jìn)程。
2.根據(jù)權(quán)利要求1所述的設(shè)備,進(jìn)一步包括被配置為允許用戶(hù)向進(jìn)程分配優(yōu)先級(jí)級(jí)別的優(yōu)先級(jí)分配模塊。
3.根據(jù)權(quán)利要求1所述的設(shè)備,進(jìn)一步包括被配置為為該組正在執(zhí)行的進(jìn)程生成被請(qǐng)求資源報(bào)告的資源跟蹤模塊。
4.根據(jù)權(quán)利要求3所述的設(shè)備,其中,資源跟蹤模塊是操作系統(tǒng)的一部分。
5.根據(jù)權(quán)利要求1所述的設(shè)備,其中,死鎖檢測(cè)模塊被進(jìn)一步配置為通過(guò)處理被請(qǐng)求資源報(bào)告來(lái)檢測(cè)該組被死鎖的進(jìn)程。
6.根據(jù)權(quán)利要求1所述的設(shè)備,其中,死鎖解決模塊被進(jìn)一步配置為,如果多個(gè)進(jìn)程具有最低的優(yōu)先級(jí)則取消選擇的進(jìn)程。
7.根據(jù)權(quán)利要求1所述的設(shè)備,其中,所述選擇的進(jìn)程是具有最多相關(guān)進(jìn)程的進(jìn)程。
8.根據(jù)權(quán)利要求1所述的設(shè)備,其中,所述選擇的進(jìn)程是具有最短等待時(shí)間的進(jìn)程。
9.一種用于解決計(jì)算資源死鎖的系統(tǒng),該系統(tǒng)包括被配置為分配資源以方便請(qǐng)求的操作系統(tǒng);進(jìn)程監(jiān)視器,被配置為在一組正在執(zhí)行的進(jìn)程內(nèi)檢測(cè)一組被死鎖的進(jìn)程;以及進(jìn)程監(jiān)視器被進(jìn)一步配置為取消該組被死鎖的進(jìn)程中的優(yōu)先級(jí)最低的進(jìn)程。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),進(jìn)一步包括存儲(chǔ)子系統(tǒng)。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),進(jìn)一步包括被配置為允許用戶(hù)向進(jìn)程分配優(yōu)先級(jí)級(jí)別的優(yōu)先級(jí)分配模塊。
12.根據(jù)權(quán)利要求9所述的系統(tǒng),進(jìn)一步包括被配置為為該組正在執(zhí)行的進(jìn)程生成被請(qǐng)求資源報(bào)告的資源跟蹤模塊。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,資源跟蹤模塊是操作系統(tǒng)的一部分。
14.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,死鎖檢測(cè)模塊被進(jìn)一步配置為通過(guò)處理被請(qǐng)求資源報(bào)告來(lái)檢測(cè)該組被死鎖的進(jìn)程。
15.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,死鎖解決模塊被進(jìn)一步配置為,如果多個(gè)進(jìn)程具有最低的優(yōu)先級(jí)則取消選擇的進(jìn)程。
16.一種用于解決計(jì)算資源死鎖的方法,包括在一組正在執(zhí)行的進(jìn)程內(nèi)檢測(cè)一組被死鎖的進(jìn)程;以及取消該組被死鎖的進(jìn)程中的優(yōu)先級(jí)最低的進(jìn)程。
全文摘要
公開(kāi)了用于解決計(jì)算資源死鎖的設(shè)備、系統(tǒng)和方法。在一個(gè)實(shí)施例中,本發(fā)明包括在一組正在執(zhí)行的進(jìn)程內(nèi)檢測(cè)一組被死鎖的進(jìn)程,取消該組被死鎖的進(jìn)程中的優(yōu)先級(jí)最低的進(jìn)程,為該組正在執(zhí)行的進(jìn)程生成被請(qǐng)求資源報(bào)告,以及允許用戶(hù)向進(jìn)程分配優(yōu)先級(jí)級(jí)別。在一個(gè)實(shí)施例中,解決計(jì)算資源死鎖將通過(guò)使用由操作系統(tǒng)已經(jīng)生成的有關(guān)已經(jīng)分配的資源的詳細(xì)信息有效地檢測(cè)死鎖。通過(guò)對(duì)資源報(bào)告進(jìn)行分析,以獲得有關(guān)正在執(zhí)行的進(jìn)程的信息,可以輕松地確定和修補(bǔ)死鎖。解決計(jì)算資源死鎖可以通過(guò)實(shí)用程序來(lái)實(shí)現(xiàn),它也可以作為操作系統(tǒng)的服務(wù)來(lái)運(yùn)行。
文檔編號(hào)G06F9/46GK101046756SQ20071008467
公開(kāi)日2007年10月3日 申請(qǐng)日期2007年3月1日 優(yōu)先權(quán)日2006年3月31日
發(fā)明者戴維·C.·雷德, 菲利普·R.·喬威特, 邁克爾·R.·斯科特, 馬克斯·D.·史密斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司