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

一種基于延時(shí)策略的軟件事務(wù)內(nèi)存的實(shí)現(xiàn)方法

文檔序號(hào):6575768閱讀:204來(lái)源:國(guó)知局
專(zhuān)利名稱:一種基于延時(shí)策略的軟件事務(wù)內(nèi)存的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明涉及基于多處理器系統(tǒng)軟件事物內(nèi)存的實(shí)現(xiàn)技術(shù),特別是涉及一種基于延時(shí)策略 的軟件事務(wù)內(nèi)存的實(shí)現(xiàn)方法。
背景技術(shù)
在并行計(jì)算的多線程編程模型中,不可避免地會(huì)引入如何保證共享數(shù)據(jù)同步的問(wèn)題。當(dāng) 前,鎖機(jī)制是實(shí)現(xiàn)對(duì)共享數(shù)據(jù)互斥訪問(wèn)較常用的方法。使用鎖機(jī)制的過(guò)程一般是這樣的程 序員首先正確地識(shí)別出算法中的并行性,然后編寫(xiě)代碼將獨(dú)立的任務(wù)分配到并行機(jī)上,通常 是一個(gè)處理器上運(yùn)行一個(gè)線程。對(duì)于必須要順序執(zhí)行的任務(wù),比如對(duì)共享資源的更新操作, 程序員必須使用同步機(jī)制來(lái)協(xié)調(diào)線程間的執(zhí)行順序。這時(shí),程序員就使用互斥鎖來(lái)創(chuàng)建臨界 區(qū),保證在某個(gè)時(shí)刻只允許一個(gè)線程進(jìn)入訪問(wèn)共享資源。為了保證始終能互斥訪問(wèn)共享數(shù)據(jù) 結(jié)構(gòu),程序員必須使用鎖來(lái)協(xié)調(diào)臨界區(qū)內(nèi)的數(shù)據(jù)訪問(wèn)。但是鎖會(huì)帶來(lái)很多額外的問(wèn)題,使程 序設(shè)計(jì)變得復(fù)雜而費(fèi)時(shí)。主要的問(wèn)題有死鎖、護(hù)航、優(yōu)先級(jí)反轉(zhuǎn)。
由于這些問(wèn)題的存在,基于鎖的并行編程對(duì)于一般的程序員來(lái)說(shuō)并不是一個(gè)很好的選 擇,特別是隨著多核時(shí)代的到來(lái)。
同時(shí),研究人員也在不斷尋找代替鎖策略的更先進(jìn)、更高效的方案。其中最有前途、最 熱門(mén)的當(dāng)屬事務(wù)內(nèi)存。在事務(wù)內(nèi)存模型中,程序員將多條訪問(wèn)共享內(nèi)存的語(yǔ)句組成一個(gè)事務(wù), 同基于鎖的臨界區(qū)一樣,事務(wù)內(nèi)對(duì)數(shù)據(jù)的更新從其他事務(wù)看來(lái)是瞬間發(fā)生的。但是,跟基于 鎖的代碼不同的是,事務(wù)內(nèi)存的原子性不是通過(guò)互斥來(lái)保證的,而是通過(guò)樂(lè)觀的并行執(zhí)行并 在發(fā)生非線性操作時(shí)執(zhí)行回滾操作的方式來(lái)保證原子性。因此,事務(wù)內(nèi)存只在事務(wù)發(fā)生沖突 時(shí)使用相應(yīng)的沖突仲裁策略來(lái)同步并行操作。目前,事務(wù)內(nèi)存可以從硬件和軟件加以實(shí)現(xiàn)。
硬件事務(wù)內(nèi)存雖然提供了良好的性能,但是卻缺乏一般性。而軟件事務(wù)內(nèi)存通過(guò)軟件的 方式實(shí)現(xiàn)事務(wù)內(nèi)存機(jī)制,不需要額外的硬件支持,所有的機(jī)制全是通過(guò)軟件實(shí)現(xiàn)的。軟件事 務(wù)內(nèi)存提供了更好的適應(yīng)性和普遍性。軟件事務(wù)內(nèi)存可以很容易地適用于不同的任務(wù)量。同 時(shí),軟件事務(wù)內(nèi)存能在增加復(fù)雜度的情況下提供對(duì)無(wú)界事務(wù)的支持,因?yàn)?,軟件不?huì)受到數(shù) 據(jù)cache大小和其他片上資源的限制。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中的不足,提供一種基于延時(shí)策略的軟件事務(wù)內(nèi)存的 實(shí)現(xiàn)方法。
本發(fā)明解決其技術(shù)問(wèn)題采用的技術(shù)方案如下-
1) 事務(wù)創(chuàng)建
軟件事務(wù)的執(zhí)行過(guò)程包括創(chuàng)建事務(wù)、進(jìn)行讀寫(xiě)操作、檢測(cè)沖突、等待提交和提交; 本方法為軟件事務(wù)提供了四個(gè)狀態(tài)Active, Aborted, Committing和Committed,分
別表示事務(wù)正在運(yùn)行,事務(wù)已經(jīng)終止,軟件事務(wù)已經(jīng)完成對(duì)對(duì)象的操作等待提交和事務(wù)己經(jīng)
提交成功;
在程序執(zhí)行過(guò)程中碰到需要對(duì)一個(gè)對(duì)象進(jìn)行讀寫(xiě)操作時(shí)事務(wù)被創(chuàng)建,事務(wù)是一串連續(xù)的 對(duì)同一個(gè)對(duì)象進(jìn)行操作的指令集合;在事務(wù)Si中,用Si表示創(chuàng)建事務(wù)i時(shí)的系統(tǒng)時(shí)間,作 為事務(wù)i的開(kāi)始時(shí)間;用flag表示事務(wù)i是否有讀寫(xiě)操作,如果有,則flag為真,如果沒(méi) 有,則flag為假;
2) 事務(wù)沖突產(chǎn)生
在事務(wù)進(jìn)行讀寫(xiě)操作時(shí),有兩種情況會(huì)導(dǎo)致軟件事務(wù)間的沖突 a.—事務(wù)進(jìn)行讀操作,在獲取數(shù)據(jù)的過(guò)程中,發(fā)現(xiàn)有其他事務(wù)己經(jīng)在寫(xiě)該數(shù)據(jù); b.—事務(wù)進(jìn)行寫(xiě)操作,在獲取數(shù)據(jù)的過(guò)程中,發(fā)現(xiàn)有其他事務(wù)已經(jīng)在讀或?qū)懺摂?shù)據(jù);
3) 事務(wù)沖突延時(shí)仲裁
在事務(wù)i和j發(fā)生沖突時(shí),采用延遲策略進(jìn)行仲裁,仲裁方式如下
a. 當(dāng)S"Sj或者Si :Sj時(shí),延遲策略就將j事務(wù)終止;
b. 當(dāng)Si〉S」時(shí),延遲策略就讓事務(wù)i等待一定的時(shí)間,在指定的時(shí)間T過(guò)后,去讀取 事務(wù)j的狀態(tài),如果事務(wù)j的狀態(tài)是Committed,表明事務(wù)j已經(jīng)提交了,這時(shí)沖突在沒(méi)有 中止任何事務(wù)的情況下得到了解決;如果事務(wù)j的狀態(tài)是Active,則將事務(wù)j的標(biāo)記字段 flag設(shè)置為False,事務(wù)再等待相同的時(shí)間T,如果在這段時(shí)間內(nèi),事務(wù)j進(jìn)行了讀寫(xiě)操作, 則將事務(wù)j的flag標(biāo)記字段設(shè)置為T(mén)rue,在T時(shí)間過(guò)后,如果事務(wù)j的狀態(tài)仍然為Active 而且flag仍然為False,說(shuō)明這段時(shí)間內(nèi)事務(wù)j沒(méi)有讀寫(xiě)操作,這樣的話,延遲策略將事 務(wù)j終止;否則,事務(wù)i自己終止;
4) 事務(wù)提交或者終止
事務(wù)i和j的沖突經(jīng)過(guò)延遲策略仲裁以后,事務(wù)i和j中將有一個(gè)事務(wù)被終止,另外一 個(gè)事務(wù)繼續(xù)執(zhí)行,具體情況分為兩種,分別如下-
a. 事務(wù)i終止,則把事務(wù)i的狀態(tài)置為aborted;
b. 事務(wù)j終止,事務(wù)i繼續(xù)執(zhí)行;如果事務(wù)i又和另外一個(gè)事務(wù)k沖突,則再次進(jìn)行事務(wù)沖突延時(shí)仲裁;
如果事務(wù)i讀寫(xiě)操作已經(jīng)完成,則把事務(wù)i的狀態(tài)置為committing,等待提交; 本發(fā)明與背景技術(shù)相比,具有的有益的效果是-
本發(fā)明采用延時(shí)策略來(lái)仲裁事務(wù)間發(fā)生沖突時(shí)的情況。這樣的沖突仲裁策略簡(jiǎn)單高效, 有效地緩解了由于仲裁策略不當(dāng)而造成的效率低下,提高了軟件事物內(nèi)存系統(tǒng)的性能。


