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

多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)方法及系統(tǒng)的制作方法

文檔序號:6363177閱讀:149來源:國知局
專利名稱:多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)共享技術(shù)領(lǐng)域,特別涉及一種多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)方法及系統(tǒng)。
背景技術(shù)
眾所周知,為了保護(hù)共享數(shù)據(jù),需要一些同步機(jī)制,如自旋鎖(spinlock),讀寫鎖 (rwlock),它們使用起來非常簡單,而且是一種很有效的同步機(jī)制,在Linux系統(tǒng)中得到了廣泛的使用。但是隨著計(jì)算機(jī)硬件的快速發(fā)展,獲得這種鎖的開銷相對于CPU的速度在成倍地增加,原因很簡單,CPU的速度與訪問內(nèi)存的速度差距越來越大,而這種鎖使用了原子操作指令,它需要原子地訪問內(nèi)存,也就說獲得鎖的開銷與訪存速度相關(guān),因此它的開銷相對于CPU速度而言就越來越大,并且這種鎖機(jī)制的另一個(gè)問題在于其可擴(kuò)展性,在多處理器系統(tǒng)上,可擴(kuò)展性非常重要,否則根本無法發(fā)揮其性能。自旋鎖和讀寫鎖的鎖著核增加的理論性能并不理想。正是在這種背景下,一個(gè)高性能的鎖機(jī)制RCU被提出,具有很好的擴(kuò)展性,但是這種鎖機(jī)制的使用范圍比較窄,它只適用于讀多寫少的情況,如網(wǎng)絡(luò)路由表的查詢更新、設(shè)備狀態(tài)表的維護(hù)、數(shù)據(jù)結(jié)構(gòu)的延遲釋放等。Linux的RCU鎖實(shí)現(xiàn)方法為RCU (Read-Copy Update)顧名思義就是讀-拷貝修改,它是基于其原理命名的。對于被RCU保護(hù)的共享數(shù)據(jù)結(jié)構(gòu),讀數(shù)據(jù)者不需要獲得任何鎖就可以訪問它,但寫數(shù)據(jù)者在訪問它時(shí)首先拷貝一個(gè)副本,然后對副本進(jìn)行修改,最后使用一個(gè)回調(diào)(callback)機(jī)制在適當(dāng)?shù)臅r(shí)機(jī)把指向原來數(shù)據(jù)的指針重新指向新的被修改的數(shù)據(jù)。這個(gè)時(shí)機(jī)就是所有引用該數(shù)據(jù)的CPU都退出對共享數(shù)據(jù)的操作。因此RCU實(shí)際上是一種改進(jìn)的讀寫鎖(rwlock),讀數(shù)據(jù)者幾乎沒有什么同步開銷,它不需要鎖,不使用原子指令,因此不會導(dǎo)致鎖競爭,內(nèi)存延遲以及流水線停滯。不需要鎖也使得使用更容易,因?yàn)樗梨i問題就不需要考慮了。寫數(shù)據(jù)者的同步開銷比較大,它需要延遲數(shù)據(jù)結(jié)構(gòu)的釋放,復(fù)制被修改的數(shù)據(jù)結(jié)構(gòu),它也必須使用某種鎖機(jī)制同步并行的其它寫數(shù)據(jù)者的修改操作。讀數(shù)據(jù)者必須提供一個(gè)信號給寫數(shù)據(jù)者以便寫數(shù)據(jù)者能夠確定數(shù)據(jù)可以被安全地釋放或修改的時(shí)機(jī)。有一個(gè)專門的垃圾收集器來探測讀數(shù)據(jù)者的信號,一旦所有的讀數(shù)據(jù)者都已經(jīng)發(fā)送信號告知它們都不在使用被RCU保護(hù)的數(shù)據(jù)結(jié)構(gòu),垃圾收集器就調(diào)用回調(diào)函數(shù)完成最后的數(shù)據(jù)釋放或修改操作。讀數(shù)據(jù)者在訪問被RCU保護(hù)的共享數(shù)據(jù)期間不能被阻塞,這是RCU機(jī)制得以實(shí)現(xiàn)的一個(gè)基本前提,也就說當(dāng)讀數(shù)據(jù)者在引用被RCU保護(hù)的共享數(shù)據(jù)期間,讀數(shù)據(jù)者所在的 (PU不能發(fā)生上下文切換,自旋鎖(spinlock)和讀寫鎖(rwlock)都需要這樣的前提。寫數(shù)據(jù)者在訪問被RCU保護(hù)的共享數(shù)據(jù)時(shí)不需要和讀數(shù)據(jù)者競爭任何鎖,只有在有多于一個(gè)寫數(shù)據(jù)者的情況下需要獲得某種鎖以與其他寫數(shù)據(jù)者同步。寫數(shù)據(jù)者修改數(shù)據(jù)前首先拷貝一個(gè)被修改元素的副本,然后在副本上進(jìn)行修改,修改完畢后它向垃圾回收器注冊一個(gè)回調(diào)函數(shù)以便在適當(dāng)?shù)臅r(shí)機(jī)執(zhí)行真正的修改操作。等待適當(dāng)時(shí)機(jī)的這一時(shí)期稱為寬限時(shí)期 (grace period),而CPU發(fā)生了上下文切換稱為經(jīng)歷一個(gè)靜默狀態(tài)(quiescent state),寬限時(shí)期就是所有CPU都經(jīng)歷一次靜默狀態(tài)所需要的等待的時(shí)間。垃圾收集器就是在寬限時(shí)期之后調(diào)用寫數(shù)據(jù)者注冊的回調(diào)函數(shù)來完成真實(shí)的數(shù)據(jù)修改操作或數(shù)據(jù)釋放操作的?,F(xiàn)有技術(shù)的RCU的主要缺點(diǎn)為由于RCU在垃圾回收期間(下一個(gè)寬限時(shí)期內(nèi)包括垃圾回收期間),無法讓CPU進(jìn)入靜默狀態(tài),當(dāng)需要回收的資源很多,會造成下一個(gè)寬限時(shí)期很長,在較長的寬限時(shí)間內(nèi),因?yàn)榛厥詹患皶r(shí)造成對內(nèi)存資源消耗很大,嚴(yán)重情況下資源耗竭而影響業(yè)務(wù)正常運(yùn)行。另一個(gè)缺點(diǎn)是RCU為了記錄和訪問判斷寬限時(shí)期是否結(jié)束, 采用的是自旋鎖保護(hù)共享數(shù)據(jù)的方式來實(shí)現(xiàn),對于RCU鎖在對于垃圾回收及時(shí)性上有略微的性能損耗。

