欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于信息處理的系統(tǒng)和方法

文檔序號:6562902閱讀:163來源:國知局
專利名稱:用于信息處理的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及一種用于改進(jìn)軟件鎖的系統(tǒng)和方法。更具體地,本申請涉及一種用于為正等待軟件鎖的線程保留該鎖的系統(tǒng)和方法。
背景技術(shù)
在多處理環(huán)境中,軟件鎖被用于串行化對資源的訪問。如此處所使用的,“線程”指代可獨(dú)立于程序的其它部分執(zhí)行的程序的一部分??梢源嬖谕瑫r(shí)進(jìn)行操作的多個(gè)程序,包括操作系統(tǒng),并且這些程序中的每個(gè)可以具有多個(gè)線程。當(dāng)線程需要訪問串行化的資源時(shí),軟件鎖被使用。軟件鎖提供了一種機(jī)制,使得一個(gè)線程能夠使用資源(例如,寫到共享存儲器位置等)。盡管傳統(tǒng)的鎖提供了一種用于訪問資源的受控制裝置,但是使用傳統(tǒng)鎖遇到的一個(gè)挑戰(zhàn)在于,線程可能意外地急需訪問特定資源。盡管在多處理器環(huán)境中出現(xiàn)此情況,但在某些條件下在單處理器環(huán)境中也可出現(xiàn)此情況。
圖1是潛在地急需關(guān)鍵資源的過程的典型的加鎖算法的現(xiàn)有技術(shù)描述。在所示出的示例中,第二線程急需特定資源。在100開始第一線程的處理部分的描述,而在101開始第二線程的處理部分的描述。在步驟105,第一線程獲得特定鎖并接著通過執(zhí)行使用被該鎖控制的資源的工作來開始步驟110。
在第一線程已獲得鎖之后、但是在第一線程已釋放該鎖之前的某個(gè)時(shí)間,第二線程請求同一軟件鎖(步驟115)。在步驟120,鎖管理器注意到該鎖已被(第一線程)獲得,于是在步驟125,第二線程被置為睡眠,并被添加到等待隊(duì)列130。在第二線程被置為睡眠并被添加到等待隊(duì)列之后的某個(gè)時(shí)間,第一線程釋放該鎖(步驟135)。第一線程釋放該鎖導(dǎo)致第二線程喚醒(步驟140),并且第二線程從等待隊(duì)列130中移除。在第二線程正在喚醒的時(shí)候,在步驟145第一線程執(zhí)行不需要由軟件鎖控制的共享資源的工作。但是,在第二線程完全喚醒并請求該鎖(步驟160)之前,第一線程再次需要訪問共享資源,并在步驟150再次請求鎖。因?yàn)樵撴i可用,并且第一線程在第二線程之前請求該鎖,所以在步驟155第一線程重新獲得該鎖。
再次地,鎖管理器拒絕將鎖給第二線程(步驟165),因?yàn)樵撴i已被另一過程(第一線程)所獲得。接著第二線程被置回為睡眠,并被添加到等待隊(duì)列(步驟170)。不幸的是,所述序列可能被反復(fù)重復(fù)(步驟175和180),由此使第二線程變得急需,使得它必須等待過量時(shí)間來獲得由所述鎖控制的共享資源。如前所述,盡管在多處理器環(huán)境中出現(xiàn)圖1中描述的情況,但在某些條件下在單處理器環(huán)境中也可出現(xiàn)此情況。如上所述,第二線程可能變得急需該鎖的一個(gè)原因是因?yàn)榈谝痪€程是運(yùn)行中的線程,而第二線程被置為睡眠。運(yùn)行中的線程所具有的優(yōu)于睡眠線程的優(yōu)勢在于,它可以經(jīng)常在睡眠線程可以喚醒并請求該鎖之前完成其處理并請求該鎖。通過使用類似分派程序,第二線程將在喚醒時(shí)優(yōu)選地被分派給CPU2。不過,如果CPU2繁忙,則第二線程可被重新分配給在第二線程喚醒之時(shí)空閑的不同CPU。再一次地,將第二線程重新分配給空閑的CPU需要額外的時(shí)間,這向第一線程提供了完成其工作并重新請求該鎖的額外優(yōu)勢。
因此,所需要的是一種防止一個(gè)過程急需共享資源的系統(tǒng)和方法。還需要的是一種為等待過程保留鎖從而使它具有好得多的機(jī)會來及時(shí)地獲得該鎖的系統(tǒng)和方法。

