亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

管理計(jì)算環(huán)境線程池以避免死鎖情況的方法、系統(tǒng)和程序產(chǎn)品的制作方法

文檔序號(hào):6349151閱讀:408來(lái)源:國(guó)知局
專利名稱:管理計(jì)算環(huán)境線程池以避免死鎖情況的方法、系統(tǒng)和程序產(chǎn)品的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般論及計(jì)算環(huán)境的處理請(qǐng)求,特別是,論及保證線程池可用于處理這些請(qǐng)求以避免出現(xiàn)死鎖情況。
在各種計(jì)算環(huán)境中,請(qǐng)求者(例如,客戶)請(qǐng)求將前一個(gè)請(qǐng)求者的資源控制權(quán)交出后才能滿足它對(duì)該資源的請(qǐng)求。這樣一種計(jì)算環(huán)境就是國(guó)際商業(yè)機(jī)器公司(IBM公司)提供的分布文件系統(tǒng)(DFS)。
DFS產(chǎn)品支持服務(wù)器信息塊(SMB)客戶,該產(chǎn)品例如由IBM的OS/390操作系統(tǒng)用來(lái)提供文件服務(wù)協(xié)議。DFS和特別是SMB(又叫因特網(wǎng)通用文件系統(tǒng)(CIFS)),可以讓客戶通過(guò)叫作機(jī)會(huì)鎖(oplock)的一種鎖定方式高速緩存數(shù)據(jù)。在文件打開(kāi)SMB請(qǐng)求上請(qǐng)求機(jī)會(huì)鎖該服務(wù)器根據(jù)其他客戶是否同時(shí)讓該文件打開(kāi)而授與機(jī)會(huì)鎖。如果某客戶有機(jī)會(huì)鎖,那末該客戶可以高速緩存文件數(shù)據(jù)和/或該文件的字節(jié)范圍鎖請(qǐng)求并能執(zhí)行先讀后寫(xiě)優(yōu)化。
當(dāng)另一個(gè)客戶企圖打開(kāi)該文件時(shí)或當(dāng)另一個(gè)客戶請(qǐng)求執(zhí)行可能更改該文件的操作--諸如重新命名或刪除時(shí),該服務(wù)器就破壞機(jī)會(huì)鎖。在這些情況下,該服務(wù)器向該客戶發(fā)送一個(gè)收回信號(hào)(叫作機(jī)會(huì)鎖破壞)告訴該客戶它丟失了它的機(jī)會(huì)鎖。該客戶通過(guò)鎖定X的SMB(locking X SMB)用文件關(guān)閉SMB或機(jī)會(huì)鎖破壞通知來(lái)響應(yīng)之。然而,如果該客戶有臟的數(shù)據(jù)或高速緩存的字節(jié)范圍鎖,則可以沖洗該數(shù)據(jù)并獲得字節(jié)范圍鎖然后才關(guān)閉該文件或通過(guò)鎖定X的SMB送出破壞通知。讓強(qiáng)迫該服務(wù)器破壞其他客戶的機(jī)會(huì)鎖的客戶請(qǐng)求等待來(lái)自保有機(jī)會(huì)鎖的原始客戶的機(jī)會(huì)鎖通知或文件關(guān)閉。
由于任何客戶請(qǐng)求都可以等待一個(gè)或多個(gè)客戶的回答和響應(yīng)信號(hào),因此必定有適于處理保有該機(jī)會(huì)鎖的客戶的回答響應(yīng)信號(hào)的處理線程,否則會(huì)發(fā)生死鎖。一個(gè)線程池(不管其大小如何)不能解決此問(wèn)題。例如,假定客戶A當(dāng)前有對(duì)資源X(例如,文件)一種保有權(quán)(例如,機(jī)會(huì)鎖或令牌)且正在更新資源X。然后,客戶B請(qǐng)求該資源。即便客戶A還沒(méi)有更新資源X,服務(wù)器也破壞資源X的機(jī)會(huì)鎖。最終,客戶A對(duì)該回答信號(hào)發(fā)送響應(yīng);可是,線程池中可能沒(méi)有能處理該響應(yīng)的線程,因?yàn)樗械木€程都已經(jīng)在處理正等待客戶A的回叫響應(yīng)信號(hào)的客戶請(qǐng)求。
為了試圖避免出現(xiàn)上面的死鎖情況,至少采用過(guò)兩種辦法。一種叫單一池辦法。單一池辦法是,當(dāng)某線程要等待機(jī)會(huì)鎖的響應(yīng)時(shí),不是鎖定該線程而是使該線程適于處理其他的請(qǐng)求。然后,將正在進(jìn)行的操作狀態(tài)存起來(lái)并使該線程適于處理另一個(gè)請(qǐng)求,包括機(jī)會(huì)鎖破壞響應(yīng)。因此,對(duì)此法的請(qǐng)求是,必須維護(hù)好每個(gè)操作的狀態(tài)。再者,要使該線程再次適于處理,請(qǐng)求在發(fā)現(xiàn)需要機(jī)會(huì)鎖破壞的位置被調(diào)用的每個(gè)程序,必須準(zhǔn)備接受來(lái)自其調(diào)用者的一個(gè)特殊的返回碼,看看是否該操作已完成或由于出現(xiàn)機(jī)會(huì)鎖破壞的響應(yīng)而只是處于進(jìn)行中,而每個(gè)程序都必須返回到它的調(diào)用者那里以便瓦解線程上的程序堆棧以作它用。
這種辦法增加了處理各個(gè)SMBs代碼的復(fù)雜性,也增加了已升高的通路的長(zhǎng)度,因?yàn)樵撏分械脑S多程序都得更新?tīng)顟B(tài)塊,還要在被調(diào)用程序返回時(shí)進(jìn)行檢查,以確定該請(qǐng)求被處理了還是在排隊(duì)等候機(jī)會(huì)鎖破壞響應(yīng)。因此認(rèn)為此法是昂貴的且使系統(tǒng)性能下降。
另一種是雙重池辦法。此法用主要線程池處置客戶的任何請(qǐng)求。而次要線程池只處置不可能阻礙等待獲得保有某個(gè)資源的請(qǐng)求。因此,次要池處置保證不等待資源的請(qǐng)求,諸如存儲(chǔ)返回?cái)?shù)據(jù)或釋放資源等的請(qǐng)求。對(duì)這種辦法,客戶在請(qǐng)求上指出它是否符合次要池的條件。因此,客戶軟件的責(zé)任是提供一個(gè)指示,表示該服務(wù)器要用什么樣的線程池并在該請(qǐng)求本身中提供該指示。
雙重線程池方案避免了死鎖情況,執(zhí)行起來(lái)又不貴或不會(huì)出現(xiàn)單一池方案的性能下降現(xiàn)象??墒?,雙重線程池辦法的問(wèn)題是請(qǐng)求客戶軟件對(duì)各個(gè)請(qǐng)求都要示出哪些線程池符合該服務(wù)器的使用條件。因此,需要特殊的客戶軟件,而這又會(huì)導(dǎo)致客戶額外的管理費(fèi)用。
基于前述,還需要一種防死鎖的辦法,它要比以前的辦法更有效、更簡(jiǎn)單、更便宜,且不需要客戶的額外或特殊軟件。還需要一種能動(dòng)態(tài)分配線程池的辦法。
通過(guò)提供管理計(jì)算環(huán)境線程池的方法克服了以前技術(shù)的缺點(diǎn)并提供了額外的優(yōu)點(diǎn)。在一個(gè)實(shí)施方案中,該方法包括接收計(jì)算環(huán)境的第一請(qǐng)求者的待處理的請(qǐng)求,其中該請(qǐng)求等待著計(jì)算環(huán)境的第二請(qǐng)求者的響應(yīng),且其中該響應(yīng)要由選自由一個(gè)或多個(gè)合格的線程池組成的線程池組的一個(gè)線程池來(lái)服務(wù);該方法還包括動(dòng)態(tài)地更改由一個(gè)或多個(gè)合格的線程池構(gòu)成的這組線程池以提供更改過(guò)的,由一個(gè)或多個(gè)合格的線程池構(gòu)成的一組線程池,其中更改過(guò)的線程池組的某個(gè)線程池要服務(wù)該請(qǐng)求。
在一個(gè)舉例中,當(dāng)確定該請(qǐng)求正在等待響應(yīng)時(shí),就開(kāi)始動(dòng)態(tài)更改。
在另一個(gè)舉例中,第一請(qǐng)求者和第二請(qǐng)求者是同一個(gè)請(qǐng)求者。而在再一個(gè)舉例中,第一請(qǐng)求者和第二請(qǐng)求者是不同的請(qǐng)求者。
本發(fā)明的進(jìn)一步情況是,該響應(yīng)向該線程池的某個(gè)線程發(fā)出。此外,該方法包括確定該線程池是否適合于該發(fā)出的響應(yīng),而當(dāng)該線程池不適合時(shí),將該響應(yīng)重發(fā)到另一個(gè)線程池上。
在再一個(gè)實(shí)施方案中,此方法包括動(dòng)態(tài)重新更改已更改過(guò)的線程池組以服務(wù)一個(gè)或多個(gè)其他的響應(yīng)或一個(gè)或多個(gè)其他的請(qǐng)求。
本發(fā)明的再一個(gè)情況是,提供了一種管理計(jì)算環(huán)境中線程池的方法。該方法包括,例如,動(dòng)態(tài)確定要用多個(gè)線程池的哪個(gè)線程池來(lái)處理請(qǐng)求;并用該線程池的某個(gè)線程來(lái)處理該請(qǐng)求。
相應(yīng)于上面概述方法的系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品在這里也作了描述并作了申明。
本發(fā)明順便還提供一種線程池管理功能,以保證避免當(dāng)客戶等待一個(gè)或多個(gè)其他客戶或同一客戶發(fā)出響應(yīng)時(shí)出現(xiàn)死鎖情況。這種功能不會(huì)使開(kāi)發(fā)費(fèi)用上漲或遭受單一池解決方案的性能下降,也不請(qǐng)求以前的雙重池解決辦法的特殊客戶軟件。
通過(guò)本發(fā)明的技術(shù)還實(shí)現(xiàn)了額外的特性和優(yōu)點(diǎn)。這里還詳細(xì)描述了該發(fā)明的其他實(shí)施方案和情況,它們被視為是該發(fā)明權(quán)利要求的組成部分。
在本說(shuō)明書(shū)結(jié)尾的權(quán)利要求中特別指出并明確申明了該發(fā)明的主題。從下面的詳細(xì)說(shuō)明以及附圖中可以明顯地看到該發(fā)明的前述和其他目的、特性和優(yōu)點(diǎn),其中

