日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

網(wǎng)絡處理器線程調(diào)度方法

文檔序號:7948193閱讀:297來源:國知局
專利名稱:網(wǎng)絡處理器線程調(diào)度方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,尤其是一種數(shù)據(jù)通信中的網(wǎng)絡處理器線程調(diào)度方法。
背景技術(shù)
目前在數(shù)據(jù)通信中經(jīng)常用到網(wǎng)絡處理器,網(wǎng)絡處理器有很多功能,比如數(shù)據(jù)通信中協(xié)議的分析、處理、數(shù)據(jù)包的調(diào)度等。網(wǎng)絡處理器內(nèi)部一般包含若干個獨立的微型包處理器,簡稱包引擎,而每個包引擎又可分為若干個互相交替運行的線程。網(wǎng)絡處理器中的包引擎是互相獨立的,能夠同時運行,因此可以同時處理不同的數(shù)據(jù)流;而包引擎內(nèi)部的線程是交替運行的,它們占用公共的引擎資源,不能同時運行。如何協(xié)調(diào)各個線程或者引擎之間的運行關(guān)系,是提高網(wǎng)絡處理器性能的關(guān)鍵。
一般一個網(wǎng)絡處理器會服務若干個數(shù)據(jù)端口,端口之間沒有優(yōu)先級的要求。那么如何分配空閑的線程和引擎去服務有數(shù)據(jù)的端口呢?怎樣分配才可以達到最優(yōu)效果呢?目前已有的調(diào)度方法有兩種,分別介紹如下一、集中調(diào)度法在網(wǎng)絡處理器中,分配一個專門的調(diào)度線程,統(tǒng)一調(diào)度所有的資源。該調(diào)度線程可以設(shè)在網(wǎng)絡處理器的任意一個引擎中。該方法調(diào)度的過程是調(diào)度線程查詢外部數(shù)據(jù)端口,即外端口的狀態(tài),經(jīng)過處理,得到要服務的端口;然后,調(diào)度線程查詢網(wǎng)絡處理器是否有其它的空閑線程,選擇最小編號的空閑線程;最后,通過要服務的端口與最小編號的空閑線程之間的簡單的映射關(guān)系,分配空閑線程去處理要服務的端口。
這種方法的缺點是它專門占用一個線程資源,客觀上降低了網(wǎng)絡處理器的效率;而且,調(diào)度線程所在引擎的其它線程也不能處理復雜業(yè)務,因為引擎內(nèi)部的線程是不能同時運行的,必須交替運行,因此當其它線程處理復雜業(yè)務,占用這個引擎的資源時,調(diào)度線程的任務將被延遲,導致調(diào)度效率下降,同時也限制了資源的最大利用;另外,它也很難合理安排任務,安排的任務理想的狀態(tài)是均勻分布在各個引擎,不是集中在一個引擎,因為不同引擎可以同時運行,而引擎內(nèi)部的不同線程卻必須交替運行,而集中調(diào)度的簡單分配原則,總是會把任務分配到最小編號的線程上,當端口數(shù)少時,造成引擎運行的不合理,浪費了引擎資源。
二、分布式綁定調(diào)度法在這種方法中,網(wǎng)絡處理器沒有一個專門的調(diào)度線程,而是固定指定固定的線程去服務對應的端口,即把線程和端口捆綁起來,由各個處理線程自己決定是否處理它所服務的唯一端口。所以每個處理線程都有自己的調(diào)度功能。比如0線程只服務0端口,1線程只服務1端口.....以此類推。
這種方法的缺點是由于它捆綁線程和端口,服務的端口受限于線程的數(shù)目,而一般線程數(shù)目是有限的,而服務的端口有可能很多,這樣超出線程數(shù)目的端口就可能得不到服務;此外,它不能充分利用線程資源,一個線程處理能力有限,當端口流量很大時,無法線性處理,可是其它線程依然空閑,沒有充分利用網(wǎng)絡處理器的并行處理體系,造成線程資源的浪費。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種網(wǎng)絡處理器線程調(diào)度方法,它既不占用專門的線程資源而降低網(wǎng)絡處理器的效率,又使服務的端口不受限于線程的數(shù)目,而且能夠充分網(wǎng)絡處理器的并行處理體系,以充分利用線程資源。
為實現(xiàn)上述目的,本發(fā)明的解決方案是一種網(wǎng)絡處理器線程調(diào)度方法,它包括a、設(shè)定外端口的優(yōu)先級;b、各線程一旦空閑,判斷該線程和該線程所在的引擎是否都有權(quán)服務外端口,一旦兩者都可以服務外端口,通知本引擎的其他線程不能服務外端口;c、該線程按預先設(shè)定的外端口的優(yōu)先級選擇優(yōu)先級最高的外端口,并進行屏蔽;d、該線程構(gòu)造一個用該線程去服務選擇好的外端口的任務,通知其他引擎和此引擎的其他線程可以服務外端口,下一引擎的固定線程得到服務外端口的權(quán)利;e、執(zhí)行該任務的過程中解除屏蔽。
其中,步驟b的具體過程包括b1、線程判斷本線程是否可以查詢外端口的狀態(tài);b2、如果判斷出不能查詢外端口的狀態(tài),則釋放本線程的控制權(quán);如果能夠查詢外端口的狀態(tài),則通知本引擎的其他線程不能查詢外端口的狀態(tài);b3、線程判斷本線程所在的引擎是否有權(quán)利服務外端口;b4、如果判斷出不能服務外端口,則釋放本線程的控制權(quán);如果能夠服務外端口,讀取外端口的狀態(tài),去除暫時不服務的外端口,獲得服務外端口列表;b5、判斷是否有外端口需要服務,如沒有則釋放本線程的控制權(quán);如有則繼續(xù)進行。
在步驟b1中,線程判斷本線程是否可以查詢外端口的狀態(tài)的方法是根據(jù)本引擎的線程之間固有的切換關(guān)系,判斷是否輪到本線程進行服務。
在步驟b3中,判斷本引擎是否有權(quán)利服務外端口的方法是看是否接到了其他線程的下一引擎可以服務外端口的通知。
本發(fā)明的步驟d包括這樣的過程d1、線程構(gòu)造一個用該線程去服務選擇好的外端口的任務;d2、該線程通知其他引擎可以服務該外端口;
d3、該線程分配該任務;d4、該線程通知所在引擎的其它線程可以查詢外部端口的數(shù)據(jù)狀態(tài)。
在步驟d2和d3之間可以包含這樣的過程再判斷本線程是否可以分配任務,如不能分配任務,即不能服務外端口則釋放線程的控制權(quán);如能夠分配任務,即能夠服務外端口則繼續(xù)進行。
由于本發(fā)明是在網(wǎng)絡處理器的每個線程中設(shè)有該線程自己的調(diào)度功能,它不占用專門的線程資源,從而提高了網(wǎng)絡處理器的效率;由于本發(fā)明中的線程和外端口不是捆綁在一起的,而是任何一個空閑線程都可以有機會去服務有數(shù)據(jù)的端口,這樣就使服務的外端口不受限于線程的數(shù)目;另外,由于本發(fā)明通過在各引擎之間的通知機制和引擎內(nèi)部各線程之間的固有服務外端口的順序,以及對外端口的屏蔽和解屏蔽,約束了線程和外端口之間的關(guān)系,當外端口流量很大時,能夠充分利用網(wǎng)絡處理器的并行處理體系,由多個線程平行進行處理,充分利用了線程資源。