發(fā)明內(nèi)容
(一 )要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是如何在垃圾回收期間讓CPU進(jìn)入靜默狀態(tài),以解決在資源突發(fā)大量集中回收,造成此類資源耗竭而影響業(yè)務(wù)正常運(yùn)行的問題。( 二 )技術(shù)方案為解決上述技術(shù)問題,本發(fā)明提供了一種多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)方法, 所述方法包括以下步驟SI :設(shè)置由η個(gè)數(shù)據(jù)單元所構(gòu)成的環(huán)形鏈表,并將多核系統(tǒng)中的每個(gè)CPU分別對應(yīng)數(shù)據(jù)單元中的一位數(shù)據(jù);S2 :在當(dāng)前CPU發(fā)生了上下文切換后,進(jìn)入資源回收處理過程中,獲取當(dāng)前CPU進(jìn)入寬限時(shí)期的次數(shù),根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元,并將所述當(dāng)前數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;S3:根據(jù)所述當(dāng)前數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若沒有結(jié)束, 則執(zhí)行步驟S4,否則執(zhí)行步驟S5 ;S4:退出此次的資源回收處理過程,等待其它CPU發(fā)生上下文切換,再執(zhí)行步驟 S2 ;S5 :選擇環(huán)形鏈表中所述當(dāng)前數(shù)據(jù)單元的下一個(gè)單元;S6 :將當(dāng)前CPU記錄的寬限時(shí)期的次數(shù)加I ;S7 :通過回調(diào)函數(shù)進(jìn)行X個(gè)資源的資源回收,所述X為正整數(shù);S8 :判斷資源是否都已經(jīng)回收完畢,若是,則執(zhí)行步驟S4,否則執(zhí)行步驟S9 ;S9 :將步驟S5中選擇的下一個(gè)數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;SlO :根據(jù)步驟S5中選擇的下一個(gè)數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若是,則執(zhí)行步驟S5,否則執(zhí)行步驟S7。優(yōu)選地,步驟SI中,η取值為大于I的奇數(shù)。優(yōu)選地,步驟S2中,根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元是通過以下公式進(jìn)行選擇C = v mod η其中,C為環(huán)形鏈表中數(shù)據(jù)單元的序號,V為所述次數(shù),mod為取模運(yùn)算,η為環(huán)形鏈表中數(shù)據(jù)單元的個(gè)數(shù)。本發(fā)明還公開了一種多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)系統(tǒng),所述系統(tǒng)包括
鏈表構(gòu)建模塊,用于設(shè)置由η個(gè)數(shù)據(jù)單元所構(gòu)成的環(huán)形鏈表,并將多核系統(tǒng)中的每個(gè)CPU分別對應(yīng)數(shù)據(jù)單元中的一位數(shù)據(jù);置位模塊,用于在當(dāng)前CPU發(fā)生了上下文切換后,進(jìn)入資源回收處理過程中,獲取當(dāng)前CPU進(jìn)入寬限時(shí)期的次數(shù),根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元,并將所述當(dāng)前數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;寬限結(jié)束判斷模塊,用于根據(jù)所述當(dāng)前數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若沒有結(jié)束,則執(zhí)行退出等待模塊,否則執(zhí)行選擇模塊;退出等待模塊,用于退出此次的資源回收處理過程,等待其它CPU發(fā)生上下文切換,再執(zhí)行置位模塊;選擇模塊,用于選擇環(huán)形鏈表中所述當(dāng)前數(shù)據(jù)單元的下一個(gè)單元;次數(shù)自加模塊,用于將當(dāng)前CPU記錄的寬限時(shí)期的次數(shù)加I ;資源回收模塊,用于通過回調(diào)函數(shù)進(jìn)行X個(gè)資源的資源回收,所述X為正整數(shù);回收完畢判斷模塊,用于判斷資源是否都已經(jīng)回收完畢,若是,則執(zhí)行退出等待模塊,否則執(zhí)行再置位模塊;再置位模塊,用于將選擇模塊中選擇的下一個(gè)數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;寬限結(jié)束再判斷模塊,用于根據(jù)選擇模塊中選擇的下一個(gè)數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若是,則執(zhí)行選擇模塊,否則執(zhí)行資源回收模塊。優(yōu)選地,鏈表構(gòu)建模塊中,η取值為大于I的奇數(shù)。優(yōu)選地,置位模塊中,根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元是通過以下公式進(jìn)行選擇C = v mod η其中,C為環(huán)形鏈表中數(shù)據(jù)單元的序號,V為所述次數(shù),mod為取模運(yùn)算,η為環(huán)形鏈表中數(shù)據(jù)單元的個(gè)數(shù)。(三)有益效果本發(fā)明通過設(shè)置由數(shù)據(jù)單元組成的環(huán)形鏈表,來標(biāo)識CPU的狀態(tài),使得在垃圾回收期間,在垃圾回收的CPU進(jìn)入靜默狀態(tài)時(shí),能夠使得其他CPU同時(shí)進(jìn)行垃圾回收,解決了在資源突發(fā)大量集中回收,造成此類資源耗竭而影響業(yè)務(wù)正常運(yùn)行的問題。


