專利名稱:一種通訊平臺的精確時(shí)鐘管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件模塊間跨主機(jī)、跨平臺間實(shí)時(shí)通訊所需要的精確時(shí)鐘管理。
背景技術(shù):
當(dāng)前NT平臺和UNIX平臺都能夠提供毫秒級的軟件時(shí)鐘中斷,這一點(diǎn)為時(shí)鐘模塊支持0. 1秒和1秒的定時(shí)精度提供了保障,但實(shí)驗(yàn)可知,當(dāng)創(chuàng)建的定時(shí)器數(shù)量不多時(shí),系統(tǒng)提供的定時(shí)器完全可以勝任,但當(dāng)定時(shí)器達(dá)到一定數(shù)量后,操作系統(tǒng)顯然在精度和可靠性上再提供什么保障了,所以發(fā)明了通用的精確時(shí)鐘管理算法,引入定時(shí)器控制隊(duì)列,調(diào)度控制結(jié)構(gòu)和占用定時(shí)隊(duì)列來實(shí)現(xiàn)定時(shí)器的數(shù)據(jù)存儲(chǔ),而每個(gè)定時(shí)器的設(shè)置和到達(dá),則轉(zhuǎn)化為對幾個(gè)簡單數(shù)據(jù)鏈表的元素增、刪操作。提高了代碼的執(zhí)行效率。而作為軟件時(shí)鐘,從理論上講,是無法提供一種絕對的、絲毫不差的時(shí)鐘tick的,大家都知道它會(huì)受諸多因素的影響,其中最重要的無疑是CPU,在每個(gè)時(shí)鐘周期里,都有時(shí)鐘處理代碼需要處理,這部分代碼的運(yùn)行時(shí)間將影響到軟件時(shí)鐘周期的精度,每個(gè)時(shí)鐘周期中一些及小的偏差,在達(dá)到一定量的積累后,顯然會(huì)使軟件時(shí)鐘與系統(tǒng)時(shí)鐘不一致。所以,時(shí)鐘模塊提供還引入定時(shí)糾正功能解決這個(gè)問題。
發(fā)明內(nèi)容
本發(fā)明的目的是通過對系統(tǒng)時(shí)鐘和軟件時(shí)鐘的糾偏和定時(shí)控制隊(duì)列管理的組合運(yùn)用,以達(dá)到軟件模塊間跨主機(jī)、跨平臺間實(shí)時(shí)通訊要求。本發(fā)明的技術(shù)方案是一種通訊平臺的精確時(shí)鐘管理方法,它包括以下步驟A、將多個(gè)定時(shí)器控制模塊進(jìn)行初始化生成一個(gè)空閑定時(shí)器控制池,多個(gè)定時(shí)器控制模塊構(gòu)成定時(shí)器控制隊(duì)列,建立調(diào)度控制模塊和占用定時(shí)器隊(duì)列,并將各數(shù)據(jù)結(jié)構(gòu)初始化,調(diào)度控制模塊中記錄定時(shí)器控制隊(duì)列的空閑隊(duì)列頭、空閑隊(duì)列長度,空閑隊(duì)列元素;B、創(chuàng)建定時(shí)器時(shí),從定時(shí)器控制池中取出一個(gè)空閑元素給定時(shí)器使用,另外,三種定時(shí)器公用這個(gè)隊(duì)列;C、隨著定時(shí)器的創(chuàng)建,將調(diào)度控制模塊中對應(yīng)的空閑隊(duì)列長度值相應(yīng)遞減;同時(shí), 隨著定時(shí)器的到期,這個(gè)值又相應(yīng)遞增。本發(fā)明中,每次創(chuàng)建定時(shí)器的時(shí)候,直接從空閑隊(duì)列頭分配定時(shí)器控制塊給定時(shí)器使用。本發(fā)明中,占用定時(shí)器隊(duì)列為控制正在使用中的定時(shí)器的數(shù)據(jù)結(jié)構(gòu);所有占用定時(shí)器的集合組成占用定時(shí)器隊(duì)列。本發(fā)明中,還包括系統(tǒng)時(shí)鐘系統(tǒng)會(huì)每隔若干秒重新讀取一下系統(tǒng)時(shí)間保存到全局變量中;將軟件時(shí)鐘和硬件時(shí)鐘的同步。本發(fā)明中,管理方法還包括時(shí)鐘糾偏,它包括以下步驟定時(shí)器控制模塊在每經(jīng)過若干秒的軟件時(shí)鐘后,比較系統(tǒng)時(shí)差;
當(dāng)系統(tǒng)時(shí)差小于軟件時(shí)差時(shí),增加每個(gè)定時(shí)器時(shí)鐘滴答tick的長度,增加的尺度與軟件時(shí)差、系統(tǒng)時(shí)差之間的差值相匹配;反之, 當(dāng)系統(tǒng)時(shí)差大于軟件時(shí)差時(shí),減小每個(gè)定時(shí)器時(shí)鐘tick的長度。,減小的尺度與軟件時(shí)差、系統(tǒng)時(shí)差之間的差值相匹配。本發(fā)明中,三種定時(shí)器包括同步延時(shí)定時(shí)器、相對定時(shí)定時(shí)器和絕對定時(shí)定時(shí)器。本發(fā)明的有益效果一、提供多數(shù)量進(jìn)程間實(shí)時(shí)通訊時(shí)提供精確時(shí)鐘功能。二、提供多數(shù)量進(jìn)程間實(shí)時(shí)通訊時(shí)提供可靠時(shí)鐘定時(shí)功能。
圖1定時(shí)器控制隊(duì)列示意圖。圖2調(diào)度控制結(jié)構(gòu)示意圖。圖3剛初始化后調(diào)度控制結(jié)構(gòu)和定時(shí)器控制隊(duì)列的對照關(guān)系圖。圖4創(chuàng)建了一定數(shù)量的定時(shí)器后調(diào)度控制結(jié)構(gòu)與定時(shí)器控制塊狀態(tài)圖。圖5有部分定時(shí)器退出后調(diào)度控制結(jié)構(gòu)與定時(shí)器控制塊狀態(tài)圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)例對本發(fā)明作進(jìn)一步的說明。時(shí)鐘模塊要提供定時(shí)器功能,首先必須提供一個(gè)時(shí)鐘tick,也叫軟時(shí)鐘中斷周期, 該周期可以根據(jù)定時(shí)器精度設(shè)置,如當(dāng)前要提供精度為0. 1秒的定時(shí)器(相對定時(shí)和同步延時(shí)),那么這個(gè)中斷周期的精度就可以設(shè)置為0. 1秒。顯然,由于絕對定時(shí)精度為1秒,這個(gè)中斷周期完全適用絕對定時(shí),每這種周期的10次循環(huán)正好是絕對定時(shí)的一個(gè)時(shí)鐘tick。 其次,為實(shí)現(xiàn)三種定時(shí),必須設(shè)計(jì)一種合理的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)應(yīng)當(dāng)包括存儲(chǔ)每個(gè)定時(shí)器信息的結(jié)構(gòu),稱為定時(shí)器控制塊,所有定時(shí)器控制塊的集合組成定時(shí)器控制隊(duì)列用來記錄空閑定時(shí)器控制隊(duì)列頭和長度的結(jié)構(gòu),稱為調(diào)度控制結(jié)構(gòu)控制正在使用中的定時(shí)器的數(shù)據(jù)結(jié)構(gòu),稱為占用定時(shí)器,所有占用定時(shí)器的集合組成占用定時(shí)器隊(duì)列時(shí)鐘初始化時(shí)鐘模塊在系統(tǒng)啟動(dòng)將創(chuàng)建定時(shí)器控制隊(duì)列、調(diào)度控制結(jié)構(gòu)和占用定時(shí)器隊(duì)列等時(shí)鐘模塊中用到的主要數(shù)據(jù)結(jié)構(gòu),并將各數(shù)據(jù)結(jié)構(gòu)初始化。定時(shí)器控制池目前時(shí)鐘模塊共提供了 20000個(gè)定時(shí)器控制塊(該值通過宏TMCB_NUM定義在頭文件里)。時(shí)鐘模塊啟動(dòng)時(shí),就將這兩萬個(gè)控制塊進(jìn)行初始化生成一個(gè)簡單的空閑定時(shí)器控制池,如圖1所示。當(dāng)需要?jiǎng)?chuàng)建定時(shí)器時(shí),就從這個(gè)定時(shí)器控制池中取出一個(gè)空閑元素給定時(shí)器使用,另外,三種定時(shí)器公用這個(gè)隊(duì)列,對該隊(duì)列元素的分配和調(diào)度則由一個(gè)稱為調(diào)度控制結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行控制。調(diào)度控制結(jié)構(gòu)調(diào)度控制結(jié)構(gòu)也是在時(shí)鐘模塊啟動(dòng)時(shí)進(jìn)行初始化的,調(diào)度控制結(jié)構(gòu)中記錄空閑隊(duì)列頭、空閑隊(duì)列長度,空閑隊(duì) 列元素等重要信息。時(shí)鐘模塊初始化后的調(diào)度控制結(jié)構(gòu)和定時(shí)器控制隊(duì)列的關(guān)系如圖2所示。調(diào)度控制結(jié)構(gòu)count成員代表當(dāng)前空閑定時(shí)控制隊(duì)列的長度,時(shí)鐘模塊初始化時(shí)這個(gè)值顯然就等于TMCB_NUM,隨著定時(shí)器的創(chuàng)建,這個(gè)值不斷遞減,而隨著定時(shí)器的到期,這個(gè)值又不斷遞增,所以它始終代表當(dāng)前空閑定時(shí)器控制塊的數(shù)量。調(diào)度控制結(jié)構(gòu)head成員則記錄空閑定時(shí)控制器隊(duì)列頭位置,這樣,每次創(chuàng)建定時(shí)器的時(shí)候,就可以直接從該位置分配定時(shí)器控制塊給定時(shí)器使用。調(diào)度控制結(jié)構(gòu)tail 成員,記錄空閑定時(shí)隊(duì)列尾的位置,時(shí)鐘模塊初始化時(shí)設(shè)置為1,當(dāng)某個(gè)定時(shí)器到達(dá)時(shí),將 TMCBPool- > ele [TMCBPool- > tail]成員指向該釋放的定時(shí)器控制塊,這樣就實(shí)現(xiàn)了空閑定時(shí)隊(duì)列的真正循環(huán)隊(duì)列。調(diào)度控制結(jié)構(gòu)ele數(shù)組成員則是定時(shí)器控制循環(huán)隊(duì)列的一個(gè)全集,從TMCBPool- > head位置開始到TMCBPool- > tail位置結(jié)束中間指向的任一個(gè)定時(shí)器控制塊則都是空閑定時(shí)器控制塊,可以直接分配給定時(shí)器使用。圖3、4、5分別記錄了不同時(shí)刻調(diào)度控制隊(duì)列的狀態(tài)以及跟定時(shí)器控制隊(duì)列的對照關(guān)系。(綠色約定為可分配定時(shí)器控制塊,紅色約定為已占用定時(shí)器控制塊)占用定時(shí)器隊(duì)列占用定時(shí)器隊(duì)列共創(chuàng)建了 31個(gè)雙向循環(huán)隊(duì)列來管理所有正在使用的定時(shí)器,當(dāng)時(shí)鐘模塊啟動(dòng)時(shí),這31個(gè)占用定時(shí)隊(duì)列將被初始化。三種定時(shí)器的實(shí)現(xiàn)一、同步延時(shí)定時(shí)器同步延時(shí)是為了實(shí)現(xiàn)< 1秒或大于1000秒的定時(shí)器,這種類型的定時(shí)器將使用 Tque
的占用定時(shí)隊(duì)列,該定時(shí)器設(shè)計(jì)原理是該隊(duì)列中的定時(shí)器是以將到達(dá)的先后順序進(jìn)行排序的(最先要到達(dá)的定時(shí)器排在最前面,依次類推),這樣,每設(shè)置一個(gè)定時(shí)器,將從隊(duì)列頭開始與隊(duì)列中每個(gè)定時(shí)器將要到達(dá)的時(shí)長比較,直到找到定時(shí)時(shí)長比該新設(shè)定時(shí)器時(shí)長長的元素為止,然后將新設(shè)定時(shí)器插入到該元素之前。(1)定時(shí)器設(shè)置這種定時(shí)器設(shè)置的數(shù)學(xué)模型是這樣的假設(shè)Tque
隊(duì)列中目前存在η個(gè)定時(shí)器(Tque
. count = η),組成如下隊(duì)列
權(quán)利要求
1.一種通訊平臺的精確時(shí)鐘管理方法,其特征是它包括以下步驟A、將多個(gè)定時(shí)器控制模塊進(jìn)行初始化生成一個(gè)空閑定時(shí)器控制池,多個(gè)定時(shí)器控制模塊構(gòu)成定時(shí)器控制隊(duì)列,建立調(diào)度控制模塊和占用定時(shí)器隊(duì)列,并將各數(shù)據(jù)結(jié)構(gòu)初始化,調(diào)度控制模塊中記錄定時(shí)器控制隊(duì)列的空閑隊(duì)列頭、空閑隊(duì)列長度,空閑隊(duì)列元素;B、創(chuàng)建定時(shí)器時(shí),從定時(shí)器控制池中取出一個(gè)空閑元素給定時(shí)器使用,另外,三種定時(shí)器公用這個(gè)隊(duì)列;C、隨著定時(shí)器的創(chuàng)建,將調(diào)度控制模塊中對應(yīng)的空閑隊(duì)列長度值相應(yīng)遞減;同時(shí),隨著定時(shí)器的到期,這個(gè)值又相應(yīng)遞增。
2.根據(jù)權(quán)利要求1所述的一種通訊平臺的精確時(shí)鐘管理方法,其特征是每次創(chuàng)建定時(shí)器的時(shí)候,直接從空閑隊(duì)列頭分配定時(shí)器控制塊給定時(shí)器使用。
3.根據(jù)權(quán)利要求1所述的一種通訊平臺的精確時(shí)鐘管理方法,其特征是所述的占用定時(shí)器隊(duì)列為控制正在使用中的定時(shí)器的數(shù)據(jù)結(jié)構(gòu);所有占用定時(shí)器的集合組成占用定時(shí)器隊(duì)列。
4.根據(jù)權(quán)利要求1所述的一種通訊平臺的精確時(shí)鐘管理方法,其特征是它還包括系統(tǒng)時(shí)鐘系統(tǒng)會(huì)每隔若干秒重新讀取一下系統(tǒng)時(shí)間保存到全局變量中;將軟件時(shí)鐘和硬件時(shí)鐘的同步。
5.根據(jù)權(quán)利要求1所述的一種通訊平臺的精確時(shí)鐘管理方法,其特征是該管理方法還包括時(shí)鐘糾偏,它包括以下步驟定時(shí)器控制模塊在每經(jīng)過若干秒的軟件時(shí)鐘后,比較系統(tǒng)時(shí)差;當(dāng)系統(tǒng)時(shí)差小于軟件時(shí)差時(shí),增加每個(gè)定時(shí)器時(shí)鐘滴答tick的長度,增加的尺度與軟件時(shí)差、系統(tǒng)時(shí)差之間的差值相匹配;反之,當(dāng)系統(tǒng)時(shí)差大于軟件時(shí)差時(shí),減小每個(gè)定時(shí)器時(shí)鐘tick的長度,減小的尺度與軟件時(shí)差、系統(tǒng)時(shí)差之間的差值相匹配。
6.根據(jù)權(quán)利要求1所述的一種通訊平臺的精確時(shí)鐘管理方法,其特征是所述的三種定時(shí)器包括同步延時(shí)定時(shí)器、相對定時(shí)定時(shí)器和絕對定時(shí)定時(shí)器。
全文摘要
一種通訊平臺的精確時(shí)鐘管理方法,將多個(gè)定時(shí)器控制模塊進(jìn)行初始化生成一個(gè)空閑定時(shí)器控制池,多個(gè)定時(shí)器控制模塊構(gòu)成定時(shí)器控制隊(duì)列,建立調(diào)度控制模塊和占用定時(shí)器隊(duì)列,并將各數(shù)據(jù)結(jié)構(gòu)初始化,調(diào)度控制模塊中記錄定時(shí)器控制隊(duì)列的空閑隊(duì)列頭、空閑隊(duì)列長度,空閑隊(duì)列元素;創(chuàng)建定時(shí)器時(shí),從定時(shí)器控制池中取出一個(gè)空閑元素給定時(shí)器使用,隨著定時(shí)器的創(chuàng)建,將調(diào)度控制模塊中對應(yīng)的空閑隊(duì)列長度值相應(yīng)遞減;同時(shí),隨著定時(shí)器的到期,這個(gè)值又相應(yīng)遞增。本發(fā)明具有提供多數(shù)量進(jìn)程間實(shí)時(shí)通訊時(shí)提供精確、可靠時(shí)鐘的功能;為通訊軟件模塊跨主機(jī)、跨平臺間的通訊提供精確的、實(shí)時(shí)的、可靠的時(shí)鐘服務(wù)。
文檔編號G06F1/14GK102354257SQ201110196280
公開日2012年2月15日 申請日期2011年7月13日 優(yōu)先權(quán)日2011年7月13日
發(fā)明者周中克, 曹陽, 鄧鋼 申請人:南京中興軟創(chuàng)科技股份有限公司