圖1是本發(fā)明的方法流程簡圖。
圖2是本發(fā)明的方法流程詳圖。
具體實施例方式
”在圖1本發(fā)明的方法流程簡圖中,我們可以大體看出本發(fā)明的實現(xiàn)步驟,該步驟中的每一步大體與我們后面的每一個小標題相對應。
(1)設(shè)定外端口的優(yōu)先級。該設(shè)定一般來說是人為的。由于在后面各線程服務外端口的過程中,都是先選擇優(yōu)先級最高的外端口,在設(shè)定外端口的優(yōu)先級時要考慮外端口上數(shù)據(jù)的重要程度,把最重要的外端口設(shè)為優(yōu)先級最高的外端口。
在本發(fā)明中,各個引擎服務外端口的順序是通過調(diào)度方法中的通知機制進行的,該機制在后面的步驟(2)和(4)中得到了體現(xiàn)。引擎中各線程進行服務也是有一定順序的,只不過該順序是網(wǎng)絡處理器本身所固有的。比如說,我們的網(wǎng)絡處理器中有四個包引擎,分別編號為0、1、2、3,在每個引擎中分別有四個線程,分別編號為0、1、2、3,服務外端口的線程順序的理想狀態(tài)是均勻分布在各個引擎,因為不同引擎可以同時運行,而引擎內(nèi)部的不同線程卻必須交替運行,這樣,我們首先讓0引擎的0線程(簡記為00)先服務于外端口,然后是1引擎中的0線程(簡記為10),再其次是20,再其次是30、01、11、21、31、02、12、22、32、03、13、23、33。假使有四個外端口分別編號為0、1、2、3,我們設(shè)0外端口具有最高優(yōu)先級,然后依次是1、2、3。
另外在這一步驟中,還可以設(shè)定從開始執(zhí)行任務到解除對外端口的屏蔽之間的時間,關(guān)于這一部分的詳細內(nèi)容我們在(5)中加以論述。
(2)各線程一旦空閑,判斷該線程和該線程所在的引擎是否都有權(quán)服務外端口,一旦兩者都可以服務外端口,通知本引擎的其他線程不能服務外端口。
在這個過程中,線程空閑下來時,自動起調(diào)度任務,其具體過程包括1)線程判斷本線程是否可以查詢外端口的狀態(tài),其具體方法是根據(jù)本引擎的線程之間固有的切換關(guān)系,判斷是否輪到本線程進行服務。
2)如果判斷出不能查詢外端口的狀態(tài),則釋放本線程的控制權(quán);如果能夠查詢外端口的狀態(tài),則通知本引擎的其他線程不能查詢外端口的狀態(tài)。
3)線程判斷本線程所在的引擎是否有權(quán)利服務外端口,其具體方法是看是否接到了其他線程的下一引擎可以服務外端口的通知。實際上,其他線程是在后面所述的步驟(4)中進行通知的,該過程我們在后面詳細敘述,只不過每個線程獨立執(zhí)行本發(fā)明的5個過程,其他線程是在它自身所執(zhí)行的步驟(4)中進行通知的。
4)如果判斷出不能服務外端口,則釋放本線程的控制權(quán);如果能夠服務外端口,讀取外端口的狀態(tài),去除暫時不服務的外端口,獲得服務外端口列表。其具體方法是判斷外端口中哪些當前不需要服務、哪些被其他線程屏蔽掉了,關(guān)于屏蔽的部分我們將在后面的(3)中主要涉及,實際上這里所說的屏蔽是指被其他線程執(zhí)行的步驟(3)屏蔽掉了,與本線程的過程無關(guān)。然后從全部外端口中減去這些外端口,放在服務外端口列表中。
5)判斷是否有外端口需要服務,如沒有則釋放本線程的控制權(quán);如有則繼續(xù)進行。在這一步驟中,判斷是否有外端口需要服務的具體過程是按照服務外端口列表中可以服務的端口,去檢查這些端口上是否有數(shù)據(jù),如有則需要服務,如沒有則不需要服務。
關(guān)于以上5個詳細過程,在圖2左側(cè)清楚地顯示出來。
以上例來說,我們一般在初始化時表明先啟動0引擎的0線程,使它有權(quán)服務外端口,那么,0線程首先判斷0線程能否查詢外端口的狀態(tài),答案是肯定的,則0線程通知本引擎的1、2、3線程不能查詢外端口的狀態(tài)。然后,判斷0引擎能否服務外端口,答案也是肯定的,則讀取外端口的狀態(tài),發(fā)現(xiàn)外端口1暫時不服務,則去除該端口,獲得服務外端口列表,在列表中只含有端口0、2、3。然后判斷是否有外端口需要服務,發(fā)現(xiàn)在端口0和2上面有數(shù)據(jù),而在端口3上面沒有數(shù)據(jù),則認為端口0、2需要服務,可以繼續(xù)進行下面的過程。
(3)該線程按預先設(shè)定的外端口的優(yōu)先級選擇優(yōu)先級最高的外端口,并進行屏蔽。
在上例中,在需要服務的端口0、2中,端口0的優(yōu)先級最高,故選擇端口0服務,然后對端口0進行屏蔽。為什么要進行屏蔽呢?因為當分配一個任務給此端口,即對此端口進行服務時,離任務執(zhí)行或者說離真正的服務還有一段時間,這樣端口狀態(tài)不能立刻更新,而有可能在后續(xù)程序中又分配了一個任務,或者說,又有一個線程服務該端口,結(jié)果其接收到的就是未及時更新的數(shù)據(jù),出現(xiàn)了重復接收。
(4)該線程構(gòu)造一個用該線程去服務選擇好的外端口的任務,通知其他引擎和此引擎的其他線程可以服務外端口,下一引擎的固定線程得到服務外端口的權(quán)利。
本過程的具體實現(xiàn)如下1)線程構(gòu)造一個用該線程去服務選擇好的外端口的任務。
2)該線程通知其他引擎可以服務該外端口。我們這一步驟只是給其他引擎這一權(quán)利,但實際上只有下一順序的引擎在這一步驟中才能真正服務外端口,這就是我們在步驟(2)的子步驟3)所述的內(nèi)容。至于該引擎中的哪一線程能夠得到該權(quán)利,則是由網(wǎng)絡處理器引擎內(nèi)部線程服務的固有順序決定的。
然后線程可以再判斷本線程是否可以分配任務,如不能分配任務,即不能服務外端口則釋放線程的控制權(quán);如能夠分配任務,即能夠服務外端口則繼續(xù)進行。這個判斷是為了使結(jié)果更精確,但不是特別必要的。
3)該線程分配該任務。
4)該線程通知所在引擎的其它線程可以查詢外部端口的數(shù)據(jù)狀態(tài)。
關(guān)于這一過程在圖2的中部和右部可以清楚地顯示出來。
仍以上例進行說明,0引擎的線程0構(gòu)造了一個用線程0去服務外端口0的任務,然后通知其他引擎可以服務0端口,實際上是通知1引擎去服務0端口,在1引擎中按網(wǎng)絡處理器固有的順序默認了一個0線程去繼續(xù)服務0端口,然后可以再判斷以下本線程是否可以分配任務,之所以進行這樣一個重復的判斷是防止在第一次判斷后到目前之間程序的執(zhí)行過程中,該端口已經(jīng)被別的線程屏蔽,或不打算再進行服務。然后,0線程分配該任務,通知0引擎的1、2、3線程可以查詢外部端口的數(shù)據(jù)狀態(tài)。
(5)執(zhí)行該任務的過程中解除屏蔽。然后,下一引擎中的固定線程就可以服務該外端口。
在這一過程中,可以按步驟(1)中預先設(shè)定的從開始執(zhí)行任務到解除對外端口的屏蔽之間的時間來進行外端口屏蔽的解除,也就是說,不到該任務全部完成,新的引擎的新的線程,即1引擎的0線程又開始同時服務0端口。這樣,網(wǎng)絡處理器的資源得到了最大利用,大大提高了性能。當然,新的引擎的新的線程又開始服務同一個外端口,也要經(jīng)過從(1)到(5)的過程。
由于這種調(diào)度方法的基礎(chǔ)是分布式綁定法,但消除了綁定法資源利用的不合理和不靈活,采用了自由式調(diào)度,任何一個空閑線程都可以有機會服務有數(shù)據(jù)的端口,我們稱之為分布式自由調(diào)度法。
權(quán)利要求
1.一種網(wǎng)絡處理器線程調(diào)度方法,它包括a、設(shè)定外端口的優(yōu)先級;b、各線程一旦空閑,判斷該線程和該線程所在的引擎是否都有權(quán)服務外端口,一旦兩者都可以服務外端口,通知本引擎的其他線程不能服務外端口;c、該線程按預先設(shè)定的外端口的優(yōu)先級選擇優(yōu)先級最高的外端口,并進行屏蔽;d、該線程構(gòu)造一個用該線程去服務選擇好的外端口的任務,通知其他引擎和此引擎的其他線程可以服務外端口,下一引擎的固定線程得到服務外端口的權(quán)利;e、執(zhí)行該任務的過程中解除屏蔽。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡處理器線程調(diào)度方法,其特征在于步驟b的具體過程包括b1、線程判斷本線程是否可以查詢外端口的狀態(tài);b2、如果判斷出不能查詢外端口的狀態(tài),則釋放本線程的控制權(quán);如果能夠查詢外端口的狀態(tài),則通知本引擎的其他線程不能查詢外端口的狀態(tài);b3、線程判斷本線程所在的引擎是否有權(quán)利服務外端口;b4、如果判斷出不能服務外端口,則釋放本線程的控制權(quán);如果能夠服務外端口,讀取外端口的狀態(tài),去除暫時不服務的外端口,獲得服務外端口列表;b5、判斷是否有外端口需要服務,如沒有則釋放本線程的控制權(quán);如有則繼續(xù)進行。
3.根據(jù)權(quán)利要求2所述的網(wǎng)絡處理器線程調(diào)度方法,其特征在于在步驟b1中,線程判斷本線程是否可以查詢外端口的狀態(tài)的方法是根據(jù)本引擎的線程之間固有的切換關(guān)系,判斷是否輪到本線程進行服務。
4.根據(jù)權(quán)利要求2所述的網(wǎng)絡處理器線程調(diào)度方法,其特征在于在步驟b3中,判斷本引擎是否有權(quán)利服務外端口的方法是看是否接到了其他線程的下一引擎可以服務外端口的通知。
5.根據(jù)權(quán)利要求2、3或4所述的網(wǎng)絡處理器線程調(diào)度方法,其特征在于在步驟b4中,讀取外端口的狀態(tài)的具體方法是判斷外端口中哪些當前不需要服務、哪些被其他線程屏蔽掉了,從全部外端口中減去這些外端口,放在服務外端口列表中。
6.根據(jù)權(quán)利要求2、3或4所述的網(wǎng)絡處理器線程調(diào)度方法,其特征在于在步驟b5中,判斷是否有外端口需要服務的具體過程是按照服務外端口列表中可以服務的端口,去檢查這些端口上是否有數(shù)據(jù),如有則需要服務,如沒有則不需要服務。
7.根據(jù)權(quán)利要求1所述的網(wǎng)絡處理器線程調(diào)度方法,其特征在于步驟d包括這樣的過程d1、線程構(gòu)造一個用該線程去服務選擇好的外端口的任務;d2、該線程通知其他引擎可以服務該外端口;d3、該線程分配該任務;d4、該線程通知所在引擎的其它線程可以查詢外部端口的數(shù)據(jù)狀態(tài)。
8.根據(jù)權(quán)利要求7所述的網(wǎng)絡處理器線程調(diào)度方法,其特征在于在步驟d2和d3之間包含這樣的過程再判斷本線程是否可以分配任務,如不能分配任務,即不能服務外端口則釋放線程的控制權(quán);如能夠分配任務,即能夠服務外端口則繼續(xù)進行。
9.根據(jù)權(quán)利要求1所述的網(wǎng)絡處理器線程調(diào)度方法,其特征在于在步驟a中預先設(shè)定從開始執(zhí)行任務到解除對外端口的屏蔽之間的時間;在步驟e中,按照該時間進行外端口屏蔽的解除。
全文摘要
一種網(wǎng)絡處理器線程調(diào)度方法,它包括設(shè)定外端口的優(yōu)先級;各線程判斷該線程和該線程所在的引擎是否都有權(quán)服務外端口,一旦兩者都可以服務外端口,通知本引擎的其他線程不能服務外端口;該線程選擇優(yōu)先級最高的外端口,并進行屏蔽;構(gòu)造一個用該線程去服務選擇好的外端口的任務,通知其他引擎和本引擎的其他線程可以服務該外端口;執(zhí)行該任務的過程中解除屏蔽。它既不降低網(wǎng)絡處理器的效率,又充分利用了線程資源。
文檔編號H04L12/24GK1402471SQ0112511
公開日2003年3月12日 申請日期2001年8月13日 優(yōu)先權(quán)日2001年8月13日
發(fā)明者葉未川 申請人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1