圖I是按照本發(fā)明一種實(shí)施方式的多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)方法的流程圖;圖2是按照圖I所示的方法進(jìn)行處理的環(huán)形鏈表的示意圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例,對本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。圖I是按照本發(fā)明一種實(shí)施方式的多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)方法的流程圖;參照圖1,本實(shí)施方式的方法包括以下步驟
SI :設(shè)置由η個(gè)數(shù)據(jù)單元所構(gòu)成的環(huán)形鏈表,并將多核系統(tǒng)中的每個(gè)CPU分別對應(yīng)數(shù)據(jù)單元中的一位數(shù)據(jù);S2 :在當(dāng)前CPU發(fā)生了上下文切換后,進(jìn)入資源回收處理過程中,獲取當(dāng)前CPU進(jìn)入寬限時(shí)期的次數(shù),根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元,并將所述當(dāng)前數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;S3:根據(jù)所述當(dāng)前數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若沒有結(jié)束, 則執(zhí)行步驟S4,否則執(zhí)行步驟S5 ;S4:退出此次的資源回收處理過程,等待其它CPU發(fā)生上下文切換,再執(zhí)行步驟
S2;S5 :選擇環(huán)形鏈表中所述當(dāng)前數(shù)據(jù)單元的下一個(gè)單元;S6 :將當(dāng)前CPU記錄的寬限時(shí)期的次數(shù)加I ;S7 :通過回調(diào)函數(shù)進(jìn)行X個(gè)資源的資源回收,所述X為正整數(shù);S8 :判斷資源是否都已經(jīng)回收完畢,若是,則執(zhí)行步驟S4,否則執(zhí)行步驟S9 ;S9 :將步驟S5中選擇的下一個(gè)數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;SlO :根據(jù)步驟S5中選擇的下一個(gè)數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若是,則執(zhí)行步驟S5,否則執(zhí)行步驟S7。優(yōu)選地,步驟SI中,η取值為大于I的奇數(shù)。優(yōu)選地,步驟S2中,根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元是通過以下公式進(jìn)行選擇C = v mod η其中,C為環(huán)形鏈表中數(shù)據(jù)單元的序號(該序號為環(huán)形鏈表中數(shù)據(jù)單元從左到右分別為1、2.....η-1、0),V為所述次數(shù),mod為取模運(yùn)算,η為環(huán)形鏈表中數(shù)據(jù)單元的個(gè)數(shù)。實(shí)施例I下面以三個(gè)數(shù)據(jù)單元形成環(huán)形鏈表為例來說明本發(fā)明,但不限定本發(fā)明的保護(hù)范圍,其中每個(gè)數(shù)據(jù)單元具有八個(gè)比特位,且均基于比特位形式分別表示某個(gè)CPU是否進(jìn)入
靜默狀態(tài)。本實(shí)施例的方法為SlOl :設(shè)置由3個(gè)數(shù)據(jù)單元所構(gòu)成的環(huán)形鏈表,并將多核系統(tǒng)中的八個(gè)CPU分別對應(yīng)數(shù)據(jù)單元(每個(gè)數(shù)據(jù)單元具有八個(gè)比特位,)中的一位數(shù)據(jù)。S102 :當(dāng)某個(gè)CPU發(fā)生了上下文切換后,進(jìn)入多核資源回收鎖處理過程中,獲取當(dāng)前CPU進(jìn)入寬限周期的次數(shù),根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元,并將所述當(dāng)前數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;置位時(shí)利用次數(shù)的奇偶特點(diǎn)設(shè)置寬限周期數(shù)據(jù)單元內(nèi)的比特位來標(biāo)識此CPU已經(jīng)進(jìn)入靜默狀態(tài),具體為當(dāng)CPU進(jìn)入次數(shù)為奇數(shù)次,是將對應(yīng)比特位由“I”置為“O” ;若為偶數(shù)次,是將比特位由“O”置為“I”。參照圖2,所述三個(gè)數(shù)據(jù)單元的初值從左到右分別為“11111111”、“00000000”、 以及“11111111”。當(dāng)?shù)谝淮芜M(jìn)入寬限時(shí)期,由于是奇數(shù)次,在所有的CPU進(jìn)入靜默狀態(tài)時(shí),都會將環(huán)形鏈表的表頭的數(shù)據(jù)單元(三個(gè)數(shù)據(jù)單元中從左至右的第一個(gè))內(nèi)代表自身的比特位從I 置為O。
當(dāng)?shù)诙芜M(jìn)入寬限時(shí)期,由于是偶數(shù)次,所有的CPU進(jìn)入靜默狀態(tài)時(shí),都會將環(huán)形鏈表的表頭的下一個(gè)數(shù)據(jù)單元(三個(gè)數(shù)據(jù)單元中從左至右的第二個(gè))內(nèi)代表自身的比特位從O置為I。當(dāng)?shù)谌芜M(jìn)入寬限時(shí)期,由于是奇數(shù)次,所有的CPU進(jìn)入靜默狀態(tài)時(shí),都會將環(huán)形鏈表的最后一個(gè)數(shù)據(jù)單元(三個(gè)數(shù)據(jù)單元中從左至右的第三個(gè))內(nèi)代表自身的比特位從I 置為O。當(dāng)?shù)谒拇芜M(jìn)入寬限時(shí)期,由于是偶數(shù)次,所有的CPU當(dāng)進(jìn)入靜默狀態(tài),都會將環(huán)形鏈表的表頭的數(shù)據(jù)單元(由于環(huán)形鏈表,又回到了三個(gè)數(shù)據(jù)單元中從左至右的第一個(gè))內(nèi)的代表自身比特位從O置為I。依次類推,就能夠根據(jù)進(jìn)入寬限時(shí)期的奇偶次數(shù)特點(diǎn),將靜默狀態(tài)記錄到環(huán)形鏈表相應(yīng)的數(shù)據(jù)單元內(nèi),以便判斷本次寬限周期是否結(jié)束。當(dāng)利用此方法實(shí)現(xiàn),可以達(dá)到寬限時(shí)期的數(shù)據(jù)訪問免鎖保護(hù)。S103:判斷當(dāng)前CPU對應(yīng)記錄的寬限周期的數(shù)據(jù)單元值是否已經(jīng)表示為此周期結(jié)束,主要根據(jù)當(dāng)前CPU記錄進(jìn)入寬限周期的次數(shù)。如果為奇數(shù)次,那么當(dāng)寬限周期中數(shù)據(jù)單元值中所有比特位都為1,表示所有CPU都進(jìn)入了靜默狀態(tài)且此寬限周期結(jié)束。如果為偶數(shù)次,那么當(dāng)寬限周期中數(shù)據(jù)單元值中所有比特位都為0,表示所有CPU都進(jìn)入了靜默狀態(tài)且此寬限周期結(jié)束。如果當(dāng)前寬限周期沒有結(jié)束,進(jìn)入步驟S104,如果結(jié)束進(jìn)入步驟S105。S104:退出此次的資源回收處理,等待下一次的CPU發(fā)生上下文切換,再進(jìn)入 S102。S105 :選擇環(huán)形鏈表中所述當(dāng)前數(shù)據(jù)單元的下一個(gè)單元,表示當(dāng)前CPU進(jìn)入下一個(gè)寬限周期內(nèi)。S106 :將當(dāng)前CPU記錄的寬限周期次數(shù)加I。S107 :通過回調(diào)函數(shù)將注冊需要回收的資源進(jìn)行回收,一次性僅回收N個(gè)資源(其中,N是由實(shí)際系統(tǒng)運(yùn)行定義,根據(jù)系統(tǒng)整體情況定義一次回收多少合適)。S108:判斷資源是否都回收完畢,如果回收完畢進(jìn)入步驟S104,如果沒有,進(jìn)入步驟 S109。S109 :將步驟S105中選擇的下一個(gè)數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;SllO :根據(jù)步驟S105中選擇的下一個(gè)數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若是,則執(zhí)行步驟S105,否則執(zhí)行步驟S107。本實(shí)施例的方法相對于傳統(tǒng)的RCU具有以下幾點(diǎn)優(yōu)勢I、本發(fā)明在垃圾資源回收期,同樣進(jìn)入寬限周期并將CPU進(jìn)入靜默狀態(tài),CPU的產(chǎn)生的新垃圾資源能夠盡早回收,并且保證當(dāng)前CPU盡量將所有的資源回收完畢再去產(chǎn)生新的資源。這樣不但提高了資源回收的效率和及時(shí)性,還可以解決在資源突發(fā)大量集中回收, 造成此類資源耗竭而影響業(yè)務(wù)正常運(yùn)行的問題。2、本實(shí)施例利用三個(gè)數(shù)據(jù)單元的環(huán)形鏈表形式來記錄寬限周期方式,配合奇偶次數(shù)特點(diǎn)來達(dá)到寬限周期在多核之間數(shù)據(jù)訪問免鎖,提高了資源回收鎖的效率。本發(fā)明還公開了一種多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)系統(tǒng),所述系統(tǒng)包括鏈表構(gòu)建模塊,用于設(shè)置由η個(gè)數(shù)據(jù)單元所構(gòu)成的環(huán)形鏈表,并將多核系統(tǒng)中的每個(gè)CPU分別對應(yīng)數(shù)據(jù)單元中的一位數(shù)據(jù);
置位模塊,用于在當(dāng)前CPU發(fā)生了上下文切換后,進(jìn)入資源回收處理過程中,獲取當(dāng)前CPU進(jìn)入寬限時(shí)期的次數(shù),根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元,并將所述當(dāng)前數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;寬限結(jié)束判斷模塊,用于根據(jù)所述當(dāng)前數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若沒有結(jié)束,則執(zhí)行退出等待模塊,否則執(zhí)行選擇模塊;退出等待模塊,用于退出此次的資源回收處理過程,等待其它CPU發(fā)生上下文切換,再執(zhí)行置位模塊;選擇模塊,用于選擇環(huán)形鏈表中所述當(dāng)前數(shù)據(jù)單元的下一個(gè)單元;次數(shù)自加模塊,用于將當(dāng)前CPU記錄的寬限時(shí)期的次數(shù)加I ;資源回收模塊,用于通過回調(diào)函數(shù)進(jìn)行X個(gè)資源的資源回收,所述X為正整數(shù);回收完畢判斷模塊,用于判斷資源是否都已經(jīng)回收完畢,若是,則執(zhí)行退出等待模塊,否則執(zhí)行再置位模塊;再置位模塊,用于將選擇模塊中選擇的下一個(gè)數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;寬限結(jié)束再判斷模塊,用于根據(jù)選擇模塊中選擇的下一個(gè)數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若是,則執(zhí)行選擇模塊,否則執(zhí)行資源回收模塊。優(yōu)選地,鏈表構(gòu)建模塊中,η取值為大于I的奇數(shù)。優(yōu)選地,置位模塊中,根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元是通過以下公式進(jìn)行選擇C = v mod η其中,C為環(huán)形鏈表中數(shù)據(jù)單元的序號,V為所述次數(shù),mod為取模運(yùn)算,η為環(huán)形鏈表中數(shù)據(jù)單元的個(gè)數(shù)。以上實(shí)施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)方法,其特征在于,所述方法包括以下步驟51:設(shè)置由η個(gè)數(shù)據(jù)單元所構(gòu)成的環(huán)形鏈表,并將多核系統(tǒng)中的每個(gè)CPU分別對應(yīng)數(shù)據(jù)單元中的一位數(shù)據(jù);52:在當(dāng)前CPU發(fā)生了上下文切換后,進(jìn)入資源回收處理過程中,獲取當(dāng)前CPU進(jìn)入寬限時(shí)期的次數(shù),根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元,并將所述當(dāng)前數(shù)據(jù)單元中與當(dāng)前 CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;53:根據(jù)所述當(dāng)前數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若沒有結(jié)束,則執(zhí)行步驟S4,否則執(zhí)行步驟S5;54:退出此次的資源回收處理過程,等待其它CPU發(fā)生上下文切換,再執(zhí)行步驟S2 ;55:選擇環(huán)形鏈表中所述當(dāng)前數(shù)據(jù)單元的下一個(gè)單元;56:將當(dāng)前CPU記錄的寬限時(shí)期的次數(shù)加I ;57:通過回調(diào)函數(shù)進(jìn)行X個(gè)資源的資源回收,所述X為正整數(shù);58:判斷資源是否都已經(jīng)回收完畢,若是,則執(zhí)行步驟S4,否則執(zhí)行步驟S9 ;59:將步驟S5中選擇的下一個(gè)數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;SlO :根據(jù)步驟S5中選擇的下一個(gè)數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若是,則執(zhí)行步驟S5,否則執(zhí)行步驟S7。
2.如權(quán)利要求I所述的方法,其特征在于,步驟SI中,η取值為大于I的奇數(shù)。
3.如權(quán)利要求I所述的方法,其特征在于,步驟S2中,根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元是通過以下公式進(jìn)行選擇C = vmodn其中,C為環(huán)形鏈表中數(shù)據(jù)單元的序號,V為所述次數(shù),mod為取模運(yùn)算,η為環(huán)形鏈表中數(shù)據(jù)單元的個(gè)數(shù)。
4.一種多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)系統(tǒng),其特征在于,所述系統(tǒng)包括鏈表構(gòu)建模塊,用于設(shè)置由η個(gè)數(shù)據(jù)單元所構(gòu)成的環(huán)形鏈表,并將多核系統(tǒng)中的每個(gè) CPU分別對應(yīng)數(shù)據(jù)單元中的一位數(shù)據(jù);置位模塊,用于在當(dāng)前CPU發(fā)生了上下文切換后,進(jìn)入資源回收處理過程中,獲取當(dāng)前 CPU進(jìn)入寬限時(shí)期的次數(shù),根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元,并將所述當(dāng)前數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;寬限結(jié)束判斷模塊,用于根據(jù)所述當(dāng)前數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若沒有結(jié)束,則執(zhí)行退出等待模塊,否則執(zhí)行選擇模塊;退出等待模塊,用于退出此次的資源回收處理過程,等待其它CPU發(fā)生上下文切換,再執(zhí)行置位模塊;選擇模塊,用于選擇環(huán)形鏈表中所述當(dāng)前數(shù)據(jù)單元的下一個(gè)單元;次數(shù)自加模塊,用于將當(dāng)前CPU記錄的寬限時(shí)期的次數(shù)加I ;資源回收模塊,用于通過回調(diào)函數(shù)進(jìn)行X個(gè)資源的資源回收,所述X為正整數(shù);回收完畢判斷模塊,用于判斷資源是否都已經(jīng)回收完畢,若是,則執(zhí)行退出等待模塊, 否則執(zhí)行再置位模塊;再置位模塊,用于將選擇模塊中選擇的下一個(gè)數(shù)據(jù)單元中與當(dāng)前CPU對應(yīng)的一位數(shù)據(jù)進(jìn)行置位;寬限結(jié)束再判斷模塊,用于根據(jù)選擇模塊中選擇的下一個(gè)數(shù)據(jù)單元中的值判斷當(dāng)前寬限時(shí)期是否已經(jīng)結(jié)束,若是,則執(zhí)行選擇模塊,否則執(zhí)行資源回收模塊。
5.如權(quán)利要求I所述的系統(tǒng),其特征在于,鏈表構(gòu)建模塊中,η取值為大于I的奇數(shù)。
6.如權(quán)利要求I所述的系統(tǒng),其特征在于,置位模塊中,根據(jù)所述次數(shù)選擇相應(yīng)的當(dāng)前數(shù)據(jù)單元是通過以下公式進(jìn)行選擇C = v mod η其中,C為環(huán)形鏈表中數(shù)據(jù)單元的序號,V為所述次數(shù),mod為取模運(yùn)算,η為環(huán)形鏈表中數(shù)據(jù)單元的個(gè)數(shù)。
全文摘要
本發(fā)明公開了一種多核系統(tǒng)資源延遲回收鎖的實(shí)現(xiàn)方法及系統(tǒng),涉及數(shù)據(jù)共享技術(shù)領(lǐng)域,本發(fā)明通過設(shè)置由數(shù)據(jù)單元組成的環(huán)形鏈表,來標(biāo)識CPU的狀態(tài),使得在垃圾回收期間,在垃圾回收的CPU進(jìn)入靜默狀態(tài)時(shí),能夠使得其他CPU同時(shí)進(jìn)行垃圾回收,解決了在資源突發(fā)大量集中回收,造成此類資源耗竭而影響業(yè)務(wù)正常運(yùn)行的問題。
文檔編號G06F15/16GK102609313SQ20121001079
公開日2012年7月25日 申請日期2012年1月13日 優(yōu)先權(quán)日2012年1月13日
發(fā)明者王博, 陳天航 申請人:漢柏科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1