圖1是軟件事務(wù)的執(zhí)行過(guò)程示意圖; 圖2是軟件事務(wù)的狀態(tài)轉(zhuǎn)化示意圖; 圖3是沖突事務(wù)的實(shí)例示意圖4是當(dāng)Si 〈Sj或者Si zSj時(shí)延時(shí)策略的示意圖; 圖5是當(dāng)Si 〉Sj時(shí)延時(shí)策略的示意圖。
具體實(shí)施例方式
在實(shí)施基于延時(shí)策略的軟件事務(wù)內(nèi)存的實(shí)現(xiàn)方法時(shí),具體方式如下
1) 事務(wù)創(chuàng)建
軟件事務(wù)的執(zhí)行過(guò)程包括創(chuàng)建事務(wù)、進(jìn)行讀寫(xiě)操作、檢測(cè)沖突、等待提交和提交,整 個(gè)過(guò)程如圖l所示;
本方法為軟件事務(wù)提供了四個(gè)狀態(tài)Active, Aborted, Committing和Committed,分 別表示事務(wù)正在運(yùn)行,事務(wù)已經(jīng)終止,軟件事務(wù)己經(jīng)完成對(duì)對(duì)象的操作等待提交和事務(wù)已經(jīng) 提交成功,如圖2所示;
在程序執(zhí)行過(guò)程中碰到需要對(duì)一個(gè)對(duì)象進(jìn)行讀寫(xiě)操作時(shí)事務(wù)被創(chuàng)建,事務(wù)是一串連續(xù)的 對(duì)同一個(gè)對(duì)象進(jìn)行操作的指令集合;在事務(wù)i中,用j表示創(chuàng)建事務(wù)i時(shí)的系統(tǒng)時(shí)間,作為 事務(wù)i的開(kāi)始時(shí)間;用flag表示事務(wù)i是否有讀寫(xiě)操作,如果有,則flag為真,如果沒(méi)有, 則flag為假;
以Java程序?yàn)槔趯?duì)鏈表List進(jìn)行操作時(shí)產(chǎn)生兩個(gè)事務(wù),事務(wù)1和事務(wù)2(如圖3 所示)。事務(wù)2先于事務(wù)1創(chuàng)建,即S1〉S2,事務(wù)1和事務(wù)2的flag字段的初始值都為假, 表示事務(wù)開(kāi)始時(shí)都還未進(jìn)行讀寫(xiě)操作。等待時(shí)間T設(shè)置為lms。
2) 事務(wù)沖突產(chǎn)生
在事務(wù)進(jìn)行讀寫(xiě)操作時(shí),有兩種情況會(huì)導(dǎo)致軟件事務(wù)間的沖突-
a. 本事務(wù)進(jìn)行讀操作,在獲取數(shù)據(jù)的過(guò)程中,發(fā)現(xiàn)有其他事務(wù)己經(jīng)在寫(xiě)該數(shù)據(jù);
b. 本事務(wù)進(jìn)行寫(xiě)操作,在獲取數(shù)據(jù)的過(guò)程中,發(fā)現(xiàn)有其他事務(wù)已經(jīng)在讀或?qū)懺摂?shù)據(jù)。 以事務(wù)1和事務(wù)2為例,事務(wù)1和事務(wù)2開(kāi)始各自運(yùn)行,事務(wù)2對(duì)ListList, find(c)讀操作,把事務(wù)2的flag字段置為T(mén)rue,當(dāng)事務(wù)1試圖對(duì)鏈表List進(jìn)行 List, insert (a)操作時(shí)發(fā)現(xiàn)事務(wù)2已經(jīng)對(duì)鏈表List進(jìn)行了讀操作,這時(shí)就產(chǎn)生了沖突。 3)事務(wù)沖突延時(shí)仲裁
在事務(wù)i和j發(fā)生沖突時(shí),采用延遲策略進(jìn)行仲裁,仲裁方式如下
a. 當(dāng)Si〈Sj或者Si二Sj時(shí),延遲策略就將與j事務(wù)終止,如圖4所示;
b. 當(dāng)Si〉Sj時(shí),延遲策略就讓事務(wù)i等待一定的時(shí)間,在指定的時(shí)間T過(guò)后,去讀取 事務(wù)j的狀態(tài),如果事務(wù)j的狀態(tài)是Committed,表明事務(wù)j已經(jīng)提交了,這時(shí)沖突在沒(méi)有 中止任何事務(wù)的情況下得到了解決;如果事務(wù)j的狀態(tài)是Active,則將事務(wù)j的標(biāo)記字段 flag設(shè)置為False,事務(wù)再等待相同的時(shí)間T,如果在這段時(shí)間內(nèi),事務(wù)j進(jìn)行了讀寫(xiě)操 作,則將事務(wù)j的flag標(biāo)記字段設(shè)置為T(mén)rue,在T時(shí)間過(guò)后,如果事務(wù)j的狀態(tài)仍然為 Active而且flag仍然為False,說(shuō)明這段時(shí)間內(nèi)事務(wù)j沒(méi)有讀寫(xiě)操作,這樣的話,延遲策 略將事務(wù)j終止;否則,事務(wù)ji己終止,如圖5所示。
以事務(wù)i和事務(wù)2為例,因?yàn)镾1〉S2,所以事務(wù)l就等待lms,再去看事務(wù)2的狀態(tài), 發(fā)現(xiàn)事務(wù)2還是Active,就把事務(wù)2的標(biāo)記字段flag置為False,事務(wù)1再等lms,因?yàn)?事務(wù)2之后對(duì)鏈表List不再有任何操作,所以事務(wù)2的flag字段仍然為Flase,因此把事 務(wù)2終止,事務(wù)l繼續(xù)執(zhí)行。 4)事務(wù)提交或者終止
事務(wù)i和j的沖突經(jīng)過(guò)延遲策略仲裁以后,事務(wù)i和j中一個(gè)事務(wù)終止,另外一個(gè)事務(wù) 繼續(xù)執(zhí)行
a. 事務(wù)i終止,則把事務(wù)i的狀態(tài)置為aborted;
b. 事務(wù)j終止,事務(wù)i繼續(xù)執(zhí)行 '
如果事務(wù)i又和另外一個(gè)事務(wù)k沖突,則回到3),再調(diào)用事務(wù)沖突延時(shí)仲裁; 如果事務(wù)i讀寫(xiě)操作已經(jīng)完成,則把事務(wù)i的狀態(tài)置為committing,等待提交。 以事務(wù)1和事務(wù)2為例,事務(wù)l繼續(xù)執(zhí)行,事務(wù)2終止,事務(wù)1之后沒(méi)有再和其他任何
事務(wù)沖突,那么事務(wù)1執(zhí)行完畢后狀態(tài)置為committing,等待提交。
最后,還需要注意的是,以上公布的僅是本發(fā)明的具體實(shí)施例。本領(lǐng)域的普通技術(shù)人
員能從本發(fā)明公開(kāi)的內(nèi)容直接導(dǎo)出或聯(lián)想到的所有變形,均應(yīng)認(rèn)為是本發(fā)明的保護(hù)范圍。
權(quán)利要求
1. 一種基于延時(shí)策略的軟件事務(wù)內(nèi)存的實(shí)現(xiàn)方法,包括以下步驟1)事務(wù)創(chuàng)建為軟件事務(wù)提供四個(gè)狀態(tài)Active,Aborted,Committing和Committed,分別表示事務(wù)正在運(yùn)行、事務(wù)已經(jīng)終止、軟件事務(wù)已經(jīng)完成對(duì)對(duì)象的操作等待提交、事務(wù)已經(jīng)提交成功;在程序執(zhí)行過(guò)程中碰到需要對(duì)一個(gè)對(duì)象進(jìn)行讀寫(xiě)操作時(shí)事務(wù)被創(chuàng)建,事務(wù)是一串連續(xù)的對(duì)同一個(gè)對(duì)象進(jìn)行操作的指令集合;在事務(wù)Si中,用Si表示創(chuàng)建事務(wù)i時(shí)的系統(tǒng)時(shí)間,作為事務(wù)i的開(kāi)始時(shí)間;用flag表示事務(wù)i是否有讀寫(xiě)操作,如果有,則flag為真,如果沒(méi)有,則flag為假;2)事務(wù)沖突產(chǎn)生在事務(wù)進(jìn)行讀寫(xiě)操作時(shí),有兩種情況會(huì)導(dǎo)致軟件事務(wù)間的沖突a. 一事務(wù)進(jìn)行讀操作,在獲取數(shù)據(jù)的過(guò)程中,發(fā)現(xiàn)有其他事務(wù)已經(jīng)在寫(xiě)該數(shù)據(jù);b. 一事務(wù)進(jìn)行寫(xiě)操作,在獲取數(shù)據(jù)的過(guò)程中,發(fā)現(xiàn)有其他事務(wù)已經(jīng)在讀或?qū)懺摂?shù)據(jù);3)事務(wù)沖突延時(shí)仲裁在事務(wù)i和j發(fā)生沖突時(shí),采用延遲策略進(jìn)行仲裁,仲裁方式如下a. 當(dāng)Si<Sj或者Si=Sj時(shí),延遲策略就將j事務(wù)終止;b. 當(dāng)Si>Sj時(shí),延遲策略就讓事務(wù)i等待一定的時(shí)間,在指定的時(shí)間T過(guò)后,去讀取事務(wù)j的狀態(tài);如果事務(wù)j的狀態(tài)是Committed,表明事務(wù)j已經(jīng)提交了,這時(shí)沖突在沒(méi)有中止任何事務(wù)的情況下得到了解決;如果事務(wù)j的狀態(tài)是Active,則將事務(wù)j的標(biāo)記字段flag設(shè)置為False,事務(wù)再等待相同的時(shí)間T,如果在這段時(shí)間內(nèi),事務(wù)j進(jìn)行了讀寫(xiě)操作,則將事務(wù)j的flag標(biāo)記字段設(shè)置為T(mén)rue;在T時(shí)間過(guò)后,如果事務(wù)j的狀態(tài)仍然為Active而且flag仍然為False,說(shuō)明這段時(shí)間內(nèi)事務(wù)j沒(méi)有讀寫(xiě)操作,這樣的話,延遲策略將事務(wù)j終止;否則,事務(wù)i自己終止;4)事務(wù)提交或者終止事務(wù)i和j的沖突經(jīng)過(guò)延遲策略仲裁以后,事務(wù)i和j中將有一個(gè)事務(wù)被終止,另外一個(gè)事務(wù)繼續(xù)執(zhí)行,具體情況分為兩種,分別如下a. 事務(wù)i終止,則把事務(wù)i的狀態(tài)置為aborted;b. 事務(wù)j終止,事務(wù)i繼續(xù)執(zhí)行;如果事務(wù)i又和另外一個(gè)事務(wù)k沖突,則再次進(jìn)行事務(wù)沖突延時(shí)仲裁;如果事務(wù)i讀寫(xiě)操作已經(jīng)完成,則把事務(wù)i的狀態(tài)置為committing,等待提交。
全文摘要
本發(fā)明涉及基于多處理器系統(tǒng)軟件事物內(nèi)存的實(shí)現(xiàn)技術(shù),旨在提供一種基于延時(shí)策略的軟件事務(wù)內(nèi)存的實(shí)現(xiàn)方法。該方法包括以下步驟事務(wù)創(chuàng)建、事務(wù)沖突產(chǎn)生、事務(wù)沖突延時(shí)仲裁、事務(wù)提交或者終止。本發(fā)明采用延時(shí)策略來(lái)仲裁事務(wù)間發(fā)生沖突時(shí)的情況。這樣的沖突仲裁策略簡(jiǎn)單高效,有效地緩解了由于仲裁策略不當(dāng)而造成的效率低下,提高了軟件事物內(nèi)存系統(tǒng)的性能。
文檔編號(hào)G06F9/46GK101510162SQ200910096959
公開(kāi)日2009年8月19日 申請(qǐng)日期2009年3月26日 優(yōu)先權(quán)日2009年3月26日
發(fā)明者喬福明, 劉敬偉, 滿 曹, 王春昊, 章鐵飛, 繆良華, 劍 陳, 陳天洲, 項(xiàng)凌翔, 馬建良 申請(qǐng)人:浙江大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
富平县| 原阳县| 黎平县| 怀化市| 莆田市| 宜州市| 井陉县| 玉环县| 彭州市| 内江市| 井冈山市| 鹰潭市| 北安市| 探索| 德保县| 将乐县| 治县。| 库车县| 伊金霍洛旗| 新化县| 商水县| 黄冈市| 罗山县| 榆树市| 永善县| 玛多县| 浦县| 饶河县| 淮安市| 柞水县| 衡山县| 安泽县| 中卫市| 黄石市| 读书| 元阳县| 景德镇市| 富裕县| 武隆县| 浦北县| 金沙县|