發(fā)明內(nèi)容
已經(jīng)發(fā)現(xiàn),一種為等待線程保留軟件鎖的系統(tǒng)和方法解決了前述挑戰(zhàn)。當(dāng)軟件鎖被第一過程(線程)釋放時(shí),正等待由所述軟件鎖控制的相同資源的第二線程被喚醒。此外,為所述第二線程建立對所述軟件鎖的保留。
在建立所述保留之后,如果所述鎖可用,并由除了所述第二線程之外的線程所請求,那么,如果所述請求線程的優(yōu)先級并未優(yōu)于所述第二線程,則所述請求線程被拒絕,并且所述請求線程被添加到等待隊(duì)列并被置為睡眠。此外,所述保留被清除。以此方式,如果所述第二線程花費(fèi)過量時(shí)間來請求所述鎖,則所述保留不會永久地阻礙其它過程(線程)。在所述保留已被清除后,所述鎖將被授予請求所述鎖的下一線程。盡管所述第二線程未被保證立刻獲得所述鎖,但這極大地提高了所述第二線程在合理的時(shí)間量內(nèi)獲得所述鎖的機(jī)會。
當(dāng)然,如果所述第二線程是在所述保留已被設(shè)置之后請求所述鎖的下一線程(或者如果所述第二線程是在所述保留已被設(shè)置之前請求所述鎖),則所述第二線程獲得所述軟件鎖。如果已為所述第二線程設(shè)置了保留,則所述保留被清除。
前述內(nèi)容是摘要,并因此按照需要包含了細(xì)節(jié)的簡化、概括和刪節(jié);結(jié)果,本領(lǐng)域技術(shù)人員將理解,所述摘要僅是說明,而不會以任何方式進(jìn)行限制。僅由權(quán)利要求限定的本發(fā)明的其它方面、創(chuàng)造性特征和優(yōu)點(diǎn)將在以下闡述的非限制性詳細(xì)描述中變得明顯。


