国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種定時器調(diào)度方法

      文檔序號:7677962閱讀:233來源:國知局
      專利名稱:一種定時器調(diào)度方法
      技術領域
      本發(fā)明涉及一種定時器的調(diào)度方法,尤其是指一種在通訊系統(tǒng)中處理大話務量負載時的海量定時器調(diào)度方法。
      (2)差分定時器調(diào)度方法所謂差分定時器調(diào)度方法把定時器按照到時時刻排列成一個長鏈,每個定時器記錄自身到時時該與上一個定時器到時時間的時間差,如附圖2所示,該調(diào)度方法幾乎沒有掃描開銷,判斷是否有定時器超時,只需判斷鏈表頭的第一個定時器即可。但是如果插入一個新的定時器,就需要遍歷鏈表,當處于激活狀態(tài)的定時器數(shù)量非常大的時候,插入過程就會慢的無法接受,尤其在插入非常頻繁的情況下。這種方案只能應用于定時器數(shù)量巨大,但是插入和刪除并不頻繁,平均定時時長比較短的情況下尚可。
      (3)分類定時器調(diào)度方法有些通訊系統(tǒng)中采用了定時器時長分類的方法,系統(tǒng)根據(jù)所用到的定時時長將定時器進行分類,針對每個長度的定時器構(gòu)造一個鏈表,如附圖3所示的分類定時器調(diào)度方法,系統(tǒng)將定時器根據(jù)定時時長120tick、200tick和800tick分別構(gòu)造了a、b、c三類鏈表,當判斷是否有定時器超時,只需在每個tick內(nèi)掃描定時器鏈表中的第一個定時器即可。由于每個鏈表只有一種定時時延,新登記的定時器可以直接插入該定時器所屬定時器類的鏈表尾部,如附圖4所示,當新增加的定時器時長為200tick時,只需要直接插入到定時時長為200tick的鏈表b中。這種方法利用了差分定時器的優(yōu)點,并且針對系統(tǒng)的特殊性克服了差分定時器在插入效率上的缺點。當定時器時長的種類很少時,這種調(diào)度方法非常高效,但是這種定時器只能應付定時器時長的可能取值有限的情況,對于超時時長可能取值種類過多或者可變的系統(tǒng)是不適用的。
      以上所述現(xiàn)有的定時器調(diào)度方法在調(diào)度上萬甚至上百萬個定時器時通常不能同時解決下列問題(1)高效掃描大量處于激活狀態(tài)的定時器,執(zhí)行超時的定時器任務;(2)高效插入、刪除定時器;(3)可提供的定時時延范圍足夠大,應用程序不必對特殊長度的時延進行特殊處理;(4)定時的精度足夠高,滿足精確定時的需要。另外,對于實時系統(tǒng),定時器調(diào)度方案還必須使系統(tǒng)能夠長期穩(wěn)定地工作,通常不可以動態(tài)地分配和釋放內(nèi)存,以免造成內(nèi)存碎片化;同時,定時器調(diào)度方法最好能夠通用。許多系統(tǒng)實現(xiàn)了不同精度不同長度的幾類定時器,或者為某些特定時長的定時器進行了優(yōu)化,所有這些方案都會增大調(diào)度程序總的復雜性,增大應用程序使用定時任務的難度,降低系統(tǒng)的可靠性?,F(xiàn)在通訊系統(tǒng)的容量越來越大,速度越來越高,協(xié)議越來越復雜,穩(wěn)定性要求也越來越高,對這種即通用又高效的海量定時器調(diào)度方法的需求變得愈發(fā)迫切。
      本發(fā)明的目的是這樣實現(xiàn)的一種定時器調(diào)度方法,其步驟包括(1)按照數(shù)學進位制確定該定時器的超時時長的最高有效位;(2)將該定時器登記到最高有效位所對應類別鏈表的尾部;(3)當定時器在該鏈表中超時,取出該定時器,再次按照所選定的數(shù)學進位制確定剩余時長的最高有效位,并登記到相應鏈表的尾部;(4)當該定時器的超時,啟動該定時器的超時任務,并刪除該定時器。
      該定時器調(diào)度方法還包括掃描過程,該掃描過程是指系統(tǒng)從最小時長類別的鏈表開始循環(huán)處理每個類別的鏈表,包括以下步驟(a)判斷當前鏈表中是否還有定時器,若無則掃描下一個鏈表,否則讀取本鏈表頭部的定時器;(b)判斷該讀取的定時器在本鏈表中的拆分時長是否到時,若未到時則掃描下一個鏈表,否則執(zhí)行下一個步驟;(c)判斷該定時器是否超時,若超時則執(zhí)行步驟(4),否則執(zhí)行步驟(3);(d)返回步驟(b)。
      其中,所述定時器類別鏈表按照所選定的數(shù)學進位制分類。
      圖2為現(xiàn)有技術差分定時器調(diào)度方法的示意圖。
      圖3為現(xiàn)有技術分類定時器調(diào)度方法的示意圖。
      圖4為圖3所示方法的插入定時器的示意圖。
      圖5為本發(fā)明拆分定時器調(diào)度方法的示意圖。
      圖6、7為圖5所示方法的插入定時器的示意圖。
      圖8為本發(fā)明方法定時器掃描的流程圖。
      根據(jù)前面所述,差分定時器調(diào)度方法的缺點在于插入速度太慢,需要掃描鏈表。分類定時器調(diào)度方法的缺點在于不能處理任意時長,提供的時長類別也不能過多,如果需要定時的時長隨機地分布在一個很大的范圍內(nèi),不可能為每個時長都提供一個類別。但是實際上并不需要為所有的時長準備一個類別,許多時長是可以通過其他的時長相加組合而來。例如你有了時長為3以及時長為5的時長類別,那么你就可以直接組合出時長為8的定時間隔。方法很簡單,先啟動一個時長為3的定時器,超時的時候立即啟動一個時長為5的定時器,這個時長為5的定時器超時的時候,正好經(jīng)過了8個tick。基于此,我們可以設定一些有規(guī)律的時長類別,將具體的時長都拆分成這些時長類別相組合后再進行掃描處理,即本發(fā)明所述時長拆分。所謂時長拆分就是將定時器的超時時長按照一定的數(shù)學進位制進行拆分。
      本發(fā)明在最佳實施方式中采用了二進制對時長進行拆分,二進制時長拆分方法就是把每一個時長都表示成若干個2k相加的形式,2k就表示一個時長類別,每一個時長類別組成一個鏈表。因此可以提供的定時類別可以只有1,2,4,8,...,2k,...,k+1即是定時類別的個數(shù)(k從0開始計數(shù)),也是鏈表的個數(shù)。這樣,本發(fā)明的系統(tǒng)僅僅需要定時時長為1,2,4,8,...,2k,...的定時類別鏈表。對于32位系統(tǒng),如果使用32位整數(shù)作為時長的類型,則只需要32個時長類別鏈表,每個鏈表對應一個k值(k=0,1,2,...,31),最差情況只需要把一個定時器時長拆分32次,實際上每次拆分只需要極短的時間,這個開銷完全是微不足道的。當然,如果時長正好等于2k,則不用拆分。該32位系統(tǒng)可以處理時長達40億之巨,完成可以滿足特殊長度的時長要求。為敘述和


      的方便,本實施方式中采用8個鏈表的系統(tǒng)進行說明,如附圖5所示,在該8個鏈表的系統(tǒng)中,k=0,1,2,...,7,時長類別為20、21、22、23、24、25、26和27八個,對應的鏈表分別記為0,1,2,...,7。
      當要插入一個定時器時,首先需要計算該定時器的到時時刻,即定時器的時長N;確定好定時器的定時長N后,需要確定定時器的二進制最高有效位,所述最高有效位是指時長可以表示成數(shù)學進位制相加形式時的最高次冪,若N表示成2k相加的形式,即N=1+2+4+,...,+2k,其最高次冪k就是N的最高有效位;與分類定時器調(diào)度方法相同,要插入該時長為N的定時器,只需要先把該定時器登記到最高有效位k所對應的鏈表k的尾部即可。許多CPU直接支持位掃描指令,這條指令可以直接確定一個整數(shù)的最高或最低有效位,因此可以直接利用這個指令確定一個時長為N的定時器應當?shù)怯浀侥囊粋€定時器鏈表中去。即使沒有這個指令,通過移位運算確定這個上標也是非??焖俚?,不過幾十個CPU時鐘周期而已。當該時長為N的定時器在鏈表k中超時,就需要再確定剩余時長N-2k的最高有效位,再將該定時器登記到剩余時長N-2k的最高有效位所對應的鏈表的尾部,以此類推,直到該定時器的時長為0。
      例如,對于時長22,其二進制表示為00010110,即在二進制表示中的位置為第1、2、4位,其最高有效位上標為4,該時長22采用二進制進行時長拆分可以表示為22=24+22+21,即可以拆分為時長類別為21、22和24的組合。在進行定時器掃描時,首先找到時長22的最高有效位4,將該定時器登記到最高有效位時長類別24的定時器鏈表4的尾部,如附圖6所示;16個tick之后,該定時器在當前的鏈表(時長類別為24)中超時并且被取出,此時該定時器距離真正應該超時的時間還剩下6個tick;此時立即找到剩下6個tick里的最高有效位2,并把它登記到時長類別22的定時器鏈表2的尾部,如附圖7所示;又經(jīng)過了4個tick之后該定時器在當前鏈表(時長類別為為4)中超時并且被取出;此時再次立即找到剩下2個tick里的最高有效位1,并把它登記到時長類別21的定時器鏈表1的尾部。當時長為2的定時器再次超時的時候,該定時器才真正經(jīng)過了22個tick,此時運行這個定時器對應的超時任務,且將該定時器自鏈表中刪除。
      當需要判斷是否有定時器超時,只需要在每個tick掃描每個類別鏈表的第一個定時器即可,其掃描流程如附圖8所示。系統(tǒng)從最小時長類別的定時器鏈表20開始循環(huán)處理每一個類別的鏈表,并同時開始進行tick的計數(shù),如步驟20與步驟22所示。其次判斷該時長類別的鏈表中是否還有定時器,如步驟23所示,如果沒有則返回步驟22掃描下一個時長類別的定時器鏈表;否則取出該鏈表頭部的定時器,如步驟24所示,并判斷該取出的定時器登記到本鏈表中的拆分時長是否到時,如步驟25所示,該拆分時長與本鏈表的時長類別相等,例如前面所述的時長為22的定時器首先拆分登記到時長類別為24的鏈表中,在進行定時器掃描時,就要判斷是否該定時器是否已達到拆分時長16個tick,即是否到時。由于每個鏈表中登記的定時器的拆分時長是一樣的,且每次定時器要插入時都是登記在該鏈表的尾部,所以越往頭部則定時器所剩余的拆分時長越短或相等,故每次掃描時只需要檢查頭部的定時器是否超時即可。如果沒有到時則返回步驟22掃描下一個時長類別的定時器鏈表,否則就要判斷該定時器是否實際到時,如步驟26所示,所謂實際到時就是指是否到達了整個時長,如時長22的定時器是否已經(jīng)過了22個tick,如果沒有實際到時,則將該定時器自本鏈表中取出,再確定其剩余時長的最高有效位,重新將該定時器插入到剩余時長的最高有效位對應的鏈表中,如步驟27所示,如前述時長為22的定時器,當在類別為24的鏈表中到時,但還沒有實際到時,所以再確定其剩下6個tick里的最高有效位所在位置的上標2,并把它登記到時長類別22的定時器鏈表2的尾部;否則啟動該定時器的超時任務,并刪除該定時器,即清空該定時器鏈節(jié),并將該定時器鏈節(jié)自鏈表中斷開,如步驟28所示;經(jīng)過步驟27或28以后,返回到步驟23繼續(xù)掃描,直到掃描完所有的鏈表。
      本發(fā)明方法還可以采取三進制對時長進行拆分,比如時長22可以用三進制拆分表示為22=2×32+1×31+1×30。當然還可以采用其他進位制。
      本發(fā)明所述的拆分定時器調(diào)度方法,本身造成的開銷非常低,能夠?qū)τ诓煌瑫r長和精度的定時器都能夠統(tǒng)一處理,有效地降低了系統(tǒng)的復雜程度,提高了可移植性和可維護性。
      權利要求
      1.一種定時器調(diào)度方法,其步驟包括(1)按照數(shù)學進位制確定定時器的超時時長的最高有效位,該最高有效位確定拆分時長;(3)將該定時器登記到最高有效位所對應定時器類別鏈表的尾部;(3)當定時器在該鏈表中的拆分時長到時,取出該定時器,再次按照所選定的數(shù)學進位制確定剩余時長的最高有效位,并登記到相應鏈表的尾部;(4)當該定時器超時,啟動該定時器的超時任務,并刪除該定時器。
      2.如權利要求1所述的定時器調(diào)度方法,其特征在于還包括掃描過程,該掃描過程是指系統(tǒng)從最小時長類別的鏈表開始循環(huán)處理每個類別的鏈表,包括以下步驟(a)判斷當前鏈表中是否還有定時器,若無則掃描下一個鏈表,否則讀取本鏈表頭部的定時器;(b)判斷該讀取的定時器在本鏈表中的拆分時長是否到時,若未到時則掃描下一個鏈表,否則執(zhí)行下一個步驟;(c)判斷該定時器是否超時,若超時則執(zhí)行步驟(4),否則執(zhí)行步驟(3);(d)返回步驟(b)。
      3.如權利要求1所述的定時器調(diào)度方法,其特征在于所述定時器類別鏈表按照所選定的數(shù)學進位制分類。
      4.如權利要求1所述的定時器調(diào)度方法,其特征在于所述的數(shù)學進位制為二進制。
      5.如權利要求1所述的定時器調(diào)度方法,其特征在于所述的數(shù)學進位制為三進制。
      6.如權利要求1所述的定時器調(diào)度方法,其特征在于所述最高有效位是指超時時長表示成選定的數(shù)學進位制相加形式時的最高次冪。
      7.如權利要求1所述的定時器調(diào)度方法,其特征在于所述的超時時長是指所述定時器的實際全部的時長。
      8.如權利要求1所述的定時器調(diào)度方法,其特征在于所述拆分時長與所述的鏈表的時長類別相等。
      9.如權利要求1所述的定時器調(diào)度方法,其特征在于所述刪除定時器是指清空該定時器鏈節(jié),并將該定時器鏈節(jié)自鏈表中斷開。
      全文摘要
      一種定時器調(diào)度方法,是指將定時器的超時時長按照一定的數(shù)學進位制進行拆分,如采用二進制時就是將時長拆分成若干個文檔編號H04M3/22GK1366416SQ02104829
      公開日2002年8月28日 申請日期2002年2月8日 優(yōu)先權日2002年2月8日
      發(fā)明者孫伊 申請人:華為技術有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1