圖1描繪了包含并使用本發(fā)明的功能的計(jì)算環(huán)境的一個(gè)例子;圖2描繪了按照本發(fā)明的原理的圖1的一個(gè)計(jì)算部件的各種元件的更詳細(xì)實(shí)施方案;
圖3a描繪了按照本發(fā)明的原理所用的一個(gè)主要池的一個(gè)舉例;圖3b描繪了按照本發(fā)明的原理所用的次要池的一個(gè)實(shí)施方案;圖4a描繪了按照本發(fā)明的原理與建立客戶會(huì)話有關(guān)的邏輯的一個(gè)實(shí)施方案;圖4b描繪了按照本發(fā)明的原理與接收請(qǐng)求有關(guān)的邏輯的一個(gè)實(shí)施方案;圖4c-4d描繪了按照本發(fā)明的原理與處理請(qǐng)求有關(guān)的邏輯的一個(gè)實(shí)施方案;圖5描繪了按照本發(fā)明的原理與客戶相關(guān)的會(huì)話數(shù)據(jù)結(jié)構(gòu)的一個(gè)依照本發(fā)明的一種情況是,動(dòng)態(tài)確定和/或更改以適合于服務(wù)未解決的請(qǐng)求的那組線程池。這組池可以確定和/或更改而不取消未解決的請(qǐng)求且不需要額外發(fā)送請(qǐng)求。舉例說(shuō),該功能用來(lái)避免當(dāng),例如,一個(gè)客戶的請(qǐng)求要到收到了一個(gè)或多個(gè)其他客戶(或同一客戶)的響應(yīng)(例如,回答響應(yīng))才能處理時(shí),出現(xiàn)死鎖現(xiàn)象。這里所用的客戶一詞例如至少包括,本地客戶、遠(yuǎn)地客戶和/或本地用戶。
參照?qǐng)D1,描述包含并使用本發(fā)明功能的計(jì)算環(huán)境的一個(gè)實(shí)施方案。計(jì)算環(huán)境100包括,例如,至少一個(gè)連接到一個(gè)或多個(gè)其他的計(jì)算部件104的計(jì)算部件102。在一個(gè)例子里,計(jì)算部件102是服務(wù)器而計(jì)算部件104是客戶。每個(gè)部件包括,例如,一個(gè)或多個(gè)中央計(jì)算部件、存儲(chǔ)器和一個(gè)或多個(gè)入/出設(shè)備,這是本領(lǐng)域的人眾所周知的。
計(jì)算部件102基于,例如,IBM公司提供的企業(yè)系統(tǒng)體系結(jié)構(gòu)(ESA)/390。ESA/390在IBM的出版物題為“企業(yè)系統(tǒng)體系結(jié)構(gòu)/390的操作原理”中有描述(IBM出版物號(hào)為SA22-7201-04,1997.6),這里全文引用以作參考?;贓SA/390的計(jì)算部件一個(gè)例子是IBM公司提供的9672并行企業(yè)服務(wù)器。
一個(gè)或多個(gè)計(jì)算部件104是個(gè)人計(jì)算機(jī)。作為一個(gè)例子,計(jì)算部件104是一臺(tái)執(zhí)行Microsoft WindowS的個(gè)人計(jì)算機(jī),它在Intel PC體系結(jié)構(gòu)上運(yùn)行。
計(jì)算部件102通過(guò)標(biāo)準(zhǔn)連接,諸如任何種類(lèi)的導(dǎo)線連接、令牌環(huán)或網(wǎng)絡(luò)連接(僅舉幾例),與一個(gè)或多個(gè)計(jì)算部件104聯(lián)接。通過(guò)一種或多種這些連接方式使用的一個(gè)通信協(xié)議是TCP/IP。
僅作為舉例提供上述計(jì)算環(huán)境和/或計(jì)算部件。本發(fā)明可納入并用于許多種計(jì)算部件、計(jì)算機(jī)、處理機(jī)、節(jié)點(diǎn)、系統(tǒng)、工作站和/或環(huán)境而不離開(kāi)本發(fā)明的精神。例如,可將一個(gè)或多個(gè)部件基于Unix系統(tǒng)結(jié)構(gòu)或可包括Intel PC結(jié)構(gòu)。另外,這里描述的有些實(shí)施方案是就服務(wù)器和客戶,尤其是就文件服務(wù)器和客戶進(jìn)行討論的,這些實(shí)施方案僅是舉例。其他類(lèi)型的信息接收者和請(qǐng)求者、其他類(lèi)型的服務(wù)器和其他類(lèi)型的計(jì)算環(huán)境可從本發(fā)明獲得益處,因此被認(rèn)為是本發(fā)明的組成部分。
另外,客戶不一定離服務(wù)器很遠(yuǎn)。該發(fā)明同樣適用于在同一物理計(jì)算機(jī)、不同的物理計(jì)算機(jī)或相同物理計(jì)算機(jī)和不同物理計(jì)算機(jī)的任意組合上運(yùn)行的客戶和服務(wù)器。
參照?qǐng)D2描述計(jì)算部件102的進(jìn)一步細(xì)節(jié)。如一個(gè)例子那樣,計(jì)算部件102包括操作系統(tǒng)202,諸如IBM公司提供的OS/390或MVS操作系統(tǒng)。在該操作系統(tǒng)上運(yùn)行的是,例如,文件服務(wù)器204。文件服務(wù)器204包括多層,諸如,舉例,SMB分析程序(SMB parser)層206、網(wǎng)絡(luò)基本輸入輸出系統(tǒng)(Net bios)層208和異步套接I/O層210。
SMB分析程序?qū)?06是主SMB處理層,它知道與客戶有關(guān)的環(huán)境狀態(tài)(例如,什么文件是打開(kāi)的、什么回叫在進(jìn)行中等等)。當(dāng)調(diào)用該層時(shí),客戶會(huì)話處在停止?fàn)顟B(tài)。因此處在該狀態(tài)時(shí)不再?gòu)脑摽蛻裟抢锝邮照?qǐng)求。執(zhí)行了某些初步的處理后,最低的各SMB層調(diào)用網(wǎng)絡(luò)基本輸入輸出系統(tǒng)以重新允許該會(huì)話。
網(wǎng)絡(luò)基本輸入輸出系統(tǒng)層208負(fù)責(zé)維持服務(wù)器和客戶間的通信。它是SMB分析程序?qū)雍彤惒教捉訉娱g的一個(gè)管道。網(wǎng)絡(luò)基本輸入輸出系統(tǒng)以SMB分析程序的名義調(diào)度異步接收請(qǐng)求(下面描述)。例如,將SMB包裝在網(wǎng)絡(luò)基本輸入輸出系統(tǒng)包中,網(wǎng)絡(luò)基本輸入輸出系統(tǒng)代表SMB分析程序?qū)舆M(jìn)行異步套接調(diào)用,執(zhí)行該工作。
異步套接I/O層210提供低級(jí)的套接通信,這些通信維護(hù)用于處理客戶請(qǐng)求的線程池。在一個(gè)例子里,異步套接層用POSIX(計(jì)算機(jī)環(huán)境的便攜式操作系統(tǒng)接口)異步IO接口來(lái)處理通訊。
每一層都知道有多個(gè)線程池要管理。如一個(gè)例子那樣,多個(gè)線程池包括一個(gè)主要線程池300(圖3a)和一個(gè)次要線程池302(圖3b)。每個(gè)線程池包括零個(gè)或多個(gè)可用的線程304,可由服務(wù)器用于處理一個(gè)進(jìn)入的客戶請(qǐng)求。在一個(gè)例子里,可用的線程按后入/先出(LIFO)順序存儲(chǔ)。(在另一種實(shí)施方案里,可以有多個(gè)主要池和/或多個(gè)次要池)。
當(dāng)客戶向服務(wù)器發(fā)出一個(gè)要作處理的請(qǐng)求時(shí),該服務(wù)器從選定的線程池那里獲取可用的線程以便處理該請(qǐng)求。該選定的池是從一組合格的線程池選出的;依照本發(fā)明的一種情況,這組線程池要?jiǎng)討B(tài)地管理,以免出現(xiàn)死鎖情況,如下面所述。
用于處理客戶請(qǐng)求的邏輯的一種實(shí)施方案參照?qǐng)D4a-4d描述。具體地說(shuō),圖4a描繪了用于建立客戶會(huì)話的邏輯的一個(gè)實(shí)施方案;圖4b則描繪了用于安排該請(qǐng)求的邏輯的一個(gè)實(shí)施方案;圖4c-4d描繪了用于處理該請(qǐng)求的邏輯的一個(gè)實(shí)施方案。
客戶與服務(wù)器通信之前要建立客戶會(huì)話,如參照?qǐng)D4a所描述的那樣。開(kāi)初,操作系統(tǒng)通知文件服務(wù)器,說(shuō)已經(jīng)在一個(gè)線程池上,諸如主要線程池上(分派了一個(gè)新的客戶機(jī)會(huì)話,此為步驟400)(圖4a)。
此后,建立新的客戶會(huì)話(步驟402)。詳細(xì)地說(shuō),每個(gè)客戶會(huì)話都由一個(gè)會(huì)話數(shù)據(jù)結(jié)構(gòu)表示,用以存儲(chǔ)與該特定客戶會(huì)話有關(guān)的信息。在一個(gè)例子中,會(huì)話結(jié)構(gòu)500(圖5)包括一個(gè)機(jī)會(huì)鎖數(shù)(OPCOUNT),表示客戶的未解決的機(jī)會(huì)鎖數(shù)。該信息例如被用來(lái)確定要用來(lái)處理請(qǐng)求的那組合格的池。例如,如果機(jī)會(huì)鎖數(shù)是零,那末這組池只包括主要的池??墒?,該數(shù)大于零時(shí),表示至少還要用一個(gè)其他的池(例如,次要的池)來(lái)處理客戶的請(qǐng)求。該會(huì)話結(jié)構(gòu)還包括用于串行化的鎖,如下面的描述。
回到圖4a,建立了客戶會(huì)話后,就發(fā)出一個(gè)異步接收(a-sync-recv)功能,以便可以通知何時(shí)客戶的請(qǐng)求到達(dá)該服務(wù)器,(步驟404)。在一個(gè)例子中,是網(wǎng)絡(luò)基本輸入輸出系統(tǒng)異步安排該請(qǐng)求接收該數(shù)據(jù)的。‘異步接收調(diào)用’包括池掩碼,它指示允許用來(lái)在其上分派工作的池。在一個(gè)例子里,該池掩碼是用設(shè)置池掩碼(set poolmask)功能動(dòng)態(tài)設(shè)定的(即沒(méi)有人工干預(yù)和/或沒(méi)有使用客戶代碼),下面將作更詳細(xì)描述。由于該池掩碼是在客戶會(huì)話的開(kāi)始時(shí)設(shè)置的,所以開(kāi)始池掩碼置成一個(gè)池(例如,主要池)。因此,當(dāng)相關(guān)的客戶送入下一個(gè)數(shù)據(jù)請(qǐng)求時(shí),能用異步接收功能有效地指定允許使用的線程池。
在一個(gè)實(shí)施方案里,異步請(qǐng)求由一個(gè)請(qǐng)求數(shù)據(jù)結(jié)構(gòu)表示,它包括與該請(qǐng)求有關(guān)的信息。在一個(gè)例子里,請(qǐng)求數(shù)據(jù)結(jié)構(gòu)600(圖6)包括有資格服務(wù)該請(qǐng)求的線程池的掩碼。例如,該掩碼包括對(duì)應(yīng)每個(gè)可能的池的位。如果該池有資格進(jìn)行處理,則確定該位。而如果該池?zé)o資格進(jìn)行處理,則撤消該位。
在請(qǐng)求隊(duì)列602中可以有一個(gè)或多個(gè)請(qǐng)求排隊(duì),隊(duì)列中包括到達(dá)該服務(wù)器未能連接到服務(wù)線程中的任何客戶請(qǐng)求,(這里描述的請(qǐng)求的結(jié)構(gòu)及其他數(shù)據(jù)結(jié)構(gòu)由主鎖保護(hù))。
現(xiàn)在請(qǐng)參照?qǐng)D4b,當(dāng)該服務(wù)器收到了客戶的請(qǐng)求(又叫作SMB請(qǐng)求或數(shù)據(jù))時(shí)(步驟406),操作系統(tǒng)調(diào)度服務(wù)請(qǐng)求塊(SRB),它運(yùn)行SRB代碼以便將該請(qǐng)求分派給合格池中的可用線程(由請(qǐng)求中的池掩碼確定)(步驟408)。此時(shí)該SRB代碼不作許多的處理,因?yàn)橹坏竭_(dá)了頭部部分。例如,它不檢查它是什么的SMB。然而,它完全知道這組合格的池。因此,它檢查合格的池(順序地,如一個(gè)例子那樣),將該請(qǐng)求發(fā)送給合格池的可用服務(wù)線程,如果所有線程都忙的話,則將該請(qǐng)求放到一個(gè)總的隊(duì)列(例如,請(qǐng)求隊(duì)列)上。
關(guān)于SRB邏輯的一個(gè)實(shí)施方案的進(jìn)一步詳細(xì)情況,參照?qǐng)D7作描述。SRB邏輯接收請(qǐng)求塊的地址作為輸入,它含有關(guān)于該請(qǐng)求的相關(guān)信息,包括池掩碼。
開(kāi)初,獲得該請(qǐng)求隊(duì)列的主鎖(步驟700)。該鎖允許查詢池掩碼中的信息而不用擔(dān)心該信息會(huì)同時(shí)被更改(步驟700)。然后,選取池掩碼的合格池并查找可用的服務(wù)線程(步驟702)。在一個(gè)例子中,基于池順序選擇要檢查的池。例如,首先檢查主要池,然后,必要時(shí)檢查次要池(或其他池)。這樣就降低了請(qǐng)求在次要池上處理的可能性因而就降低了需要重新分派(下面描述)的可能性。
如果確定了一個(gè)可用的服務(wù)線程(詢問(wèn)704),那末該服務(wù)線程就從該池卸下(步驟706),并將該請(qǐng)求的狀態(tài)置成“已分派”,步驟708。該狀態(tài)表示該請(qǐng)求已給了一個(gè)服務(wù)線程。與請(qǐng)求有關(guān)的其他狀態(tài)包括“新的”,表示在某個(gè)未確定的時(shí)間將該請(qǐng)求送給了系統(tǒng)(當(dāng)數(shù)據(jù)可用時(shí)將調(diào)度SRB);“排隊(duì)的”,表示該請(qǐng)求在請(qǐng)求隊(duì)列上;“完成的”,表示該請(qǐng)求已成功地完成,“失敗的”,表示該請(qǐng)求失敗了;“取消的”,表示該請(qǐng)求已被取消。
如果沒(méi)有可用的服務(wù)線程(詢問(wèn)704),則將該請(qǐng)求加到請(qǐng)求隊(duì)列上,步驟710并將該請(qǐng)求的狀態(tài)置成“排隊(duì)的”,(步驟712)。
分派或排隊(duì)該請(qǐng)求后,釋放該請(qǐng)求隊(duì)列的主鎖(步驟714)。隨后,確定是否在步驟706中從該池取出服務(wù)線程(步驟716)。如果是,則執(zhí)行投寄(POST)處理以便向可用的服務(wù)線程分派處理機(jī)上的該請(qǐng)求,步驟718。然后一一或者如果沒(méi)有選取服務(wù)線程,就結(jié)束SRB的處理。
假定該請(qǐng)求的狀態(tài)被SRB代碼置成“已分派的”,則調(diào)度該服務(wù)請(qǐng)求塊之后,處理該請(qǐng)求。該處理的一個(gè)例子參照?qǐng)D4c-4d描述。
此時(shí),該請(qǐng)求在服務(wù)線程上運(yùn)行而該服務(wù)線程知道其池號(hào)。因此,SMB分析程序通過(guò)例如網(wǎng)絡(luò)基本輸入輸出系統(tǒng)被調(diào)用,后者將池號(hào)傳送給SMB分析程序,步驟410(圖4c)。SMB分析程序執(zhí)行某種初步的SMB處理,步驟412,并發(fā)出另一個(gè)異步接收功能以便可以通知下一個(gè)請(qǐng)求,步驟414。
另外,對(duì)在服務(wù)線程上運(yùn)行的該請(qǐng)求的處理繼續(xù)進(jìn)行。開(kāi)始時(shí),鎖住與發(fā)出該請(qǐng)求的客戶有關(guān)的會(huì)話,步驟416,并確定是否該請(qǐng)求是一個(gè)回叫響應(yīng),詢問(wèn)418。若該請(qǐng)求是一個(gè)回叫響應(yīng),則將機(jī)會(huì)鎖數(shù)(OPCOUNT)減1,步驟420,并進(jìn)一步確定該機(jī)會(huì)鎖數(shù)(OPCOUNT)是否等于零,詢問(wèn)422。如果該機(jī)會(huì)鎖數(shù)(OPCOUNT)是零,表示不需要進(jìn)一步的回叫響應(yīng),那末調(diào)用設(shè)置池掩碼(set pool mask)將合格的線程池置成主要池,如一個(gè)例子,步驟424。此后,釋放該會(huì)話,步驟426。
返回到詢問(wèn)418,如果該請(qǐng)求不是一個(gè)回叫響應(yīng)或者如果該機(jī)會(huì)鎖數(shù)不等于零(詢問(wèn)422),那末,這時(shí),不調(diào)用設(shè)置池掩碼且解鎖該會(huì)話,步驟426。
會(huì)話解鎖后,要確定與服務(wù)該請(qǐng)求的線程有關(guān)的池是否合法,詢問(wèn)428(圖4d)。尤其,在一個(gè)例子中,每當(dāng)進(jìn)來(lái)一個(gè)新的SMB時(shí),該處理線程的池號(hào)都要從異步套接處傳到SMB分析程序,并例如由SMB分析程序的低層檢驗(yàn)確定該運(yùn)行線程的池是否合法。在一個(gè)例子中,SMB分析程序檢查SMB是不是一個(gè)對(duì)持有機(jī)會(huì)鎖的文件的請(qǐng)求(即,它是不是一個(gè)回答響應(yīng))。如果SMB是要進(jìn)行針對(duì)有機(jī)會(huì)鎖的文件的操作,那末它除了可在主池上運(yùn)行外還可在次要池上運(yùn)行(它不會(huì)堵因?yàn)樗呀?jīng)有了機(jī)會(huì)鎖)。在一個(gè)例子里,任何其他的SMB請(qǐng)求或?qū)](méi)有機(jī)會(huì)鎖的文件的請(qǐng)求都只能在主池上運(yùn)行。
因此,如果該池合法,詢問(wèn)428,那末SMB就在該線程上處理,步驟430。此后,例如由SMB分析程序?qū)哟_定是否需要對(duì)一個(gè)或多個(gè)客戶(或同一客戶)作出回叫以獲得該處理請(qǐng)求希望的或需要的信息。換句話說(shuō),該請(qǐng)求是否將等待一個(gè)或多個(gè)回叫響應(yīng),詢問(wèn)432。
如果不需要回叫,那末該請(qǐng)求就直接處理以便在以前選取的線程上結(jié)束(即,成功結(jié)束、失敗、取消)并向提出請(qǐng)求的客戶送去一個(gè)回答,步驟434。隨后,檢查該請(qǐng)求隊(duì)列看看其他的請(qǐng)求是否適于處理,步驟436。
然而,如果需要對(duì)一個(gè)或多個(gè)其他的客戶(或同一客戶)回叫,那末鎖住與接收該回答的一個(gè)客戶有關(guān)的會(huì)話,步驟438,并增加機(jī)會(huì)鎖數(shù)(OPCOUNT),表示一個(gè)未回答的響應(yīng),步驟440。此外,還要確定是否當(dāng)前的池掩碼(在請(qǐng)求塊中表示)正確,詢問(wèn)442。即,還要確定該池掩碼是否反映了主要的和次要的線程池兩者都符合使用條件。
如果池掩碼已經(jīng)表示,主要的和次要的線程池兩者都符合使用條件,那末不需要調(diào)用設(shè)置池掩碼的功能。然而,如果該池掩碼不正確,那末執(zhí)行設(shè)置池掩碼的功能以便能動(dòng)態(tài)更改符合條件的線程池組以使該客戶收到該回叫并送出該回叫響應(yīng),步驟444。尤其,要發(fā)出設(shè)置池掩碼的功能,以便讓多個(gè)池中的一個(gè),處理后面的請(qǐng)求(例如,回叫響應(yīng))。
該設(shè)置池掩碼的功能可動(dòng)態(tài)更改未回答的請(qǐng)求的合格池而不取消該請(qǐng)求或不額外發(fā)送該請(qǐng)求。然而,如下所述,在處理中有固有的競(jìng)爭(zhēng)條件。即,在將設(shè)置池掩碼表示給異步套接(在一個(gè)例子里,異步套接碼包括設(shè)置池掩碼)時(shí),可能更改合格池組太晚了,要不然正在調(diào)用設(shè)置池掩碼時(shí)數(shù)據(jù)可能進(jìn)來(lái)。因此,要采取進(jìn)一步的措施,如下所述。
參照?qǐng)D8描述與設(shè)置池掩碼功能有關(guān)的邏輯的一個(gè)實(shí)施方案。如上面所述,當(dāng),例如,確定了該請(qǐng)求在等待的響應(yīng)時(shí),尤其是,在一例子中,向客戶發(fā)出回答之前,由SMB分析程序或網(wǎng)絡(luò)基本輸入輸出系統(tǒng)調(diào)用設(shè)置池掩碼代碼。輸入給該設(shè)置池掩碼代碼的是一個(gè)請(qǐng)求塊地址及相關(guān)信息和要用的新池掩碼(例如,主要池和次要池),正如該服務(wù)器確定的那樣。
開(kāi)始,對(duì)從相應(yīng)于該請(qǐng)求的請(qǐng)求塊獲得的請(qǐng)求句柄進(jìn)行檢驗(yàn)以保證其有效性,步驟800。如果無(wú)效,詢問(wèn)802,那末設(shè)置池掩碼功能的處理結(jié)束,步驟803。然而,如果有效,那末就獲得該請(qǐng)求隊(duì)列的主鎖,步驟804。
隨后,將適當(dāng)?shù)恼?qǐng)求塊中的池掩碼置成輸入池掩碼,步驟806。下一步,確定是否異步請(qǐng)求狀態(tài)是“排隊(duì)的”,并確定是否這組合格的池在擴(kuò)充,詢問(wèn)808。即是說(shuō),確定是否該合格的池表已更改了。如果該請(qǐng)求已排隊(duì)且這組合格的池已更改了,那末就從隊(duì)列中取下該請(qǐng)求,步驟810,并運(yùn)行發(fā)出代碼,確定是否該請(qǐng)求可由任何新增加的池處理(以免出現(xiàn)死鎖),步驟812。如果可以,那末就選取一個(gè)新池;如果不可以,則將它放回到隊(duì)列中。
返回到詢問(wèn)808,如果該異步請(qǐng)求排了隊(duì),但這組池沒(méi)有在擴(kuò)充,那末就不采取措施,要在對(duì)等待響應(yīng)的同一池發(fā)出回叫響應(yīng)前更改組合格的池(因此造成死鎖)的競(jìng)爭(zhēng)條件可能已丟失了。即是說(shuō),設(shè)置池掩碼設(shè)法兌付該請(qǐng)求,但在有些情況下可能太晚了(可能已經(jīng)發(fā)出了響應(yīng))。
運(yùn)行了發(fā)出代碼后或者如果這組池沒(méi)有在擴(kuò)充,則釋放請(qǐng)求隊(duì)列的主鎖,步驟814,且結(jié)束設(shè)置池掩碼的處理,步驟803。
由于設(shè)置池掩碼不能保證為每個(gè)發(fā)出的SMB兌現(xiàn)更改這組合格池的設(shè)置池掩碼請(qǐng)求,因此異步套接層將相應(yīng)于運(yùn)行線程(即,SMB的線程)的池號(hào)傳給上層(例如,網(wǎng)絡(luò)基本輸入輸出系統(tǒng)和SMB分析程序?qū)?。這些層用此信息(例如,池號(hào))來(lái)確定是否要重新發(fā)出該請(qǐng)求以免出現(xiàn)死鎖。尤其是,這些層確定該池是否合法,如上所述。
返回到圖4d,設(shè)定池掩碼后,向有希望的信息的客戶發(fā)出一個(gè)回叫,步驟446。此后,對(duì)該客戶的目標(biāo)會(huì)話解鎖,步驟448,并確定是否有任何其他的客戶要回叫,詢問(wèn)450。該確定工作例如通過(guò)檢查其他客戶的機(jī)會(huì)鎖進(jìn)行。
當(dāng)有多個(gè)客戶要回叫時(shí),用步驟438繼續(xù)處理,如上面所述??墒?,當(dāng)沒(méi)有未完成的回叫時(shí),該服務(wù)線程被放入等待狀態(tài)(即,它處于空閑且不符合發(fā)出條件)直至所有響應(yīng)都回來(lái)了,步驟452。此后,處理SMB并向請(qǐng)求的客戶送去回答,步驟434。另外,檢查該請(qǐng)求隊(duì)列以確定是否該請(qǐng)求隊(duì)列中有另一個(gè)合格的請(qǐng)求要處理,步驟436。
返回到詢問(wèn)428,如果確定為該池不合法,則不能在當(dāng)前服務(wù)該請(qǐng)求的線程上對(duì)該請(qǐng)求進(jìn)行請(qǐng)求。因此,最低的SMB分析程序?qū)?,如一個(gè)例子那樣,將特殊的返回碼返回給網(wǎng)絡(luò)基本輸入輸出系統(tǒng)。網(wǎng)絡(luò)基本輸入輸出系統(tǒng)然后調(diào)用異步套接將該請(qǐng)求重發(fā)給某個(gè)合格池,在本例中合格池就是主要池,步驟456。網(wǎng)絡(luò)基本輸入輸出系統(tǒng)返回異步套接,使該運(yùn)行的線程適用于該池。因此,由于競(jìng)爭(zhēng)條件,可能有與回答無(wú)關(guān)的請(qǐng)求進(jìn)來(lái),請(qǐng)求從次要的池重發(fā)給主要的池。
應(yīng)注意,雖然從CPU的角度講重發(fā)的代價(jià)是昂貴的,但一般不會(huì)發(fā)生這種情況。一般由設(shè)置池掩碼贏得這次競(jìng)爭(zhēng),它直接設(shè)置該掩碼而將來(lái)的請(qǐng)求在合適的池上進(jìn)入??蛻粢话懔⒓错憫?yīng)機(jī)會(huì)鎖,因此除非當(dāng)發(fā)出了機(jī)會(huì)鎖破壞且沒(méi)有可用的主池線程同時(shí)又進(jìn)入了客戶請(qǐng)求,否則沒(méi)有必要重發(fā)。而且,一般,主線程池設(shè)置得比次要池大(在一個(gè)例子里,有次要池只是為了避免出現(xiàn)死鎖現(xiàn)象)。因此,絕大多數(shù)的請(qǐng)求,甚至是機(jī)會(huì)鎖破壞響應(yīng),僅是在主要池上作處理,而不需要重發(fā)。因此,在機(jī)會(huì)鎖破壞的大多數(shù)情況下,更改池的選擇會(huì)導(dǎo)致設(shè)置位掩碼(例如,機(jī)器字)和不必重發(fā),產(chǎn)生非常高效益的方案。只有最低層的SMB分析程序部件需要應(yīng)付重發(fā)。SMB分析程序中的高層以及在那之上的層次(例如,文件系統(tǒng)接口和機(jī)會(huì)鎖處理碼)不需要擔(dān)心該請(qǐng)求在什么池上運(yùn)行、重發(fā)或任何別的與本方案相關(guān)的東西。
上面詳細(xì)描述的是池管理功能的一個(gè)實(shí)施方案,它允許動(dòng)態(tài)設(shè)置處理請(qǐng)求所用的合格池。這組池動(dòng)態(tài)更改以避免出現(xiàn)死鎖情況,特別是當(dāng)一個(gè)客戶請(qǐng)求在等待一個(gè)或多個(gè)其他客戶的回叫響應(yīng)時(shí),更是如此。
在本發(fā)明的一個(gè)情況中,提供了動(dòng)態(tài)處理線程池分配的雙重池解決方案,客戶請(qǐng)求中不表示可以用哪個(gè)池。動(dòng)態(tài)池分配機(jī)制是高效的并可用于各種計(jì)算環(huán)境,包括但不限于任何客戶/服務(wù)器環(huán)境,這些環(huán)境中,客戶的請(qǐng)求可能需要堵住其他客戶的響應(yīng)。
本發(fā)明可包含在有,例如,計(jì)算機(jī)可用媒體的制造物里(例如,一個(gè)或多個(gè)計(jì)算機(jī)程序產(chǎn)品)。該媒體中包含例如,計(jì)算機(jī)可讀的程序代碼裝置,以提供并便于發(fā)揮本發(fā)明的功能??蓪⒅圃炱钒ㄗ鳛橛?jì)算機(jī)系統(tǒng)的組成部分或單獨(dú)出售。
另外,至少能提供一個(gè)計(jì)算機(jī)可讀的程序存儲(chǔ)設(shè)備,它明確包含至少一個(gè)計(jì)算機(jī)可執(zhí)行的指令程序以執(zhí)行本發(fā)明的功能。
這里描繪的流程圖僅是示范性的。這些流程圖可能有許多變種或這里描述的步驟(或操作)而沒(méi)離開(kāi)本發(fā)明的精神。例如,可以不同的順序執(zhí)行這些步驟或者增加步驟、刪除或修改步驟。所有這些變種被認(rèn)為是本發(fā)明的權(quán)利要求組成部分。
雖然這里已描繪了并詳細(xì)描述了最佳的實(shí)施方案,但顯然對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō),可以作出各種修改、增加、取代等等但沒(méi)有離開(kāi)該發(fā)明的精神,因此,這些被認(rèn)為是該發(fā)明范圍內(nèi)的,正如下面的權(quán)利要求所定義的那樣。
權(quán)利要求
1.管理計(jì)算環(huán)境的線程池的方法,所說(shuō)的方法包括從所說(shuō)的計(jì)算環(huán)境的第一個(gè)請(qǐng)求者那里接收一個(gè)要處理的請(qǐng)求,所說(shuō)的請(qǐng)求等待所說(shuō)的計(jì)算環(huán)境的第二個(gè)請(qǐng)求者發(fā)出響應(yīng),而其中所說(shuō)的響應(yīng)由選自由一個(gè)或多個(gè)合格的線程池組成的線程池組的某個(gè)線程池服務(wù);和動(dòng)態(tài)更改所說(shuō)的由一個(gè)或多個(gè)線程池組成的線程池組以提供更改過(guò)的由一個(gè)或多個(gè)合格的線程池組成的線程池組,其中更改過(guò)的線程池組的某個(gè)線程池要服務(wù)所說(shuō)的響應(yīng)。
2.權(quán)利要求1的方法,其中所說(shuō)的動(dòng)態(tài)更改包含設(shè)置與所說(shuō)的響應(yīng)相關(guān)的池掩碼以表示所說(shuō)的一個(gè)或多個(gè)合格的線程池。
3.權(quán)利要求2的方法,其中所說(shuō)的池掩碼包括在與所說(shuō)的響應(yīng)相關(guān)的數(shù)據(jù)結(jié)構(gòu)里。
4.權(quán)利要求1的方法,其中當(dāng)確定所說(shuō)的請(qǐng)求在等待所說(shuō)的響應(yīng)時(shí),就開(kāi)始所說(shuō)的動(dòng)態(tài)更改。
5.權(quán)利要求1的方法,進(jìn)一步包含從所說(shuō)的更改過(guò)的線程池組選取所說(shuō)的線程池來(lái)服務(wù)所說(shuō)的響應(yīng)。
6.權(quán)利要求5的方法,其中所說(shuō)的選取包含確定哪些,如果有的話,所說(shuō)的更改過(guò)的線程池組的線程池不包括在所說(shuō)的由一個(gè)或多個(gè)合格的線程池組成的線程池組中,從而提供一個(gè)或多個(gè)新的線程池;和從所說(shuō)的一個(gè)或多個(gè)新線程池選取所說(shuō)的線程池。
7.權(quán)利要求1的方法,進(jìn)一步包含向所說(shuō)的線程池的一個(gè)線程發(fā)出所說(shuō)的響應(yīng)。
8.權(quán)利要求7的方法,進(jìn)一步包含確定所說(shuō)的線程池是否適于該發(fā)出的響應(yīng);和當(dāng)該線程池不適合時(shí)將所說(shuō)的響應(yīng)重發(fā)給另一個(gè)線程池。
9.權(quán)利要求1的方法,進(jìn)一步包含動(dòng)態(tài)重新更改所說(shuō)的更改過(guò)的線程池組以服務(wù)一個(gè)或多個(gè)其他的響應(yīng)或一個(gè)或多個(gè)其他的請(qǐng)求。
10.權(quán)利要求9的方法,其中當(dāng)沒(méi)有未解決的要由所說(shuō)的第二個(gè)請(qǐng)求者響應(yīng)的回叫時(shí),執(zhí)行所說(shuō)的動(dòng)態(tài)重新更改。
11.權(quán)利要求10的方法,進(jìn)一步包含確定是否有任何未決的回叫,所說(shuō)的確定涉及一個(gè)與所說(shuō)的第二個(gè)請(qǐng)求者有關(guān)的數(shù)據(jù)結(jié)構(gòu)。
12.權(quán)利要求1的方法,進(jìn)一步包含從所請(qǐng)求的由一個(gè)或多個(gè)合格的線程池組成的線程池組那里選取一個(gè)線程池去服務(wù)所說(shuō)的請(qǐng)求,其中所說(shuō)的選擇是根據(jù)所說(shuō)的一個(gè)或多個(gè)合格的線程池順序進(jìn)行的。
13.權(quán)利要求12的方法,其中所說(shuō)的順序包含在任何次要的線程池之前可以選取一個(gè)主要的線程池。
14.權(quán)利要求1的方法,其中所說(shuō)的接收包含由所說(shuō)的計(jì)算環(huán)境的服務(wù)器接收所說(shuō)的請(qǐng)求且其中所說(shuō)的第一個(gè)請(qǐng)求者是第一個(gè)客戶而所說(shuō)的第二個(gè)請(qǐng)求者是第二個(gè)客戶。
15.權(quán)利要求14的方法,其中所說(shuō)的服務(wù)器是一個(gè)文件服務(wù)器。
16.權(quán)利要求14的方法,其中所說(shuō)的第一個(gè)客戶和所說(shuō)的第二個(gè)客戶至少一個(gè)與所說(shuō)的服務(wù)器在所說(shuō)的計(jì)算環(huán)境的同一個(gè)物理計(jì)算機(jī)上運(yùn)行。
17.權(quán)利要求14的方法,其中所說(shuō)的第一客戶和所說(shuō)的第二客戶至少一個(gè)與所說(shuō)的服務(wù)器在所說(shuō)的計(jì)算環(huán)境的不同物理計(jì)算機(jī)上運(yùn)行。
18.權(quán)利要求1的方法,其中所說(shuō)的動(dòng)態(tài)更改由所說(shuō)的計(jì)算環(huán)境的服務(wù)器執(zhí)行。
19.權(quán)利要求1的方法,其中所說(shuō)的更改過(guò)的線程池組的所說(shuō)線程池要服務(wù)所說(shuō)的響應(yīng),以免因?yàn)樗f(shuō)的請(qǐng)求等待所說(shuō)的響應(yīng)而出現(xiàn)死鎖。
20.權(quán)利要求1的方法,其中所說(shuō)的動(dòng)態(tài)更改包括不從所說(shuō)的第二個(gè)請(qǐng)求者那里接收表示哪些線程池要包含在所說(shuō)的更改過(guò)的線程池組中。
21.權(quán)利要求1的方法,其中所說(shuō)的第一個(gè)請(qǐng)求者和所說(shuō)的第二個(gè)請(qǐng)求者是同一個(gè)請(qǐng)求者。
22.權(quán)利要求1的方法,其中所說(shuō)的第一個(gè)請(qǐng)求者和所說(shuō)的第二個(gè)請(qǐng)求者是不同的請(qǐng)求者。
23.管理計(jì)算環(huán)境的線程池的方法,所說(shuō)的方法包含動(dòng)態(tài)確定多個(gè)線程池的哪個(gè)線程池被用來(lái)處理請(qǐng)求;和用所說(shuō)的線程池的一個(gè)線程來(lái)處理所說(shuō)的請(qǐng)求。
24.權(quán)利要求23的方法,其中當(dāng)所說(shuō)的請(qǐng)求是一個(gè)對(duì)另一請(qǐng)求的回叫響應(yīng)時(shí)執(zhí)行所說(shuō)的動(dòng)態(tài)確定。
25.權(quán)利要求23的方法,其中所說(shuō)的計(jì)算環(huán)境包含至少一個(gè)服務(wù)器和至少一個(gè)客戶且其中所說(shuō)的請(qǐng)求由所說(shuō)的至少一個(gè)客戶的客戶發(fā)出并由所說(shuō)的至少一個(gè)服務(wù)器的服務(wù)器來(lái)接收,而其中所說(shuō)的動(dòng)態(tài)確定由所說(shuō)的服務(wù)器進(jìn)行。
26.權(quán)利要求25的方法,其中所說(shuō)的動(dòng)態(tài)確定包含不從所說(shuō)的客戶那里接收表示要用哪個(gè)線程池。
27.管理計(jì)算環(huán)境的線程池的系統(tǒng),所說(shuō)的系統(tǒng)包含用于從所說(shuō)的計(jì)算環(huán)境的第一個(gè)請(qǐng)求者那里接收一個(gè)要處理的請(qǐng)求的裝置,所說(shuō)請(qǐng)求等待所說(shuō)的計(jì)算環(huán)境的第二個(gè)請(qǐng)求者作出響應(yīng),其中所說(shuō)的響應(yīng)由選自一個(gè)或多個(gè)合格的線程池組成一組中的某個(gè)線程池服務(wù);和動(dòng)態(tài)更改所說(shuō)的由一個(gè)或多個(gè)合格的線程池組成的線程池組的裝置以提供更改過(guò)的由一個(gè)或多個(gè)合格的線程池組成的線程池組,其中更改過(guò)的線程池組的某個(gè)線程池要服務(wù)所說(shuō)的響應(yīng)。
28.權(quán)利要求27的系統(tǒng),其中所說(shuō)的動(dòng)態(tài)更改裝置包含設(shè)置與所說(shuō)的響應(yīng)有關(guān)的池掩碼以表示所說(shuō)的一個(gè)或多個(gè)合格的線程池的裝置。
29.權(quán)利要求28的系統(tǒng),其中所說(shuō)的池掩碼包括在與所說(shuō)的響應(yīng)有關(guān)的數(shù)據(jù)結(jié)構(gòu)中。
30.權(quán)利要求27的系統(tǒng),其中當(dāng)確定了所說(shuō)的請(qǐng)求在等待所說(shuō)的響應(yīng)時(shí)開(kāi)始動(dòng)態(tài)地更改。
31.權(quán)利要求27的系統(tǒng),進(jìn)一步包含從所說(shuō)的更改過(guò)的線程池組那里選取所說(shuō)的線程池以服務(wù)所說(shuō)的響應(yīng)的裝置。
32.權(quán)利要求31的系統(tǒng),其中所說(shuō)的選擇裝置包含確定所說(shuō)的更改過(guò)的線程池組的哪些線程池,如果有的話,不包括在所說(shuō)的由一個(gè)或多個(gè)合格的線程池組成的線程池組,因而提供一個(gè)或多個(gè)新的線程池的裝置;和從所說(shuō)的一個(gè)或多個(gè)新的線程池那里選取所說(shuō)的線程池的裝置。
33.權(quán)利要求27的系統(tǒng),進(jìn)一步包含向所說(shuō)的線程池的一個(gè)線程發(fā)出所說(shuō)的響應(yīng)的裝置。
34.權(quán)利要求33的系統(tǒng),進(jìn)一步包含確定所說(shuō)的線程池是否適合于發(fā)出的響應(yīng)的裝置;和當(dāng)該線程池不適合時(shí)給另一個(gè)線程池重發(fā)所說(shuō)的響應(yīng)的裝置。
35.權(quán)利要求27的系統(tǒng),進(jìn)一步包含動(dòng)態(tài)重新更改所說(shuō)已更改的線程池組以服務(wù)一個(gè)或多個(gè)其他響應(yīng)或一個(gè)或多個(gè)其他的請(qǐng)求的裝置。
36.權(quán)利要求35的系統(tǒng),其中當(dāng)沒(méi)有未解決的要由所說(shuō)的第二個(gè)請(qǐng)求者響應(yīng)的回叫時(shí)執(zhí)行所說(shuō)的動(dòng)態(tài)重新更改的裝置。
37.權(quán)利要求36的系統(tǒng),進(jìn)一步包含確定是否有任何未決的回叫的裝置,所說(shuō)的確定參考與所說(shuō)的第二個(gè)請(qǐng)求者有關(guān)的數(shù)據(jù)結(jié)構(gòu)。
38.權(quán)利要求27的系統(tǒng),進(jìn)一步包含從所請(qǐng)求的一個(gè)或多個(gè)合格的線程池選擇組成的線程池組中某線程池以服務(wù)所說(shuō)請(qǐng)求的裝置,其中選擇是根據(jù)所說(shuō)的一個(gè)或多個(gè)合格的線程池順序進(jìn)行的。
39.權(quán)利要求38的系統(tǒng),其中該順序包含一個(gè)在選擇任何次要的線程池之前可選擇的主要的線程池。
40.權(quán)利要求27的系統(tǒng),其中所說(shuō)的接收裝置包含由所說(shuō)的計(jì)算環(huán)境的服務(wù)器接收所說(shuō)的請(qǐng)求的裝置,其中所說(shuō)的第一個(gè)請(qǐng)求者是第一個(gè)客戶,所說(shuō)的第二個(gè)請(qǐng)求者是第二個(gè)客戶。
41.權(quán)利要求40的系統(tǒng),其中所說(shuō)的服務(wù)器是一個(gè)文件服務(wù)器。
42.權(quán)利要求40的系統(tǒng),其中所說(shuō)的第一客戶和所說(shuō)的第二客戶至少有一個(gè)與所說(shuō)的服務(wù)器在所說(shuō)的計(jì)算環(huán)境的相同物理計(jì)算機(jī)上運(yùn)行。
43.權(quán)利要求40的系統(tǒng),其中所說(shuō)的第一客戶和所說(shuō)的第二客戶至少有一個(gè)與所說(shuō)的服務(wù)器在所說(shuō)的計(jì)算環(huán)境中不同的物理計(jì)算機(jī)上運(yùn)行。
44.權(quán)利要求27的系統(tǒng),其中的動(dòng)態(tài)更改由所說(shuō)的計(jì)算環(huán)境中服務(wù)器進(jìn)行。
45.權(quán)利要求27的系統(tǒng),其中所說(shuō)的更改過(guò)的線程池組的所說(shuō)線程要服務(wù)所說(shuō)的響應(yīng),以免因?yàn)樗f(shuō)的請(qǐng)求等待所說(shuō)的響應(yīng)而出現(xiàn)死鎖。
46.權(quán)利要求27的系統(tǒng),其中所說(shuō)的動(dòng)態(tài)更改裝置接收發(fā)自所說(shuō)的第二請(qǐng)求者的請(qǐng)求不表示要將哪些線程池包含在所說(shuō)的更改過(guò)的線程池中。
47.權(quán)利要求27的系統(tǒng),其中所說(shuō)的第一請(qǐng)求者和所說(shuō)的第二請(qǐng)求者是同一個(gè)請(qǐng)求者。
48.權(quán)利要求27的系統(tǒng),其中所說(shuō)的第一請(qǐng)求者和所說(shuō)的第二請(qǐng)求者是不同的請(qǐng)求者。
49.管理計(jì)算環(huán)境的線程池的系統(tǒng),所說(shuō)的系統(tǒng)包含動(dòng)態(tài)確定用多個(gè)線程池的哪個(gè)線程池來(lái)處理請(qǐng)求的裝置;和用所說(shuō)的線程池的線程處理所說(shuō)的請(qǐng)求的裝置。
50.權(quán)利要求49的系統(tǒng),其中當(dāng)所說(shuō)的請(qǐng)求是一個(gè)對(duì)另一個(gè)請(qǐng)求的回答響應(yīng)時(shí)進(jìn)行動(dòng)態(tài)確定。
51.權(quán)利要求49的系統(tǒng),其中所說(shuō)的計(jì)算環(huán)境包含至少一個(gè)服務(wù)器和至少一個(gè)客戶,而其中所說(shuō)的請(qǐng)求由所說(shuō)的至少一個(gè)客戶的客戶發(fā)出和由所說(shuō)的至少一個(gè)服務(wù)器的服務(wù)器接收,其中的動(dòng)態(tài)確定由所說(shuō)的服務(wù)器執(zhí)行。
52.權(quán)利要求51的系統(tǒng),其中所說(shuō)的動(dòng)態(tài)確定裝置不從所說(shuō)的客戶接收要用哪個(gè)線程池的表示。
53.管理計(jì)算環(huán)境的線程池的系統(tǒng),所說(shuō)的系統(tǒng)包含適于從所說(shuō)的計(jì)算環(huán)境中的第一客戶那里接收要處理的請(qǐng)求的處理機(jī)、所說(shuō)請(qǐng)求等待所說(shuō)計(jì)算環(huán)境的第二客戶的響應(yīng),而其中所說(shuō)的響應(yīng)要由從一個(gè)或多個(gè)合格的線程池組成的線程池組中選擇的一個(gè)線程池服務(wù);和所說(shuō)的處理機(jī)被改造成動(dòng)態(tài)更改所說(shuō)的由一個(gè)或多個(gè)合格的線程池組成的線程池組以提供一個(gè)更改過(guò)的由一個(gè)或多個(gè)合格的線程池組成的線程池組,其中更改過(guò)的線程池組的某個(gè)線程池要服務(wù)所說(shuō)的響應(yīng)。
54.權(quán)利要求53的系統(tǒng),其中所說(shuō)的處理機(jī)包含所說(shuō)的計(jì)算環(huán)境的一個(gè)服務(wù)器。
55.權(quán)利要求53的系統(tǒng),其中所說(shuō)的第一客戶和所說(shuō)的第二客戶是同一客戶。
56.權(quán)利要求53的系統(tǒng),其中所說(shuō)的第一客戶和所說(shuō)的第二客戶是不同的客戶。
57.管理計(jì)算環(huán)境的線程池的系統(tǒng),所說(shuō)的系統(tǒng)包含適于動(dòng)態(tài)確定用多個(gè)線程池的哪個(gè)線程池來(lái)處理請(qǐng)求的處理機(jī);和所說(shuō)的處理機(jī)被改造成用所說(shuō)的線程池中某個(gè)線程來(lái)處理所說(shuō)的請(qǐng)求。
58.至少一個(gè)計(jì)算機(jī)可讀的程序存儲(chǔ)設(shè)備,具體實(shí)現(xiàn)有至少一個(gè)該計(jì)算機(jī)可執(zhí)行的、執(zhí)行管理計(jì)算環(huán)境的線程池的方法的指令程序,所說(shuō)的方法包含從所說(shuō)的計(jì)算環(huán)境的第一請(qǐng)求者那里接收一個(gè)要處理的請(qǐng)求,所說(shuō)的請(qǐng)求等待所說(shuō)的計(jì)算環(huán)境的第二請(qǐng)求者作出響應(yīng),而其中所說(shuō)的響應(yīng)由某個(gè)選自由一個(gè)或多個(gè)合格的線程池組成的線程池組的線程池服務(wù);和動(dòng)態(tài)更改所說(shuō)的由一個(gè)或多個(gè)合格的線程池組成的線程池組以提供由一個(gè)或多個(gè)合格的線程池組成的更改過(guò)的線程池組,其中更改過(guò)的線程池組的一個(gè)線程池要服務(wù)所說(shuō)的響應(yīng)。
59.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的動(dòng)態(tài)更改包含設(shè)置與所說(shuō)的響應(yīng)有關(guān)的池掩碼以表示所說(shuō)的一個(gè)或多個(gè)合格的線程池。
60.權(quán)利要求59的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的池掩碼包括在與所說(shuō)的響應(yīng)有關(guān)的數(shù)據(jù)結(jié)構(gòu)中。
61.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的動(dòng)態(tài)更改在確定所說(shuō)的請(qǐng)求在等待所說(shuō)的響應(yīng)時(shí)就開(kāi)始。
62.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的方法還包含從所說(shuō)的更改過(guò)的線程池組中選擇所說(shuō)的線程池以服務(wù)所說(shuō)的響應(yīng)。
63.權(quán)利要求62的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的選擇包含確定所說(shuō)的更改過(guò)的線程池組中哪些線程池,如有,不包含在所說(shuō)的一組一個(gè)或多個(gè)合格的線程池中,由此提供一個(gè)或多個(gè)新的線程池;和從所說(shuō)的一個(gè)或多個(gè)新的線程池選取所說(shuō)的線程池。
64.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的方法進(jìn)一步包含向所說(shuō)的線程池中的一個(gè)線程發(fā)出所說(shuō)的響應(yīng)。
65.權(quán)利要求64的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的方法進(jìn)一步包含確定是否所說(shuō)的線程池適合于該發(fā)出的響應(yīng);和當(dāng)該線程池不適合時(shí)重發(fā)所說(shuō)的響應(yīng)給另一個(gè)線程池。
66.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的方法進(jìn)一步包含動(dòng)態(tài)重新更改所說(shuō)的更改過(guò)的線程池組以服務(wù)一個(gè)或多個(gè)其他響應(yīng)或一個(gè)或多個(gè)其他的請(qǐng)求。
67.權(quán)利要求66的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的動(dòng)態(tài)重新更改是在沒(méi)有要由所說(shuō)的第二請(qǐng)求者響應(yīng)的未解決回叫時(shí)執(zhí)行的。
68.權(quán)利要求67的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的方法進(jìn)一步包含確定是否有未解決的回叫、所說(shuō)的確定參照與所說(shuō)的第二請(qǐng)求者有關(guān)的數(shù)據(jù)結(jié)構(gòu)。
69.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的方法進(jìn)一步包含從所請(qǐng)求的一組一個(gè)或多個(gè)合格的線程池選取一個(gè)線程池以服務(wù)所說(shuō)請(qǐng)求,其中所說(shuō)的選擇是按照所說(shuō)的一個(gè)或多個(gè)合格的線程池順序進(jìn)行的。
70.權(quán)利要求69的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的順序包含在次要的線程池之前可選主要的線程池。
71.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的接收包含由所說(shuō)的計(jì)算環(huán)境中的服務(wù)器接收所說(shuō)的請(qǐng)求,而其中所說(shuō)的第一請(qǐng)求者是第一客戶和所說(shuō)的第二請(qǐng)求者是第二客戶。
72.權(quán)利要求71的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的服務(wù)器是一個(gè)文件服務(wù)器。
73.權(quán)利要求71的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的第一客戶和所說(shuō)的第二客戶至少一個(gè)與所說(shuō)的服務(wù)器在所說(shuō)的計(jì)算環(huán)境中相同的物理計(jì)算機(jī)上運(yùn)行。
74.權(quán)利要求71的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的第一客戶和所說(shuō)的第二客戶至少一個(gè)與所說(shuō)的服務(wù)器在所說(shuō)的計(jì)算環(huán)境的一個(gè)不同的物理計(jì)算機(jī)上運(yùn)行。
75.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的動(dòng)態(tài)更改由所說(shuō)的計(jì)算環(huán)境的服務(wù)器執(zhí)行。
76.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的更改過(guò)的線程池組的所說(shuō)線程池要服務(wù)所說(shuō)的響應(yīng),以免因所說(shuō)的請(qǐng)求等待所說(shuō)的響應(yīng)而出現(xiàn)死鎖。
77.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的動(dòng)態(tài)更改包含不從所說(shuō)的第二請(qǐng)求者接收要將哪些線程池包含在所說(shuō)的更改過(guò)的線程池組中的指示。
78.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的第一請(qǐng)求者和所說(shuō)的第二請(qǐng)求者是同一個(gè)請(qǐng)求者。
79.權(quán)利要求58的至少一個(gè)程序存儲(chǔ)設(shè)備,其中所說(shuō)的第一請(qǐng)求者和所說(shuō)的第二請(qǐng)求者是不同的請(qǐng)求者。
80.一種制造品,包含至少一個(gè)計(jì)算機(jī)可用的介質(zhì),其中實(shí)現(xiàn)了用以管理計(jì)算環(huán)境的線程池的計(jì)算機(jī)可讀的程序代碼裝置,在所說(shuō)的制造品中的計(jì)算機(jī)可讀的程序代碼裝置包含計(jì)算機(jī)可讀的程序代碼裝置,以使計(jì)算機(jī)動(dòng)態(tài)確定要用多個(gè)線程池的哪個(gè)線程池來(lái)處理請(qǐng)求;和計(jì)算機(jī)可讀的程序代碼裝置,以使計(jì)算機(jī)用所說(shuō)的線程池的線程處理所說(shuō)的請(qǐng)求。
81.權(quán)利要求80的制造品,其中的動(dòng)態(tài)確定在所說(shuō)的請(qǐng)求是一個(gè)對(duì)另一個(gè)請(qǐng)求的回答響應(yīng)時(shí)執(zhí)行。
82.權(quán)利要求80的制造品,其中所說(shuō)的所說(shuō)計(jì)算環(huán)境包含至少一個(gè)服務(wù)器和至少一個(gè)客戶,其中所說(shuō)的請(qǐng)求由所說(shuō)的至少一個(gè)客戶的客戶發(fā)出并由所說(shuō)的至少一個(gè)服務(wù)器的服務(wù)器接收,其中的動(dòng)態(tài)確定由所說(shuō)的服務(wù)器執(zhí)行。
83.權(quán)利要求82的制造品,其中的動(dòng)態(tài)確定包含不從所說(shuō)的客戶那里接收關(guān)于要用哪個(gè)線程池的表示。
全文摘要
通過(guò)正確管理用于服務(wù)計(jì)算環(huán)境的請(qǐng)求的線程池能避免出現(xiàn)計(jì)算環(huán)境中的死鎖情況。當(dāng)計(jì)算環(huán)境的某個(gè)服務(wù)器接收了一個(gè)要處理的請(qǐng)求且該請(qǐng)求在等待計(jì)算環(huán)境的客戶作出響應(yīng)時(shí),就動(dòng)態(tài)更改該響應(yīng)的那組合格的線程池。這種動(dòng)態(tài)更改可讓該響應(yīng)由一個(gè)不同于服務(wù)該請(qǐng)求的線程池的某個(gè)線程池來(lái)服務(wù),從而避免了死鎖情況。
文檔編號(hào)G06F9/50GK1297198SQ00130939
公開(kāi)日2001年5月30日 申請(qǐng)日期2000年11月14日 優(yōu)先權(quán)日1999年11月18日
發(fā)明者G·D·杜利特爾, T·P·克雷恩, S·T·馬科特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1