通過參考附圖,本發(fā)明可被更好地理解,并且本發(fā)明的多個(gè)目的、特征和優(yōu)點(diǎn)對本領(lǐng)域技術(shù)人員更加明顯。
圖1是潛在地急需關(guān)鍵資源的過程的典型的加鎖算法的現(xiàn)有技術(shù)描述;圖2是示出由各種處理器執(zhí)行并通過軟件鎖共享公共資源的過程的高級圖;圖3是示出對保留的使用如何防止急需嘗試使用鎖的過程的圖;圖4是示出當(dāng)接收到對于鎖的請求時(shí)采取的步驟的流程圖;圖5是示出當(dāng)保持鎖的過程釋放該鎖時(shí)采取的步驟的流程圖;以及圖6示出信息處理系統(tǒng)601,其是能夠執(zhí)行此處所述的計(jì)算操作的計(jì)算機(jī)系統(tǒng)的簡化示例。
具體實(shí)施例方式
以下內(nèi)容旨在提供本發(fā)明的示例的詳細(xì)描述,并且不應(yīng)被用來限制發(fā)明本身。而是,任何數(shù)量的變體均可落入在權(quán)利要求中所限定的本發(fā)明的范圍。
圖1是潛在地急需關(guān)鍵資源的過程的典型的加鎖算法的現(xiàn)有技術(shù)描述。在以上背景技術(shù)部分中可找到對圖1的描述。
圖2-5示出避免了急需關(guān)鍵資源的過程的加鎖算法。當(dāng)鎖被釋放并且存在等待者時(shí),喚醒呼叫在鎖結(jié)構(gòu)中設(shè)置保留位。從等待列表(等待隊(duì)列)中喚醒的線程將在線程控制框中具有位組,指示該線程曾在該鎖的等待列表上。所喚醒線程嘗試獲得鎖并將清除等待列表位。在鎖獲得期間,如果鎖是空閑的且鎖結(jié)構(gòu)具有等待列表位組,則將進(jìn)行檢查,以看看所述線程是否具有等待列表位組。如果線程具有等待列表位組,則它將被允許嘗試獲得該鎖,并且線程等待列表位將被清除(不管是否獲得該鎖)。如果線程在其線程控制結(jié)構(gòu)中沒有等待列表位組,則它將清除鎖結(jié)構(gòu)的鎖保留位,將進(jìn)入睡眠,并且它將被添加到等待列表(等待隊(duì)列)。
注冊表可被用于確定哪些鎖將使用上文和圖2-5中所述的算法,在或者所述算法可應(yīng)用于所有鎖。由于該算法的開銷非常小,并因?yàn)闄z查和設(shè)置保留位檢查中涉及的開銷可以忽略,特別是因?yàn)榈却斜?等待隊(duì)列)無論如何要被檢查,所以將該算法應(yīng)用于所有鎖是可能的。此外,額外的分派開銷也是可以忽略的,而且可由更復(fù)雜的實(shí)現(xiàn)達(dá)到的任何小的節(jié)約將可能被該復(fù)雜實(shí)現(xiàn)所需的額外開銷所蓋過。此外,通過將保留位作為鎖本身存儲在同一高速緩存線中,可以進(jìn)一步提高效率。此外,如此處更詳細(xì)地解釋的,僅當(dāng)線程在等待列表上等待,并被實(shí)現(xiàn)為喚醒例程的一部分時(shí),才執(zhí)行鎖保留。
圖2是示出由各種處理器執(zhí)行并通過軟件鎖共享公共資源的過程的高級圖。
背景技術(shù)
部分中描述的挑戰(zhàn)(見以上圖1及其描述)在多處理系統(tǒng)中更可能出現(xiàn),在多處理系統(tǒng)中不同處理器被用于執(zhí)行不同線程,每個(gè)線程都需要訪問共享資源。圖2描述了此多處理環(huán)境。
硬件200在許多組件中包括多個(gè)處理器(CPU1(210)、CPU2(220)和CPU3(230))。這些處理器中的每個(gè)可執(zhí)行一個(gè)或多個(gè)線程。在所示出的示例中,CPU1(210)在執(zhí)行第一線程(線程A),而CPU2(220)在執(zhí)行第二線程(線程B)。這些線程共享各種共享資源,通過一個(gè)或多個(gè)軟件鎖來控制對所述共享資源的訪問。
操作系統(tǒng)或軟件應(yīng)用250通過使用軟件鎖260來管理對共享資源270的訪問。當(dāng)線程之一獲得該鎖時(shí),接著該線程可訪問和使用共享資源270。如果軟件鎖已被第一線程獲得,則請求線程被添加到等待隊(duì)列275。在一實(shí)施例中,等待隊(duì)列275是FIFO隊(duì)列。更具體地,在此實(shí)施例中,具有同一優(yōu)先級的線程基于它們到達(dá)隊(duì)列的順序被排序(FIFO)。在此實(shí)施例中,較高優(yōu)先級的線程被放置在隊(duì)列前面,而較低優(yōu)先級的線程被放置在隊(duì)列末端。當(dāng)?shù)谝痪€程釋放該鎖時(shí),等待隊(duì)列275中列出的第一線程被喚醒,并且使用保留數(shù)據(jù)結(jié)構(gòu)280來為喚醒線程建立保留。如果當(dāng)該保留就緒時(shí)另一線程嘗試獲得該鎖,則該請求線程被置為睡眠,并被添加到等待隊(duì)列。在一實(shí)施例中,在其它線程嘗試獲得該鎖之后,該保留被清除。
圖3是示出對保留的使用如何防止急需嘗試使用鎖的過程的圖。圖3中所示的處理和圖1中所示的現(xiàn)有技術(shù)描述中示出的處理之間的比較揭示出本發(fā)明減小或消除了急需共享資源的線程。
在300開始第一線程的處理部分的描述,而在301開始第二線程的處理部分的描述。在步驟305,第一線程獲得特定鎖并接著通過執(zhí)行使用被該鎖控制的資源的工作來開始步驟310。在第一線程已獲得鎖之后、但是在第一線程已釋放該鎖之前的某個(gè)時(shí)間,第二線程請求同一軟件鎖(步驟315)。在步驟320,鎖管理器注意到該鎖已被(第一線程)獲得,于是在步驟325,第二線程被置為睡眠,并被添加到等待隊(duì)列275。
在第二線程被置為睡眠并被添加到等待隊(duì)列之后的某個(gè)時(shí)間,第一線程釋放該鎖(步驟340)。第一線程釋放該鎖導(dǎo)致第二線程喚醒(步驟345),并且第二線程從等待隊(duì)列275中移除。此外,鎖管理器為第二線程設(shè)置對該鎖的保留。在第二線程正在喚醒的時(shí)候,在步驟350第一線程執(zhí)行不需要由軟件鎖控制的共享資源的工作。但是,在第二線程完全喚醒并請求該鎖(步驟365)之前,第一線程再次需要訪問共享資源,并在步驟355再次請求鎖。不過即使該鎖可用,但是鎖管理器注意到已為另一線程設(shè)置了對該鎖的保留。鎖管理器比較第一線程(進(jìn)行請求的線程)的線程標(biāo)識符和存儲在保留280中的線程標(biāo)識符(為第二線程設(shè)置的)。由于兩個(gè)線程標(biāo)識符不匹配,所以第一線程被置為睡眠,并被添加到等待隊(duì)列,并且保留被清除(步驟360)。現(xiàn)在,當(dāng)?shù)诙€程喚醒并在步驟365請求該鎖時(shí),該鎖仍舊可用,并且第二線程能夠在步驟370獲得該鎖。同樣,當(dāng)?shù)诙€程釋放該鎖時(shí),將為第一線程建立保留,因?yàn)榈谝痪€程正在睡眠并在等待隊(duì)列中等待,這樣給第一線程更好的機(jī)會來獲得該鎖。
圖4是示出當(dāng)接收到對于鎖的請求時(shí)采取的步驟的流程圖。處理在400開始,在步驟405,接收對鎖的請求。確定所請求的鎖是否被保留(決策410)。如果所請求的鎖被保留,則決策410分叉到其上的“是”分支415,另外確定該鎖是否被請求線程所保留(決策420)。通過比較請求線程的標(biāo)識符和對應(yīng)于保留280的線程標(biāo)識符而做出此確定。如果鎖被請求線程所保留,則決策420分叉到其上的“是”分支425,在步驟430,保留280被清除,并且在所述處理在步驟495結(jié)束之前,在步驟445通過把請求者的線程標(biāo)識符寫到鎖數(shù)據(jù)結(jié)構(gòu)260而由請求者獲得該鎖。
返回決策420,如果該鎖被保留,但不是由請求線程所保留,則決策420分叉到其上的“否”分支455,在步驟460,保留280被清除,并且在所述處理在499結(jié)束之前,請求線程被置為睡眠,并被添加到等待隊(duì)列275。返回決策410,如果該鎖未被保留,則決策410分叉到其上的“否”分支470,另外確定該鎖是否當(dāng)前可用(決策475)。如果該鎖當(dāng)前可用,則決策475分叉到其上的“是”分支480,在所述處理在495結(jié)束之前,在步驟445通過把請求者的線程標(biāo)識符寫到鎖數(shù)據(jù)結(jié)構(gòu)260而由請求者獲得該鎖。另一方面,如果該鎖當(dāng)前不可用,則決策475分叉到其上的“否”分支485,在所述處理在499結(jié)束之前,在步驟490,請求者被置為睡眠,并被添加到等待隊(duì)列275。
圖5是示出當(dāng)保持鎖的線程釋放該鎖時(shí)采取的步驟的流程圖。處理在500開始,在步驟510,保持鎖260的第一線程釋放該鎖。在步驟520,鎖260被清除,使得該鎖不再被分配給該線程。
確定等待隊(duì)列275中是否存在正等待該鎖的一個(gè)或多個(gè)線程(決策530)。如果不存在正等待該鎖的線程,則決策530分叉到其上的“否”分支535,其繞過剩余步驟,并且處理在595結(jié)束。另一方面,如果一個(gè)或多個(gè)線程正等待該鎖,則決策530分叉到其上的“是”分支540,在步驟550,在等待隊(duì)列275中列出的下一線程被選擇。在步驟560,通過把所選擇線程的標(biāo)識符寫到保留數(shù)據(jù)結(jié)構(gòu)280而為所選擇線程設(shè)置保留。在步驟570,所選擇線程被喚醒,并且在步驟580從等待隊(duì)列275中移除所選擇線程。隨后處理在595結(jié)束。
圖6示出信息處理系統(tǒng)601,其是能夠執(zhí)行此處所述的計(jì)算操作的計(jì)算機(jī)系統(tǒng)的簡化示例。計(jì)算機(jī)系統(tǒng)601包括耦合于主機(jī)總線602的處理器600。二級(L2)高速緩沖存儲器604也耦合于主機(jī)總線602。主機(jī)到PCI橋606耦合于主存儲器608,包括高速緩沖存儲器和主存儲器控制功能,并提供總線控制來處理在PCI總線610、處理器600、L2高速緩存604、主存儲器608和主機(jī)總線602之間的傳輸。主存儲器608耦合于主機(jī)到PCI橋606以及主機(jī)總線602。僅由主機(jī)處理器600使用的設(shè)備(諸如LAN卡630)耦合于PCI總線610。服務(wù)處理器接口和ISA訪問通道612提供PCI總線610和PCI總線614之間的接口。以此方式,PCI總線614與PCI總線610隔離。諸如閃速存儲器618的設(shè)備耦合于PCI總線614。在一實(shí)現(xiàn)中,閃速存儲器618包括BIOS代碼,其引入了用于多種低級系統(tǒng)功能和系統(tǒng)引導(dǎo)功能的必要的處理器可執(zhí)行代碼。
PCI總線614提供用于由主機(jī)處理器600和服務(wù)處理器616共享的多種設(shè)備(例如包括閃速存儲器618)的接口。PCI到ISA橋635提供總線控制來處理在PCI總線614、ISA總線640、通用串行總線(USB)功能645和電力管理功能655之間的傳輸,并且可包括未示出的其它功能單元,諸如實(shí)時(shí)時(shí)鐘(RTC)、DMA控制、中斷支持和系統(tǒng)管理總線支持。非易失性RAM 620附接于ISA總線640。服務(wù)處理器616包括用于在初始化步驟期間與處理器600通信的JTAG和I2C總線622。JTAG/I2C總線622也耦合于L2高速緩存604、主機(jī)到PCI橋606和主存儲器608,其提供處理器、服務(wù)處理器、L2高速緩存、主機(jī)到PCI橋以及主存儲器之間的通信路徑。服務(wù)處理器616也訪問用于給信息處理設(shè)備601斷電的系統(tǒng)電力資源。
外圍設(shè)備和輸入/輸出(I/O)設(shè)備可附接于多種接口(例如,耦合于ISA總線640的并行接口662、串行接口664、鍵盤接口668和鼠標(biāo)接口670)??商鎿Q地,許多I/O接口可被附接于ISA總線640的超級I/O控制器(未示出)所容納。
為了將計(jì)算機(jī)系統(tǒng)601附接于另一計(jì)算機(jī)系統(tǒng)以便在網(wǎng)絡(luò)上拷貝文件,LAN卡630耦合于PCI總線610。類似地,為了將計(jì)算機(jī)系統(tǒng)601連接于ISP以便使用電話線路連接而連接到因特網(wǎng),調(diào)制解調(diào)器675連接于串行端口664和PCI到ISA橋635。
盡管圖6中所述的計(jì)算機(jī)系統(tǒng)能夠執(zhí)行此處所述的過程,但該計(jì)算機(jī)系統(tǒng)是計(jì)算機(jī)系統(tǒng)的一個(gè)簡單示例。本領(lǐng)域技術(shù)人員將理解,許多其它計(jì)算機(jī)系統(tǒng)設(shè)計(jì)能夠執(zhí)行此處所述的過程。
本發(fā)明的優(yōu)選實(shí)現(xiàn)之一是客戶應(yīng)用,即,代碼模塊中的指令集(程序代碼)或其它描述功能的材料,其例如可以駐留于計(jì)算機(jī)的隨機(jī)存取存儲器中。在被計(jì)算機(jī)需要之前。指令集可被存儲在另一計(jì)算機(jī)存儲器中,例如在硬盤驅(qū)動器中或在可移除存儲器(諸如光盤(最終在CD-ROM中使用)或軟盤(最終在軟盤驅(qū)動器中使用))中,或者經(jīng)由因特網(wǎng)或其它計(jì)算機(jī)網(wǎng)絡(luò)下載。因此,本發(fā)明可被實(shí)現(xiàn)為在計(jì)算機(jī)中使用的計(jì)算機(jī)程序產(chǎn)品。此外,盡管所述的各種方法在由軟件選擇性地啟動或重新配置的通用計(jì)算機(jī)中便利地實(shí)現(xiàn),但本領(lǐng)域普通技術(shù)人員也將認(rèn)識到,所述方法可用硬件、固件或被構(gòu)建執(zhí)行所需方法步驟的更專用的裝置來執(zhí)行。描述功能的材料是將功能給予機(jī)器的信息。描述功能的材料包括但不限于計(jì)算機(jī)程序、指令、規(guī)則、事實(shí)、可計(jì)算功能的定義、對象和數(shù)據(jù)結(jié)構(gòu)。
盡管已示出和描述了本發(fā)明的特定實(shí)施例,但是對于本領(lǐng)域技術(shù)人員來說將很明顯,基于此處的講授,可以做出改變和修改而不會背離本發(fā)明及其更廣泛的方面。因此,權(quán)利要求將在其范圍內(nèi)包含所有這樣的改變和修改,其均落在本發(fā)明的真正精神和范圍內(nèi)。此外,應(yīng)理解,本發(fā)明僅由權(quán)利要求所限定。本領(lǐng)域技術(shù)人員將理解,如果預(yù)定了所引入的權(quán)利要求要素的特定數(shù)量,則該預(yù)定將在權(quán)利要求中明確闡明,并且在沒有這樣的闡明的情況下不存在任何限制。對于非限制性示例,作為對理解的幫助,權(quán)利要求包含對介紹性短語“至少一個(gè)”以及“一個(gè)或多個(gè)”的使用,以便介紹權(quán)利要求要素。不過,對這些短語的使用不應(yīng)被解釋為暗示由不定冠詞“a”或“an”對權(quán)利要求要素的介紹把包含這些被介紹的權(quán)利要求要素的任何特定權(quán)利要求限制為僅包含一個(gè)這樣的要素的發(fā)明,即使當(dāng)同一權(quán)利要求包括介紹性短語“一個(gè)或多個(gè)”或“至少一個(gè)”以及諸如“a”或“an”的不定冠詞時(shí)也是如此;在權(quán)利要求中使用定冠詞時(shí)也是如此。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)現(xiàn)的方法,包括由第一線程釋放軟件鎖;在所述釋放之時(shí)標(biāo)識正等待所述軟件鎖的第二線程;響應(yīng)于所述標(biāo)識由所述第二線程建立對所述軟件鎖的保留;響應(yīng)于所述釋放喚醒所述第二線程;在建立所述保留之后并在所述軟件鎖已被所述第二線程獲得之前,接收不是所述第二線程的第一請求線程對于所述軟件鎖的第一請求;以及響應(yīng)于所述第二線程具有等于或優(yōu)于所述第一請求線程的優(yōu)先級,拒絕所述請求,并將所述第一請求線程置為睡眠。
2.根據(jù)權(quán)利要求1所述的方法,還包括響應(yīng)于接收到所述第一請求,清除所述保留。
3.根據(jù)權(quán)利要求1所述的方法,還包括在所述清除之后并在所述軟件鎖已經(jīng)被所述第二線程請求之前,接收不是所述第二線程的第二請求線程對于所述軟件鎖的第二請求;以及響應(yīng)于所述第二請求,允許所述第二請求線程獲得所述軟件鎖。
4.根據(jù)權(quán)利要求1所述的方法,還包括在建立所述保留之后,接收所述第二線程對于所述軟件鎖的請求;響應(yīng)于所述請求,允許所述第二線程獲得所述軟件鎖;以及響應(yīng)于接收到所述請求,清除所述保留。
5.根據(jù)權(quán)利要求1所述的方法,還包括在建立所述保留之后,接收請求線程對于所述軟件鎖的請求;比較所述請求線程的線程標(biāo)識符和所述第二線程的線程標(biāo)識符;響應(yīng)于所述請求線程的線程標(biāo)識符等于所述第二線程的線程標(biāo)識符允許所述請求線程獲得所述軟件鎖;以及清除所述保留;以及響應(yīng)于所述請求線程的線程標(biāo)識符不等于所述第二線程的線程標(biāo)識符拒絕所述請求;將所述請求線程置為睡眠;以及清除所述保留。
6.根據(jù)權(quán)利要求1所述的方法,還包括從等待隊(duì)列中選擇對應(yīng)于所述第二線程的線程標(biāo)識符,其中所述等待隊(duì)列包括對應(yīng)于正等待所述軟件鎖的線程的一個(gè)或多個(gè)線程標(biāo)識符;以及從所述等待隊(duì)列中移除所選擇的線程標(biāo)識符。
7.根據(jù)權(quán)利要求1所述的方法,還包括由所述第二線程釋放所述軟件鎖;在所述軟件鎖已經(jīng)被所述第二線程釋放之后,接收請求線程對于所述軟件鎖的請求;響應(yīng)于所述軟件鎖未被保留響應(yīng)于所述軟件鎖可用,允許所述請求線程獲得所述軟件鎖;以及響應(yīng)于所述軟件鎖不可用,將所述請求線程置為睡眠,并將所述請求線程的標(biāo)識符添加到等待隊(duì)列;以及響應(yīng)于所述軟件鎖被保留響應(yīng)于所述保留是為了所述請求線程,清除所述保留,并允許所述請求線程獲得所述軟件鎖;以及響應(yīng)于所述保留不是為了所述請求線程,清除所述保留,將所述請求線程置為睡眠,并將所述請求線程的標(biāo)識符添加到所述等待隊(duì)列。
8.一種信息處理系統(tǒng),包括一個(gè)或多個(gè)處理器;可由所述處理器訪問的存儲器;存儲于所述存儲器中并由所述處理器執(zhí)行的多個(gè)線程,包括第一線程和第二線程;控制對資源的訪問的軟件鎖;以及指令集,其被所述處理器執(zhí)行用來執(zhí)行以下動作由所述第一線程釋放所述軟件鎖;在所述釋放之時(shí)標(biāo)識正等待所述軟件鎖的第二線程;響應(yīng)于所述標(biāo)識由所述第二線程建立對所述軟件鎖的保留;響應(yīng)于所述釋放喚醒所述第二線程;在建立所述保留之后并在所述軟件鎖已被所述第二線程獲得之前,接收不是所述第二線程的第一請求線程對于所述軟件鎖的第一請求;以及響應(yīng)于所述第二線程具有等于或優(yōu)于所述第一請求線程的優(yōu)先級,拒絕所述請求,并將所述第一請求線程置為睡眠。
9.根據(jù)權(quán)利要求8所述的信息處理系統(tǒng),還包括響應(yīng)于接收到所述第一請求,清除所述保留。
10.根據(jù)權(quán)利要求8所述的信息處理系統(tǒng),還包括在所述清除之后并在所述軟件鎖已經(jīng)被所述第二線程請求之前,接收不是所述第二線程的第二請求線程對于所述軟件鎖的第二請求;以及響應(yīng)于所述第二請求,允許所述第二請求線程獲得所述軟件鎖。
11.根據(jù)權(quán)利要求8所述的信息處理系統(tǒng),還包括在建立所述保留之后,接收所述第二線程對于所述軟件鎖的請求;響應(yīng)于所述請求,允許所述第二線程獲得所述軟件鎖;以及響應(yīng)于接收到所述請求,清除所述保留。
12.根據(jù)權(quán)利要求8所述的信息處理系統(tǒng),還包括在建立所述保留之后,接收請求線程對于所述軟件鎖的請求;比較所述請求線程的線程標(biāo)識符和所述第二線程的線程標(biāo)識符;響應(yīng)于所述請求線程的線程標(biāo)識符等于所述第二線程的線程標(biāo)識符允許所述請求線程獲得所述軟件鎖;以及清除所述保留;以及響應(yīng)于所述請求線程的線程標(biāo)識符不等于所述第二線程的線程標(biāo)識符拒絕所述請求;將所述請求線程置為睡眠;以及清除所述保留。
13.根據(jù)權(quán)利要求8所述的信息處理系統(tǒng),還包括從等待隊(duì)列中選擇對應(yīng)于所述第二線程的線程標(biāo)識符,其中所述等待隊(duì)列包括對應(yīng)于正等待所述軟件鎖的線程的一個(gè)或多個(gè)線程標(biāo)識符;以及從所述等待隊(duì)列中移除所選擇的線程標(biāo)識符。
全文摘要
提供了一種用于為等待線程保留軟件鎖的系統(tǒng)和方法。當(dāng)軟件鎖被第一線程釋放時(shí),正等待由所述軟件鎖控制的相同資源的第二線程被喚醒。此外,為所述第二線程建立對所述軟件鎖的保留。在建立所述保留之后,如果所述鎖可用,并由除了所述第二線程之外的線程所請求,則所述請求線程被拒絕、被添加到等待隊(duì)列、以及被置為睡眠。此外,所述保留被清除。在所述保留已被清除后,所述鎖將被授予請求所述鎖的下一線程。
文檔編號G06F9/46GK1983193SQ200610146578
公開日2007年6月20日 申請日期2006年11月15日 優(yōu)先權(quán)日2005年12月12日
發(fā)明者A·鄧希, J·M·阿卡帕蒂, M·阿卡帕蒂, D·米歇爾 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
亚东县| 双辽市| 清河县| 石阡县| 措美县| 高淳县| 肇庆市| 营山县| 望谟县| 乌鲁木齐县| 定州市| 调兵山市| 高青县| 宜丰县| 凌海市| 司法| 固安县| 龙山县| 通化县| 鸡西市| 耒阳市| 勐海县| 鹤岗市| 淅川县| 龙山县| 通化市| 玛多县| 宜城市| 农安县| 军事| 天水市| 信阳市| 新平| 马鞍山市| 社会| 沁源县| 古交市| 泸定县| 常德市| 林甸县| 鄢陵县|