一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法及系統(tǒng),包括在接收到允許訪問操作指令后,順次訪問以事件指針指向的入隊桶起始的各入隊桶中的事件,將屬于掩碼為0的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,并將取出事件的事件類型的掩碼置1,直至接收到阻塞訪問操作指令;從出隊桶的子鏈表的頭部取出事件執(zhí)行,執(zhí)行完后,先發(fā)出阻塞訪問操作指令,再將執(zhí)行完事件的事件類型的掩碼置0,最后發(fā)出允許訪問操作指令。本發(fā)明在從入隊桶中取出事件至出隊桶中時,保證出對桶中對應(yīng)同一事件類型只有一件事件,因此,本發(fā)明可在多網(wǎng)多信道共存的情況下保證事件的運行仍是串行結(jié)構(gòu),進(jìn)而適用于多網(wǎng)多信道共存的無線通信系統(tǒng)仿真。
【專利說明】一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及無線通信系統(tǒng)仿真領(lǐng)域,尤其涉及一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法及系統(tǒng)。
【背景技術(shù)】
[0002]無線通信系統(tǒng)仿真調(diào)度中的離散事件驅(qū)動技術(shù)目前被廣泛應(yīng)用于網(wǎng)絡(luò)仿真中對復(fù)雜通信系統(tǒng)的模擬,在通信場景的模擬中,大量節(jié)點之間的通信交互通過執(zhí)行帶有虛擬時間戳的離散事件來交互。仿真系統(tǒng)將等待處理的事件維護(hù)為一個優(yōu)先隊列,按照虛擬時間戳的先后順序依次處理事件,以此實現(xiàn)虛擬時鐘的功能。
[0003]在已有的成熟網(wǎng)絡(luò)仿真系統(tǒng)中(例如NS2),實現(xiàn)調(diào)度器優(yōu)先隊列的方法是基于未經(jīng)優(yōu)化的日歷隊列(CQ),CQ是一種基于哈希和鏈表數(shù)組的數(shù)據(jù)結(jié)構(gòu),CQ的優(yōu)點是事件插入(enqueue)操作和事件取出(dequeue)操作為0(1)復(fù)雜度,相比鏈表的O (η)復(fù)雜度和最小堆(min_heap)的O(1gn)復(fù)雜度,在大型網(wǎng)絡(luò)仿真應(yīng)用中,CQ有著明顯的時間復(fù)雜度優(yōu)勢,因此CQ被設(shè)置為主流網(wǎng)絡(luò)仿真系統(tǒng)如NS2的默認(rèn)事件調(diào)度器。CQ的實現(xiàn)機理為:CQ維護(hù)了一個桶(bucket)的數(shù)組,一個桶對應(yīng)一個子鏈表,每個桶對應(yīng)的時間長度對應(yīng)日歷的“天”,整個數(shù)組對應(yīng)的時間長度對應(yīng)日歷的“年”,即所有桶的時間長度加起來即等于數(shù)組的時間長度,每個桶持有存儲對應(yīng)“天”內(nèi)發(fā)生事件的子鏈表的頭部指針和長度,其中,于不同年份但同一天發(fā)生的事件存儲于同一桶對應(yīng)的子鏈表中。在此,所謂的“天”和“年”都是一個相對時間概念,只是與日歷相對應(yīng)說明各桶之間的關(guān)系和桶與整個數(shù)組之間的關(guān)系,并不是真正意義上的“天”和“年”,其中的“年”具體指一個時間段,而其中的“天”具體指將該時間段平均分成多份的時間單位。
[0004]CQ在執(zhí)行事件插入操作時,需要通過哈希算法查找當(dāng)前插入事件所對應(yīng)的桶的位置,然后再根據(jù)當(dāng)前插入事件的具體發(fā)生時間,遍歷子鏈表找到當(dāng)前插入事件應(yīng)該插入的位置;CQ在執(zhí)行事件取出操作時,需要從CQ所維護(hù)的當(dāng)前處理事件所在的桶,查找子鏈表中屬于當(dāng)前年份的第一個事件,取出執(zhí)行,如果當(dāng)前處理事件所在的桶內(nèi)沒有當(dāng)前年份的事件,則需要依次遍歷所有桶查找當(dāng)前年份的事件。
[0005]由此可見,CQ調(diào)度器的插入、取出、執(zhí)行、重構(gòu)等運作機理是串行結(jié)構(gòu),但在現(xiàn)代大型網(wǎng)絡(luò)仿真中,由于無線傳感網(wǎng)規(guī)模龐大,網(wǎng)絡(luò)拓?fù)鋸?fù)雜,多網(wǎng)多信道共存使得網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)復(fù)雜,等待處理的累計仿真事件數(shù)量非常多,而這種基于單流水線串行執(zhí)行的傳統(tǒng)仿真事件調(diào)度器不能很好的利用多核心處理器性能,同時耗費大量事件在仿真事件調(diào)度器的重構(gòu)上,影響了執(zhí)行的效率。因而優(yōu)化大規(guī)模復(fù)雜拓?fù)錀l件下的仿真事件調(diào)度方法顯得非常有意義。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供了一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法及系統(tǒng),以適應(yīng)多網(wǎng)多信道共存的無線通信系統(tǒng)仿真。[0007]為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法,包括:
[0008]在接收到允許訪問操作指令后,順次訪問以事件指針指向的入隊桶起始的各入隊桶的子鏈表中的事件,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,并將取出至出隊桶的子鏈表中的事件所屬的事件類型的掩碼置I及將所述出隊桶的子鏈表的長度加1,直至接收到阻塞訪問操作指令為止;
[0009]從所述出隊桶的子鏈表的頭部取出事件執(zhí)行;
[0010]在執(zhí)行完事件后,先發(fā)出所述阻塞訪問操作指令,再將執(zhí)行完的事件所屬的事件類型的掩碼置O及將所述出隊桶的子鏈表的長度減1,最后發(fā)出所述允許訪問操作指令;
[0011]在所述事件指針指向的入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向下一入隊桶;
[0012]在最后一個入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向第一個入隊桶,并將下一年份作為所述當(dāng)前訪問年份。
[0013]優(yōu)選的是,所述方法還包括:
[0014]在將入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部時,禁止向?qū)?yīng)入隊桶的子鏈表中插入新的事件;
[0015]在向入隊桶的子鏈表中插入新的事件時,禁止將對應(yīng)入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部。
[0016]優(yōu)選的是,所述在將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部包括:
[0017]賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針;
[0018]獲取所述插入基準(zhǔn)指針指向的節(jié)點的指針域;
[0019]判斷所述插入基準(zhǔn)指針指向的節(jié)點的指針域是否指向空;
[0020]如是,則將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件插入至所述插入基準(zhǔn)指針指向的節(jié)點后成為尾節(jié)點,并使所述插入基準(zhǔn)指針指向的節(jié)點的指針域指向尾節(jié)點,使尾節(jié)點的指針域指向空,及更新所述尾節(jié)點指針;
[0021]如否,則重新賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針。
[0022]優(yōu)選的是,所述從所述出隊桶的子鏈表的頭部取出事件執(zhí)行包括:
[0023]賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域,其中,所述虛擬頭節(jié)點的指針域指向頭結(jié)點;
[0024]獲取所述虛擬頭節(jié)點的指針域;
[0025]判斷所述取出基準(zhǔn)指針是否等于獲取的虛擬頭節(jié)點的指針域;
[0026]如是,則取出所述取出基準(zhǔn)指針指向的節(jié)點中的事件執(zhí)行,并更新所述虛擬頭節(jié)點的指針域;
[0027]如否,則重新賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域。
[0028]優(yōu)選的是,所述方法還包括:
[0029]獲取日歷隊列的所有入隊桶的子鏈表的長度之和作為當(dāng)前等待事件的數(shù)量;
[0030]獲取日歷隊列的入隊桶個數(shù),將所述入隊桶個數(shù)乘以入隊桶容量的期望值作為日歷隊列的擴大閾值,將所述入隊桶個數(shù)除以所述入隊桶容量的期望值作為日歷隊列的縮小閾值;
[0031]在所述當(dāng)前等待事件的數(shù)量大于所述擴大閾值或者小于所述縮小閾值時,根據(jù)所述日歷隊列對應(yīng)的排隊系統(tǒng)類型計算所述日歷隊列的平均隊列長度,并將所述入隊桶的數(shù)量調(diào)整為等于所述平均隊列長度除以所述入隊桶容量的期望值。
[0032]優(yōu)選的是,所述方法還包括:所述平均隊列長度為在事件到達(dá)日歷隊列及從入隊桶中取出事件至出隊桶中處理趨向平衡時的穩(wěn)態(tài)下的平均隊列長度。
[0033]優(yōu)選的是,所述方法還包括:
[0034]所述日歷隊列形成為事件到達(dá)日歷隊列服從普阿松過程,從入隊桶中取出事件至出隊桶中處理服從負(fù)指數(shù)分布,服務(wù)臺數(shù)為可并列從所述出隊桶的子鏈表的頭部取出事件執(zhí)行的最大線程數(shù)量,所述日歷隊列的容量受限的排隊系統(tǒng)。
[0035]優(yōu)選的是,所述獲取所述日歷隊列的平均隊列長度包括:
[0036]獲取當(dāng)前時刻單位時間內(nèi)到達(dá)所述日歷隊列的事件數(shù)量,作為當(dāng)前到達(dá)率;
[0037]獲取當(dāng)前時刻單位時間內(nèi)從所述入隊桶中取出事件至出隊桶中處理的數(shù)量,作為當(dāng)前處理率;
[0038]根據(jù)所述當(dāng)前到達(dá)率、所述當(dāng)前處理率和所述服務(wù)臺數(shù)計算所述平均隊列長度。
[0039]優(yōu)選的是,所述方法還包括:
[0040]以設(shè)定的時間間隔獲取所述當(dāng)前等待事件的數(shù)量。
[0041]為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度系統(tǒng),包括:
[0042]提取模塊,用于在接收到允許訪問操作指令后,順次訪問以事件指針指向的入隊桶起始的各入隊桶的子鏈表中的事件,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,并將取出至出隊桶的子鏈表中的事件所屬的事件類型的掩碼置I及將所述出隊桶的子鏈表的長度加1,直至接收到阻塞訪問操作指令為止;
[0043]執(zhí)行模塊,用于從所述出隊桶的子鏈表的頭部取出事件執(zhí)行;及用于在執(zhí)行完事件后,先發(fā)出所述阻塞訪問操作指令,再將執(zhí)行完的事件所屬的事件類型的掩碼置O及將所述出隊桶的子鏈表的長度減1,最后發(fā)出所述允許訪問操作指令;以及,
[0044]定位模塊,用于在所述事件指針指向的入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向下一入隊桶;及用于在最后一個入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向第一個入隊桶,并將下一年份作為所述當(dāng)前訪問年份。
[0045]優(yōu)選的是,所述提取模塊還用于在將入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部時,禁止所述執(zhí)行模塊向?qū)?yīng)入隊桶的子鏈表中插入新的事件;所述執(zhí)行模塊還用于在向入隊桶的子鏈表中插入新的事件時,禁止所述提取模塊將對應(yīng)入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部。
[0046]優(yōu)選的是,所述提取模塊包括:
[0047]提取賦值單元,用于賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針,及用于在所述插入基準(zhǔn)指針指向的節(jié)點的指針域未指向空時重新賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針;
[0048]提取指針獲取單元,用于獲取所述插入基準(zhǔn)指針指向的節(jié)點的指針域;
[0049]提取判斷單元,用于判斷所述插入基準(zhǔn)指針指向的節(jié)點的指針域是否指向空;以及,
[0050]提取插入單元,用于在所述插入基準(zhǔn)指針指向的節(jié)點的指針域指向空時,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件插入至所述插入基準(zhǔn)指針指向的節(jié)點后成為尾節(jié)點,并使所述插入基準(zhǔn)指針指向的節(jié)點的指針域指向尾節(jié)點,使尾節(jié)點的指針域指向空,及更新所述尾節(jié)點指針。
[0051 ] 優(yōu)選的是,所述執(zhí)行模塊包括:
[0052]執(zhí)行賦值單元,用于賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域,及用于在所述取出基準(zhǔn)指針不等于獲取的虛擬頭節(jié)點的指針域時重新賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域,其中,所述虛擬頭節(jié)點的指針域指向頭結(jié)點;
[0053]執(zhí)行指針獲取單元,用于獲取所述虛擬頭節(jié)點的指針域;
[0054]執(zhí)行判斷單元,用于判斷所述取出基準(zhǔn)指針是否等于獲取的虛擬頭節(jié)點的指針域;以及,
[0055]執(zhí)行處理單元,用于在所述取出基準(zhǔn)指針等于獲取的虛擬頭節(jié)點的指針域時,取出所述取出基準(zhǔn)指針指向的節(jié)點中的事件執(zhí)行,并更新所述虛擬頭節(jié)點的指針域。
[0056]優(yōu)選的是,所述系統(tǒng)還包括:
[0057]事件數(shù)量獲取模塊,用于獲取日歷隊列的所有入隊桶的子鏈表的長度之和作為當(dāng)前等待事件的數(shù)量;
[0058]閾值獲取模塊,用于獲取日歷隊列的入隊桶個數(shù),將所述入隊桶個數(shù)乘以入隊桶容量的期望值作為日歷隊列的擴大閾值,將所述入隊桶個數(shù)除以所述入隊桶容量的期望值作為日歷隊列的縮小閾值;以及,
[0059]放縮模塊,用于在所述當(dāng)前等待事件的數(shù)量大于所述擴大閾值或者小于所述縮小閾值時,根據(jù)所述日歷隊列對應(yīng)的排隊系統(tǒng)類型計算所述日歷隊列的平均隊列長度,并將所述入隊桶的數(shù)量調(diào)整為等于所述平均隊列長度除以所述入隊桶容量的期望值。
[0060]本發(fā)明的有益效果為:本發(fā)明的應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法及對原有日歷隊列的格式進(jìn)行了改進(jìn),在原有各桶的基礎(chǔ)上,增加了出隊桶,使得原有各桶成為入隊桶,由于本發(fā)明中插入至入隊桶中等待處理的事件要先提取至出隊桶中排隊,而且在從入隊桶中取出事件至出隊桶中排隊時,保證出對桶中屬于同一事件類型的事件只有一件,因此,本發(fā)明可在多網(wǎng)多信道共存的情況下保證事件的插入、取出、執(zhí)行、重構(gòu)等運作機理仍是串行結(jié)構(gòu),使得本發(fā)明的方法及系統(tǒng)適用于多網(wǎng)多信道共存的無線通信系統(tǒng)仿真。
【專利附圖】
【附圖說明】
[0061]圖1示出了根據(jù)本發(fā)明所述應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法的一種實施方式的流程圖;
[0062]圖2示出了根據(jù)本發(fā)明所述應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法中將入隊桶中的事件提取至出對桶中的一種實施方式的流程圖。[0063]圖3示出了圖1中將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部的一種實施方式的流程圖;
[0064]圖4示出了圖1中從所述出隊桶的子鏈表的頭部取出事件執(zhí)行的一種實施方式的流程圖;
[0065]圖5示出了根據(jù)本發(fā)明所述應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度系統(tǒng)的一種實施方式的方框原理圖;
[0066]圖6示出了圖4所示提取模塊的一種實施結(jié)構(gòu)的方框原理圖;
[0067]圖7示出了圖4中執(zhí)行模塊的一種實施結(jié)構(gòu)的方框原理圖。
【具體實施方式】
[0068]下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0069]在本發(fā)明的應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法及系統(tǒng)中,除日歷隊列原始的桶外還設(shè)置一出隊桶,而日歷隊列原始的桶在本發(fā)明中被稱之為入隊桶,到達(dá)日歷隊列的事件首先要插入至入隊桶中等待處理,而所有入隊桶中的事件均需要先被插入至出對桶中排隊才能最終得到相應(yīng)的處理。
[0070]如圖1所示,本發(fā)明的應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法包括:
[0071]步驟S1:在接收到允許訪問操作指令后,順次訪問以事件指針指向的入隊桶起始的各入隊桶的子鏈表中的事件,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,并將取出至出隊桶的子鏈表中的事件所屬的事件類型的掩碼置I及將所述出隊桶的子鏈表的長度加1,直至接收到阻塞訪問操作指令為止。以日歷隊列具有八個入隊桶為例,如果事件指針指向第四個入隊桶,則每次接收到允許訪問操作指令后,將順次訪問第四至第八入隊桶的子鏈表中的事件,在訪問的過程中,如果接收到阻塞訪問操作指令,則停止正在進(jìn)行的訪問操作,在此,由于在將到達(dá)日歷隊列的事件插入入隊桶中時是按照事件發(fā)生的時間確定對應(yīng)的入隊桶及確定在對應(yīng)入隊桶中的具體插入位置,即在同一入隊桶的子鏈表中的事件為發(fā)生在不同年份的同一天發(fā)生的事件,而且這些事件在子鏈表中按照發(fā)生時間先后排序,因此,在進(jìn)行訪問操作時,對于同一個入隊桶,如果當(dāng)前訪問的節(jié)點中的事件已經(jīng)不屬于當(dāng)前年份,則即可跳轉(zhuǎn)至下一入隊桶繼續(xù)進(jìn)行訪問。上述事件指針在初始時指向弟Iv入隊桶。
[0072]步驟S21:從出隊桶的子鏈表的頭部取出事件執(zhí)行;在此,由于上述訪問操作是將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,因此,每次從出隊桶的子鏈表的頭部取出事件執(zhí)行,可保證對于屬于相同事件類型的事件是按照先到達(dá)先處理的原則進(jìn)行調(diào)度。
[0073]步驟S22:在執(zhí)行完事件后,先發(fā)出阻塞訪問操作指令,以阻塞步驟SI進(jìn)行的訪問操作,之后執(zhí)行步驟S23。
[0074]步驟S23:將執(zhí)行完的事件所屬的事件類型的掩碼置0,使得下一次訪問操作可將屬于該事件類型的事件取出至出對桶中,之后執(zhí)行步驟S24。
[0075]步驟S24:將出隊桶的子鏈表的長度減1,之后執(zhí)行步驟S25。[0076]步驟S25:發(fā)出允許訪問操作指令,使步驟SI的訪問操作重新進(jìn)行,在此,只要事件指針沒有改變,訪問操作每次均將從同一位置開始進(jìn)行。在本發(fā)明中,可以改變事件指針的事件為:在事件指針指向的入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時(這說明該入隊桶中的所有當(dāng)前訪問年份的事件至少已經(jīng)進(jìn)入出隊桶中),使事件指針指向下一入隊桶;在最后一個入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時(說明入隊桶中所有當(dāng)前訪問年份的事件至少已經(jīng)進(jìn)入出隊桶中),使事件指針指向第一個入隊桶,并將下一年份作為當(dāng)前訪問年份。
[0077]根據(jù)以上方法可知,由于本發(fā)明的方法中引入了一個出對桶,并利用掩碼保證出對桶中屬于同一事件類型的事件只有一件,因此,本發(fā)明的方法允許多個執(zhí)行線程并列進(jìn)行從出對桶的子鏈表的頭部取出事件執(zhí)行的操作,即本發(fā)明的方法可應(yīng)用于多信道共存的無線通信系統(tǒng)仿真。
[0078]上述步驟SI可采用圖2所示的步驟進(jìn)行,具體為:
[0079]步驟Sll:賦值訪問指針等于事件指針,使訪問指針指向事件指針指向的入隊桶的頭結(jié)點,之后執(zhí)行步驟SI I。
[0080]步驟S12:判斷訪問指針指向的節(jié)點存儲的事件是否屬于當(dāng)前訪問年份,如是則執(zhí)行步驟S13,如否則執(zhí)行步驟S19。
[0081]步驟S13:提取訪問指針指向的節(jié)點存儲的事件的事件類型,之后執(zhí)行步驟S14。
[0082]步驟S14:判斷提取出的事件類型的掩碼是否為0,如是則執(zhí)行步驟S15,如否則執(zhí)行步驟S17。
[0083]步驟S15:將訪問指針指向的節(jié)點存儲的事件取出至出對桶的子鏈表的尾部,之后執(zhí)行步驟S16。
[0084]步驟S16:將取出事件所述的事件類型的掩碼置1,將出對桶的子鏈表的長度加1,之后執(zhí)行步驟S17。
[0085]步驟S17:判斷訪問指針指向的節(jié)點的指針域是否指向空,如是則執(zhí)行步驟S19,如否則執(zhí)行步驟S18。
[0086]步驟S18:使訪問指針指向下一節(jié)點,之后執(zhí)行步驟S12。
[0087]步驟S19:使訪問指針指向下一入隊桶的頭結(jié)點,之后執(zhí)行步驟S12。
[0088]本發(fā)明的方法在執(zhí)行上述步驟Sll至步驟S19的過程中,還執(zhí)行如下操作:
[0089]步驟SllO:判斷是否接收到阻塞訪問操作指令,如是則執(zhí)行步驟S111,如否則繼續(xù)執(zhí)行上述訪問操作。
[0090]步驟Slll:阻塞上述訪問操作,之后執(zhí)行步驟S112。
[0091]步驟S112:判斷是否接收到允許訪問操作指令,如是則執(zhí)行上述步驟S11,如否則繼續(xù)執(zhí)行步驟Slll。
[0092]為了解決從入隊桶中取出事件至出對桶中與將事件插入至入隊桶中之間可能存在的競爭問題,本發(fā)明方法還可包括:在將入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部時,禁止向?qū)?yīng)入隊桶的子鏈表中插入新的事件;在向入隊桶的子鏈表中插入新的事件時,禁止將對應(yīng)入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部。在此,可為各入隊桶設(shè)置一個讀寫鎖,這樣,在將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部時,將對應(yīng)入隊桶的寫鎖關(guān)閉,以禁止向?qū)?yīng)入隊桶的子鏈表中插入新的事件;在向入隊桶的子鏈表中插入新的事件時,將對應(yīng)入隊桶的讀鎖關(guān)閉,以禁止將對應(yīng)入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部。
[0093]如圖3所示,在將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部可進(jìn)一步包括:
[0094]步驟S151:賦值插入基準(zhǔn)指針等于出隊桶的尾節(jié)點指針,之后執(zhí)行步驟S152。
[0095]步驟S152:獲取插入基準(zhǔn)指針指向的節(jié)點的指針域,之后執(zhí)行步驟S153。
[0096]步驟S153:判斷插入基準(zhǔn)指針指向的節(jié)點的指針域是否指向空,如是則執(zhí)行步驟S154,如否則執(zhí)行步驟S151,該步驟是為了判斷在具體進(jìn)行插入操作時,出隊桶的尾節(jié)點是否已發(fā)生了變化,如已經(jīng)發(fā)生了變化則重新執(zhí)行步驟S151。
[0097]步驟S154:屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件插入至插入基準(zhǔn)指針指向的節(jié)點后成為尾節(jié)點,之后執(zhí)行步驟S155。
[0098]步驟S155:使插入基準(zhǔn)指針指向的節(jié)點的指針域指向尾節(jié)點,使尾節(jié)點的指針域指向空,之后執(zhí)行步驟S156。
[0099]步驟S156:更新尾節(jié)點指針。
[0100]為了解決在將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部及從所述出隊桶的子鏈表的頭部取出事件執(zhí)行之間可能存在的競爭問題,同樣可采用為出對桶設(shè)置讀寫鎖的方式進(jìn)行,但是為了增加處理效率,也可以采用如下的通過設(shè)置虛擬頭節(jié)點實現(xiàn)的無鎖化處理,具體為:
[0101]如圖4所示,而從出隊桶的子鏈表的頭部取出事件執(zhí)行可進(jìn)一步包括:
[0102]步驟S211:賦值取出基準(zhǔn)指針等于出隊桶的子鏈表中虛擬頭節(jié)點的指針域,之后執(zhí)行步驟S212,其中,所述虛擬頭節(jié)點的指針域指向頭結(jié)點,所謂的虛擬頭結(jié)點是僅具有指針域而不具有數(shù)據(jù)域的節(jié)點,其指針域指向真正的頭結(jié)點,該節(jié)點在子鏈表為空時也不會消失。
[0103]步驟S212:獲取虛擬頭節(jié)點的指針域,即獲取頭結(jié)點的指針,之后執(zhí)行步驟S213。
[0104]步驟S213:判斷取出基準(zhǔn)指針是否等于獲取的虛擬頭節(jié)點的指針域,如是,則執(zhí)行步驟S214,如否,則執(zhí)行步驟S211 ;該步驟是為了判斷在具體取出執(zhí)行時,判斷頭結(jié)點是否發(fā)生了變化,如未變化則取出執(zhí)行,如賦值時指向的頭結(jié)點已經(jīng)被其他線程取出執(zhí)行,則需要查找新的頭結(jié)點。
[0105]步驟S214:取出該取出基準(zhǔn)指針指向的節(jié)點中的事件執(zhí)行,之后執(zhí)行步驟S215。
[0106]步驟S215:更新虛擬頭節(jié)點的指針域。
[0107]另外,為了使本發(fā)明的方法適用于可多個線程并列進(jìn)行將事件插入至入隊桶中的操作,為了解決多個線程同時在同一入隊桶中進(jìn)行插入之間的競爭問題,同樣可以采用上述的不斷判斷入隊桶的尾節(jié)點是否發(fā)生變化的方法進(jìn)行,如未變化則插入,如已變化則重新獲取入隊桶的尾節(jié)點的指針。
[0108]由此可見,日歷隊列維護(hù)的整個數(shù)組中入隊桶的個數(shù)和入隊桶的容量是影響事件插入操作和事件取出操作性能的主要因素,如果數(shù)組中入隊桶的數(shù)量太多,則對增加事件取出操作的遍歷度,如果數(shù)組中入隊桶的數(shù)量太少,則會影響遍歷子鏈表查找當(dāng)前插入事件應(yīng)該插入的位置的效率?;谏鲜銮闆r,通常要根據(jù)當(dāng)前等待事件的數(shù)量凡(所有入隊桶的子鏈表的長度之和)調(diào)整數(shù)組中入隊桶的數(shù)量,即使入隊桶的數(shù)量隨著當(dāng)前等待事件的數(shù)量的增加或者減少而對應(yīng)地增加或者減少,這就需要對桶的數(shù)量進(jìn)行放縮,傳統(tǒng)的適用于單網(wǎng)單信道仿真的日歷隊列的放縮的代價已經(jīng)比較高昂,對于本發(fā)明的適用于多網(wǎng)多信道的仿真的日歷隊列的放縮的代價將更加高昂,因此,本發(fā)明提出了 一種新的放縮方法。
[0109]為此,本發(fā)明的方法還包括:
[0110]步驟S31:獲取日歷隊列的所有入隊桶的子鏈表的長度之和作為當(dāng)前等待事件的
數(shù)量Ne。
[0111]步驟S32:獲取日歷隊列的入隊桶個數(shù),將入隊桶個數(shù)乘以入隊桶容量的期望值作為日歷隊列的擴大閾值,將入隊桶個數(shù)除以所述入隊桶容量的期望值作為日歷隊列的縮小閾值。
[0112]步驟S33:在所當(dāng)前等待事件的數(shù)量凡大于擴大閾值或者小于縮小閾值時,根據(jù)日歷隊列對應(yīng)的排隊系統(tǒng)類型計算日歷隊列的平均隊列長度,并將入隊桶的數(shù)量調(diào)整為等于平均隊列長度除以入隊桶容量的期望值(如存在余數(shù)則舍去)。在此,根據(jù)大量的仿真實驗,入隊桶的平均容量取為3或4時,系統(tǒng)性能最好,因此,入隊桶容量的期望值通常設(shè)置為3或4。
[0113]為了便于預(yù)測排隊系統(tǒng)的平均隊列長度,上述平均隊列長度可為在事件到達(dá)日歷隊列及從入隊桶中取出事件至出隊桶中處理趨向平衡時的穩(wěn)態(tài)下的平均隊列長度,該穩(wěn)態(tài)也可理解為是在任意時刻當(dāng)前等待事件的數(shù)量為某一數(shù)值的概率不再發(fā)生變化的狀態(tài)。
[0114]在本發(fā)明的方法中可將日歷隊列構(gòu)件為事件到達(dá)日歷隊列服從普阿松過程,從入隊桶中取出事件至出隊桶中處理服從負(fù)指數(shù)分布,服務(wù)臺數(shù)為可并列從所述出隊桶的子鏈表的頭部取出事件執(zhí)行的最大線程數(shù)量,日歷隊列的容量受限的排隊系統(tǒng),即M/M/C/N排隊系統(tǒng),其中C為服務(wù)臺數(shù),N為日歷隊列的最大容量,第一個M為事件到達(dá)服從普阿松過程,第二個M為事件處理服從負(fù)指數(shù)分布。
[0115]根據(jù)M/M/C/N排隊系統(tǒng)可知,穩(wěn)態(tài)下的平均隊列長度僅與當(dāng)前時刻單位時間內(nèi)到達(dá)所述日歷隊列的事件數(shù)量(即當(dāng)前到達(dá)率),當(dāng)前時刻單位時間內(nèi)從所述入隊桶中取出事件至出隊桶中處理的數(shù)量(即當(dāng)前處理率),及服務(wù)臺數(shù)有關(guān),因此,上述獲取所述日歷隊列的平均隊列長度可進(jìn)一步包括:獲取當(dāng)前到達(dá)率;獲取當(dāng)前處理率;根據(jù)當(dāng)前到達(dá)率、當(dāng)前處理率和服務(wù)臺數(shù)計算得到平均隊列長度。另外,本發(fā)明可以設(shè)定的時間間隔獲取當(dāng)前等待事件的數(shù)量,以定期判斷是否需要進(jìn)行放縮。
[0116]相對應(yīng)地,如圖5所示,本發(fā)明的應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度系統(tǒng)包括提取模塊1、執(zhí)行模塊2和定位模塊3,其中,提取模塊I用于在接收到允許訪問操作指令后,順次訪問以事件指針指向的入隊桶起始的各入隊桶的子鏈表中的事件,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,并將取出至出隊桶的子鏈表中的事件所屬的事件類型的掩碼置I及將所述出隊桶的子鏈表的長度加1,直至接收到阻塞訪問操作指令為止;執(zhí)行模塊2用于從所述出隊桶的子鏈表的頭部取出事件執(zhí)行;及用于在執(zhí)行完事件后,先發(fā)出所述阻塞訪問操作指令,再將執(zhí)行完的事件所屬的事件類型的掩碼置O及將所述出隊桶的子鏈表的長度減1,最后發(fā)出所述允許訪問操作指令;定位模塊3用于在事件指針指向的入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向下一入隊桶;及用于在最后一個入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向第一個入隊桶,并將下一年份作為所述當(dāng)前訪問年份。本發(fā)明的系統(tǒng)支持設(shè)置多個執(zhí)行模塊2的無線通信系統(tǒng)仿真。
[0117]該提取模塊I還用于在將入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部時,禁止所述執(zhí)行模塊向?qū)?yīng)入隊桶的子鏈表中插入新的事件。該執(zhí)行模塊2還用于在向入隊桶的子鏈表中插入新的事件時,禁止所述提取模塊將對應(yīng)入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,即本發(fā)明的系統(tǒng)可由執(zhí)行模塊2完成將到達(dá)日歷隊列的事件插入至入隊桶中的操作。
[0118]如圖6所示,該提取模塊I可進(jìn)一步包括提取賦值單元11、提取指針獲取單元12、提取判斷單元13和提取插入單元14,其中,該提取賦值單元11用于賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針,及用于在所述插入基準(zhǔn)指針指向的節(jié)點的指針域未指向空時重新賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針;該提取指針獲取單元12用于獲取插入基準(zhǔn)指針指向的節(jié)點的指針域;該提取判斷單元13用于判斷插入基準(zhǔn)指針指向的節(jié)點的指針域是否指向空;該提取插入單元14用于在插入基準(zhǔn)指針指向的節(jié)點的指針域指向空時,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件插入至所述插入基準(zhǔn)指針指向的節(jié)點后成為尾節(jié)點,并使所述插入基準(zhǔn)指針指向的節(jié)點的指針域指向尾節(jié)點,使尾節(jié)點的指針域指向空,及更新所述尾節(jié)點指針。
[0119]如圖7所示,該執(zhí)行模塊2可進(jìn)一步包括執(zhí)行賦值單元21、執(zhí)行指針獲取單元22、執(zhí)行判斷單元23和執(zhí)行處理單元24,其中,該執(zhí)行賦值單元用于賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域,及用于在所述取出基準(zhǔn)指針不等于獲取的虛擬頭節(jié)點的指針域時重新賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域,其中,所述虛擬頭節(jié)點的指針域指向頭結(jié)點;該執(zhí)行指針獲取單元用于獲取虛擬頭節(jié)點的指針域;該執(zhí)行判斷單元用于判斷所述取出基準(zhǔn)指針是否等于獲取的虛擬頭節(jié)點的指針域;該執(zhí)行處理單元用于在取出基準(zhǔn)指針等于獲取的虛擬頭節(jié)點的指針域時,取出所述取出基準(zhǔn)指針指向的節(jié)點中的事件執(zhí)行,并更新所述虛擬頭節(jié)點的指針域。
[0120]另外,本發(fā)明的系統(tǒng)還可以包括事件數(shù)量獲取模塊、閾值獲取模塊和放縮模塊,該事件數(shù)量獲取模塊用于獲取日歷隊列的所有入隊桶的子鏈表的長度之和作為當(dāng)前等待事件的數(shù)量;該閾值獲取模塊用于獲取日歷隊列的入隊桶個數(shù),將所述入隊桶個數(shù)乘以入隊桶容量的期望值作為日歷隊列的擴大閾值,將所述入隊桶個數(shù)除以所述入隊桶容量的期望值作為日歷隊列的縮小閾值;該放縮模塊用于在當(dāng)前等待事件的數(shù)量大于擴大閾值或者小于縮小閾值時,根據(jù)日歷隊列對應(yīng)的排隊系統(tǒng)類型計算日歷隊列的平均隊列長度,并將入隊桶的數(shù)量調(diào)整為等于所述平均隊列長度除以入隊桶容量的期望值。
[0121]以上依據(jù)圖式所示的實施例詳細(xì)說明了本發(fā)明的構(gòu)造、特征及作用效果,以上所述僅為本發(fā)明的較佳實施例,但本發(fā)明不以圖面所示限定實施范圍,凡是依照本發(fā)明的構(gòu)想所作的改變,或修改為等同變化的等效實施例,仍未超出說明書與圖示所涵蓋的精神時,均應(yīng)在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度方法,其特征在于,包括: 在接收到允許訪問操作指令后,順次訪問以事件指針指向的入隊桶起始的各入隊桶的子鏈表中的事件,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,并將取出至出隊桶的子鏈表中的事件所屬的事件類型的掩碼置I及將所述出隊桶的子鏈表的長度加1,直至接收到阻塞訪問操作指令為止; 從所述出隊桶的子鏈表的頭部取出事件執(zhí)行; 在執(zhí)行完事件后,先發(fā)出所述阻塞訪問操作指令,再將執(zhí)行完的事件所屬的事件類型的掩碼置O及將所述出隊桶的子鏈表的長度減1,最后發(fā)出所述允許訪問操作指令; 在所述事件指針指向的入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向下一入隊桶; 在最后一個入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向第一個入隊桶,并將下一年份作為所述當(dāng)前訪問年份。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在將入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部時,禁止向?qū)?yīng)入隊桶的子鏈表中插入新的事件; 在向入隊桶的子鏈表中插入新的事件時,禁止將對應(yīng)入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部包括: 賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針; 獲取所述插入基準(zhǔn)指針指向的節(jié)點的指針域; 判斷所述插入基準(zhǔn)指針指向的節(jié)點的指針域是否指向空; 如是,則將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件插入至所述插入基準(zhǔn)指針指向的節(jié)點后成為尾節(jié)點,并使所述插入基準(zhǔn)指針指向的節(jié)點的指針域指向尾節(jié)點,使尾節(jié)點的指針域指向空,及更新所述尾節(jié)點指針; 如否,則重新賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,所述從所述出隊桶的子鏈表的頭部取出事件執(zhí)行包括: 賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域,其中,所述虛擬頭節(jié)點的指針域指向頭結(jié)點; 獲取所述虛擬頭節(jié)點的指針域; 判斷所述取出基準(zhǔn)指針是否等于獲取的虛擬頭節(jié)點的指針域; 如是,則取出所述取出基準(zhǔn)指針指向的節(jié)點中的事件執(zhí)行,并更新所述虛擬頭節(jié)點的指針域; 如否,則重新賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 獲取日歷隊列的所有入隊桶的子鏈表的長度之和作為當(dāng)前等待事件的數(shù)量; 獲取日歷隊列的入隊桶個數(shù),將所述入隊桶個數(shù)乘以入隊桶容量的期望值作為日歷隊列的擴大閾值,將所述 入隊桶個數(shù)除以所述入隊桶容量的期望值作為日歷隊列的縮小閾值; 在所述當(dāng)前等待事件的數(shù)量大于所述擴大閾值或者小于所述縮小閾值時,根據(jù)所述日歷隊列對應(yīng)的排隊系統(tǒng)類型計算所述日歷隊列的平均隊列長度,并將所述入隊桶的數(shù)量調(diào)整為等于所述平均隊列長度除以所述入隊桶容量的期望值。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括:所述平均隊列長度為在事件到達(dá)日歷隊列及從入隊桶中取出事件至出隊桶中處理趨向平衡時的穩(wěn)態(tài)下的平均隊列長度。
7.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述方法還包括: 所述日歷隊列形成為事件到達(dá)日歷隊列服從普阿松過程,從入隊桶中取出事件至出隊桶中處理服從負(fù)指數(shù)分布,服務(wù)臺數(shù)為可并列從所述出隊桶的子鏈表的頭部取出事件執(zhí)行的最大線程數(shù)量,所述日歷隊列的容量受限的排隊系統(tǒng)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述獲取所述日歷隊列的平均隊列長度包括: 獲取當(dāng)前時刻單位時間內(nèi)到達(dá)所述日歷隊列的事件數(shù)量,作為當(dāng)前到達(dá)率; 獲取當(dāng)前時刻單位時間內(nèi)從所述入隊桶中取出事件至出隊桶中處理的數(shù)量,作為當(dāng)前處理率; 根據(jù)所述當(dāng)前到達(dá)率、所述當(dāng)前處理率和所述服務(wù)臺數(shù)計算所述平均隊列長度。
9.根據(jù)權(quán)利要求5或6所述的方法,其特征在于,所述方法還包括: 以設(shè)定的時間間隔獲取所述當(dāng)前等待事件的數(shù)量。
10.一種應(yīng)用于無線通信系統(tǒng)仿真的調(diào)度系統(tǒng),其特征在于,包括: 提取模塊,用于在接收到允許訪問操作指令后,順次訪問以事件指針指向的入隊桶起始的各入隊桶的子鏈表中的事件,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部,并將取出至出隊桶的子鏈表中的事件所屬的事件類型的掩碼置I及將所述出隊桶的子鏈表的長度加1,直至接收到阻塞訪問操作指令為止; 執(zhí)行模塊,用于從所述出隊桶的子鏈表的頭部取出事件執(zhí)行;及用于在執(zhí)行完事件后,先發(fā)出所述阻塞訪問操作指令,再將執(zhí)行完的事件所屬的事件類型的掩碼置O及將所述出隊桶的子鏈表的長度減1,最后發(fā)出所述允許訪問操作指令;以及, 定位模塊,用于在所述事件指針指向的入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向下一入隊桶;及用于在最后一個入隊桶的子鏈表中沒有當(dāng)前訪問年份的事件時,使所述事件指針指向第一個入隊桶,并將下一年份作為所述當(dāng)前訪問年份。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述提取模塊還用于在將入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部時,禁止所述執(zhí)行模塊向?qū)?yīng)入隊桶的子鏈表中插入新的事件;所述執(zhí)行模塊還用于在向入隊桶的子鏈表中插入新的事件時,禁止所述提取模塊將對應(yīng)入隊桶中屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件取出至出隊桶的子鏈表的尾部。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述提取模塊包括: 提取賦值單元,用于賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針,及用于在所述插入基準(zhǔn)指針指向的節(jié)點的指針域未指向空時重新賦值插入基準(zhǔn)指針等于所述出隊桶的尾節(jié)點指針;提取指針獲取單元,用于獲取所述插入基準(zhǔn)指針指向的節(jié)點的指針域;提取判斷單元,用于判斷所述插入基準(zhǔn)指針指向的節(jié)點的指針域是否指向空;以及,提取插入單元,用于在所述插入基準(zhǔn)指針指向的節(jié)點的指針域指向空時,將屬于掩碼為O的事件類型的當(dāng)前訪問年份的事件插入至所述插入基準(zhǔn)指針指向的節(jié)點后成為尾節(jié)點,并使所述插入基準(zhǔn)指針指向的節(jié)點的指針域指向尾節(jié)點,使尾節(jié)點的指針域指向空,及更新所述尾節(jié)點指針。
13.根據(jù)權(quán)利要求10、11或12所述的系統(tǒng),其特征在于,所述執(zhí)行模塊包括: 執(zhí)行賦值單元,用于賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域,及用于在所述取出基準(zhǔn)指針不等于獲取的虛擬頭節(jié)點的指針域時重新賦值取出基準(zhǔn)指針等于所述出隊桶的子鏈表中虛擬頭節(jié)點的指針域,其中,所述虛擬頭節(jié)點的指針域指向頭結(jié)點; 執(zhí)行指針獲取單元,用于獲取所述虛擬頭節(jié)點的指針域; 執(zhí)行判斷單元,用于判斷所述取出基準(zhǔn)指針是否等于獲取的虛擬頭節(jié)點的指針域;以及, 執(zhí)行處理單元,用于在所述取出基準(zhǔn)指針等于獲取的虛擬頭節(jié)點的指針域時,取出所述取出基準(zhǔn)指針指向的節(jié)點中的事件執(zhí)行,并更新所述虛擬頭節(jié)點的指針域。
14.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 事件數(shù)量獲取模塊,用于獲取日歷隊列的所有入隊桶的子鏈表的長度之和作為當(dāng)前等待事件的數(shù)量; 閾值獲取模塊,用于獲取日歷隊列的入隊桶個數(shù),將所述入隊桶個數(shù)乘以入隊桶容量的期望值作為日歷隊列的擴大閾值,將所述入隊桶個數(shù)除以所述入隊桶容量的期望值作為日歷隊列的縮小閾值;以及, 放縮模塊,用于在所述當(dāng)前等待事件的數(shù)量大于所述擴大閾值或者小于所述縮小閾值時,根據(jù)所述日歷隊列對應(yīng)的排隊系統(tǒng)類型計算所述日歷隊列的平均隊列長度,并將所述入隊桶的數(shù)量調(diào)整為等于所述平均隊列長度除以所述入隊桶容量的期望值。
【文檔編號】H04W84/18GK103929769SQ201410184653
【公開日】2014年7月16日 申請日期:2014年5月4日 優(yōu)先權(quán)日:2014年5月4日
【發(fā)明者】陳嵐, 劉玨辰, 呂超 申請人:中國科學(xué)院微電子研究所