專利名稱:一種實(shí)時(shí)多任務(wù)操作系統(tǒng)的定時(shí)器調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)中的操作系統(tǒng)領(lǐng)域,具體地說(shuō),涉及一種實(shí)時(shí)多任務(wù)操作系統(tǒng)的定時(shí)器調(diào)度方法。
背景技術(shù):
在計(jì)算機(jī)應(yīng)用中,操作系統(tǒng)是用戶與計(jì)算機(jī)硬件之間的橋梁,它方便了用戶對(duì)計(jì)算機(jī)資源的管理。在操作系統(tǒng)中,有些用戶要求計(jì)算機(jī)在特定的時(shí)間和空間內(nèi)完成特定的任務(wù),這對(duì)操作系統(tǒng)提出了實(shí)時(shí)性要求。實(shí)時(shí)操作系統(tǒng)是指用戶要求在限定時(shí)間內(nèi)必須有相應(yīng)反應(yīng)的系統(tǒng),如果邏輯和時(shí)序出現(xiàn)偏差則會(huì)引起嚴(yán)重后果。實(shí)時(shí)操作系統(tǒng)廣泛應(yīng)用于生產(chǎn)過(guò)程控制、汽車工業(yè)、計(jì)算機(jī)外設(shè)、通信設(shè)備、機(jī)器人、航空航天、民用消費(fèi)等領(lǐng)域。
對(duì)于一般的操作系統(tǒng),如果只要求有一定的結(jié)果,則操作系統(tǒng)只需對(duì)系統(tǒng)資源進(jìn)行管理并響應(yīng)用戶的操作動(dòng)作即可。對(duì)于實(shí)時(shí)操作系統(tǒng),則必須及時(shí)響應(yīng)用戶操作。隨著任務(wù)量的增大和資源的增加,實(shí)時(shí)操作系統(tǒng)既要進(jìn)行多任務(wù)處理和共享資源的管理,又要及時(shí)響應(yīng)用戶的操作,從而對(duì)實(shí)時(shí)操作系統(tǒng)的性能提出了更高的要求。
操作系統(tǒng)一般由進(jìn)程調(diào)度管理、資源管理、進(jìn)程同步和通信、時(shí)間控制等幾部分組成。實(shí)時(shí)操作系統(tǒng)對(duì)時(shí)序的偏差要求很強(qiáng),因此定時(shí)器調(diào)度作為實(shí)時(shí)操作系統(tǒng)時(shí)間管理的核心就十分重要。
在網(wǎng)絡(luò)通信中,一次通信過(guò)程需要多個(gè)定時(shí)器來(lái)完成不同的計(jì)時(shí)任務(wù)。當(dāng)同時(shí)通信的用戶數(shù)增加時(shí),所需定時(shí)器的數(shù)目急劇增加。如果定時(shí)器的調(diào)度方法效率低,則會(huì)因定時(shí)器數(shù)目太大而造成定時(shí)處理耗用系統(tǒng)資源過(guò)大,延長(zhǎng)對(duì)用戶的反應(yīng)時(shí)間,影響定時(shí)精度,進(jìn)而影響整個(gè)系統(tǒng)的性能。因此,定時(shí)器調(diào)度方法的效率高低是反映實(shí)時(shí)操作系操性能的重要指標(biāo)之一。
定時(shí)器的時(shí)鐘來(lái)源于硬件時(shí)鐘中斷。時(shí)鐘中斷會(huì)每隔一定周期產(chǎn)生,該周期為最小計(jì)時(shí)時(shí)長(zhǎng),即定時(shí)器的計(jì)時(shí)精度,對(duì)硬件時(shí)鐘的中斷處理稱為計(jì)時(shí)周期。
目前定時(shí)器的調(diào)度方法很多,主要有以下三種類型第一種類型參見(jiàn)附圖2,所有的定時(shí)器按照到期時(shí)間的先后排成一個(gè)順序鏈表。在每個(gè)計(jì)時(shí)周期,鏈表指針后移一個(gè)節(jié)點(diǎn),然后考察當(dāng)前的鏈表節(jié)點(diǎn)如果沒(méi)有定時(shí)器到期,則等下一個(gè)計(jì)時(shí)周期;如果有定時(shí)器到期,就執(zhí)行該節(jié)點(diǎn)上所有定時(shí)器的任務(wù)并刪除對(duì)應(yīng)的定時(shí)器。這種計(jì)時(shí)方法稱為簡(jiǎn)單計(jì)時(shí)法。
第二種類型參見(jiàn)附圖3,定時(shí)器按到期的時(shí)間長(zhǎng)度線性分段,比如按0~99、100~199、200~299、……進(jìn)行分段,每個(gè)定時(shí)器在自己所屬的時(shí)段中進(jìn)行排序,這樣可以減少排序的數(shù)量。對(duì)定時(shí)器的處理與類型一相同。
第三種類型參見(jiàn)附圖4,定時(shí)器按到期的時(shí)間長(zhǎng)度非線性分段,比如按0~3、4~7、8~15、16~31、…分段,區(qū)間長(zhǎng)度呈指數(shù)上升,與類型二相比這種類型可以進(jìn)一步減少分段數(shù)目。對(duì)定時(shí)器的處理與類型一相同。
上述三種類型中,對(duì)定時(shí)器的調(diào)度過(guò)程也就是確定新定時(shí)器加入到鏈表的哪一個(gè)節(jié)點(diǎn)上的過(guò)程。其中第一種類型不額外占用系統(tǒng)資源,對(duì)定時(shí)器的操作和判斷幾乎不費(fèi)時(shí)間,但是增加新定時(shí)器時(shí)需要花費(fèi)較長(zhǎng)時(shí)間對(duì)所有定時(shí)器重新進(jìn)行排序;第二種類型雖然排序操作次數(shù)有了一定的減小,但是與第一種類型相比本質(zhì)不變,當(dāng)需要加入到期時(shí)間為100000的定時(shí)器時(shí),至少需要1000個(gè)分段,即1000個(gè)節(jié)點(diǎn),其效率仍然很低。第三種的算法在第二種的基礎(chǔ)上進(jìn)行了一些改進(jìn),減少了分段的個(gè)數(shù),計(jì)時(shí)效率有一定的提高,但是每當(dāng)新增定時(shí)器時(shí),必須對(duì)當(dāng)前所有定時(shí)器重新進(jìn)行分段,增加了不必要的操作,降低了效率。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種分段排序的實(shí)時(shí)多任務(wù)操作系統(tǒng)的定時(shí)器調(diào)度方法,它克服了現(xiàn)有實(shí)時(shí)操作系統(tǒng)定時(shí)器調(diào)度方法中存在大量冗余操作和重復(fù)排序操作的缺點(diǎn),提高了定時(shí)效率,而且具有伸縮性,適用于不同規(guī)模的實(shí)時(shí)操作系統(tǒng)。
本發(fā)明解決上述技術(shù)問(wèn)題所采用的技術(shù)方案包括以下環(huán)節(jié)1)設(shè)置M個(gè)循環(huán)鏈表,M為不小于2的整數(shù);2)循環(huán)鏈表的初始化根據(jù)設(shè)置的循環(huán)鏈表的個(gè)數(shù)M,建立M個(gè)循環(huán)鏈表,這些循環(huán)鏈表構(gòu)成類似于時(shí)鐘的結(jié)構(gòu)計(jì)時(shí)間隔最短的循環(huán)鏈表為第一循環(huán)鏈表(T1),它等分成N1個(gè)節(jié)點(diǎn),依次編號(hào)0~N1-1,相鄰節(jié)點(diǎn)的時(shí)間間隔等于操作系統(tǒng)定時(shí)器的計(jì)時(shí)周期τ;第二循環(huán)鏈表(T2)等分成N2個(gè)節(jié)點(diǎn),依次編號(hào)0~N2-1,相鄰節(jié)點(diǎn)間的時(shí)間間隔等于第一循環(huán)鏈表T1的循環(huán)周期N1τ;第三循環(huán)鏈表(T3)等分成N3個(gè)節(jié)點(diǎn),依次編號(hào)0~N3-1,相鄰節(jié)點(diǎn)間的時(shí)間間隔等于第二循環(huán)鏈表T2的循環(huán)周期N2N1τ;以此類推,其余循環(huán)鏈表的結(jié)構(gòu)及關(guān)系與此類似,可分別稱之為第四循環(huán)鏈表(T4)、第五循環(huán)鏈表(T5)、第六循環(huán)鏈表(T6)等等,各循環(huán)鏈表內(nèi)的節(jié)點(diǎn)數(shù)目相等或不等;3)新定時(shí)器的加入上層應(yīng)用程序產(chǎn)生新定時(shí)器任務(wù)時(shí),首先計(jì)算新定時(shí)器的設(shè)定時(shí)間與當(dāng)前時(shí)刻的間隔D;如果新定時(shí)器的設(shè)定時(shí)間在第M循環(huán)鏈表TM的第NM-1號(hào)節(jié)點(diǎn)的計(jì)時(shí)范圍外,即D>N1N2…(NM-1)τ,就將新定時(shí)器加到第M循環(huán)鏈表TM的第NM-1號(hào)節(jié)點(diǎn)上;否則根據(jù)D的大小按如下步驟將新定時(shí)器加入到某個(gè)循環(huán)鏈表的恰當(dāng)節(jié)點(diǎn)上;①置i=M,記從T1到TM各循環(huán)鏈表的當(dāng)前節(jié)點(diǎn)編號(hào)依次為A1、A2、…、AM;②計(jì)算 即Q為商的整數(shù)部分;③如果Q=0,且i>1,則i=i-1,返回步驟②;④將新定時(shí)器加入到循環(huán)鏈表Ti的第n號(hào)節(jié)點(diǎn)上,n=[(Q+Ai)mod Ni],即n為(Q+Ai)除以Ni的余數(shù);結(jié)束新定時(shí)器的加入操作。
4)定時(shí)器位置的調(diào)度更新在每個(gè)計(jì)時(shí)周期,第一循環(huán)鏈表T1的指針向后移動(dòng)一個(gè)節(jié)點(diǎn),然后考察當(dāng)前指向的節(jié)點(diǎn)如果當(dāng)前節(jié)點(diǎn)上沒(méi)有定時(shí)器,就等下一個(gè)計(jì)時(shí)周期;如果當(dāng)前節(jié)點(diǎn)上有定時(shí)器,就執(zhí)行這個(gè)節(jié)點(diǎn)上所有定時(shí)器的任務(wù)并刪除對(duì)應(yīng)的定時(shí)器;當(dāng)?shù)谝谎h(huán)鏈表T1的指針移動(dòng)N1次完成一個(gè)循環(huán)后,T1的指針重新指向0號(hào)節(jié)點(diǎn),同時(shí)將第二循環(huán)鏈表T2的指針移動(dòng)一個(gè)節(jié)點(diǎn),并將新指向節(jié)點(diǎn)上的所有定時(shí)器按如下步驟分別轉(zhuǎn)移到第一循環(huán)鏈表T1的相應(yīng)節(jié)點(diǎn)上①計(jì)算定時(shí)器設(shè)定時(shí)間與當(dāng)前時(shí)刻的差D;②計(jì)算R=D mod N1,即R為D除以N1的余數(shù);③將定時(shí)器加入到T1的R號(hào)節(jié)點(diǎn)上。
其它循環(huán)鏈表的更新依此類推;當(dāng)循環(huán)鏈表TM的指針指向第NM-1號(hào)節(jié)點(diǎn)時(shí),對(duì)該節(jié)點(diǎn)上設(shè)定到期時(shí)刻與當(dāng)前時(shí)刻的差D<N1N2…(NM-1)τ的那部分定時(shí)器按新定時(shí)器的加入方法轉(zhuǎn)移到其它鏈表的節(jié)點(diǎn)上,對(duì)不符合上述條件的其它定時(shí)器不作改變,然后將表TM的指針移動(dòng)到0號(hào)節(jié)點(diǎn)。
采用本發(fā)明所述的多循環(huán)隊(duì)列定時(shí)器調(diào)度方法,經(jīng)過(guò)模擬測(cè)試,與現(xiàn)有技術(shù)相比,定時(shí)器在各種負(fù)載下的平均性能提高10倍以上,達(dá)到了高性能、高效率、高均衡性的統(tǒng)一,并且實(shí)現(xiàn)簡(jiǎn)單,節(jié)省了實(shí)時(shí)操作系統(tǒng)的定時(shí)器管理、調(diào)度所需的計(jì)算資源。
圖1為本發(fā)明實(shí)施例中的定時(shí)器循環(huán)鏈表結(jié)構(gòu)示意圖。
圖2為第一種現(xiàn)有技術(shù)的定時(shí)器調(diào)度方法示意圖。
圖3為第二種現(xiàn)有技術(shù)的定時(shí)器調(diào)度方法示意圖。
圖4為第三種現(xiàn)有技術(shù)的定時(shí)器調(diào)度方法示意圖。
具體實(shí)施例方式
以下結(jié)合附圖實(shí)施例對(duì)發(fā)明作進(jìn)一步詳細(xì)描述。
由于定時(shí)器的排序查找與一般的情形不同,處理器最關(guān)心當(dāng)前到期的定時(shí)器,對(duì)以后到期的定時(shí)器以后再關(guān)心。因此,沒(méi)有必要對(duì)很長(zhǎng)時(shí)間以后的定時(shí)器進(jìn)行排序,只需要把最近有限時(shí)間內(nèi)的定時(shí)器安排好就行了。
因此,根據(jù)定時(shí)器的定時(shí)長(zhǎng)度進(jìn)行分組,如圖1所示,為本發(fā)明調(diào)度定時(shí)器的循環(huán)鏈表的一個(gè)實(shí)施例假定循環(huán)鏈表個(gè)數(shù)M為4,M個(gè)循環(huán)鏈表按定時(shí)間隔由短到長(zhǎng)排序,依次記為T(mén)1,T2,…,T4(即TM),各循環(huán)鏈表中節(jié)點(diǎn)數(shù)分別取為N1=8,N2=8,N3=4,N4=4,它們的結(jié)構(gòu)與時(shí)鐘相似。每個(gè)鏈表的指針是Index[i],循環(huán)鏈表上每個(gè)圓點(diǎn)代表一個(gè)節(jié)點(diǎn)Vor[i],每個(gè)節(jié)點(diǎn)Vor[i]上都可以掛一串定時(shí)器。當(dāng)指針走到某個(gè)Vor[i]時(shí),就對(duì)該節(jié)點(diǎn)上所有定時(shí)器進(jìn)行有關(guān)的處理。T1是最基本的循環(huán)鏈表,在每個(gè)時(shí)鐘周期,T1的指針移動(dòng)一個(gè)節(jié)點(diǎn),執(zhí)行節(jié)點(diǎn)上掛的定時(shí)器對(duì)應(yīng)的任務(wù)。T1的指針完成一次循環(huán)后,T2的指針移動(dòng)一個(gè)節(jié)點(diǎn)從而指向T2.Vor[4],該節(jié)點(diǎn)上的四個(gè)定時(shí)器依設(shè)定的時(shí)間按定時(shí)器位置調(diào)度更新方法中所述的步驟掛接到T1的相應(yīng)節(jié)點(diǎn)上去,這樣當(dāng)T1的指針移動(dòng)時(shí)會(huì)依次執(zhí)行定時(shí)器的任務(wù)。其它循環(huán)鏈表的更新依此類推。
如果把第一循環(huán)鏈表T1稱為‘秒表’,第二循環(huán)鏈表T2稱為‘分表’的話,上述關(guān)于定時(shí)器的調(diào)度方法可描述為首先依次執(zhí)行當(dāng)前‘秒表’上所有‘秒’的定時(shí)器任務(wù);過(guò)了一‘分’后,將下一個(gè)‘分’節(jié)點(diǎn)(T2.Vor[4])的所有定時(shí)器以‘秒’為單位轉(zhuǎn)移到‘秒表’T1的相應(yīng)節(jié)點(diǎn)上;同理,當(dāng)‘分表’T2完成一次循環(huán)指向0號(hào)節(jié)點(diǎn)時(shí),將‘時(shí)表’T3下一個(gè)‘時(shí)’節(jié)點(diǎn)(T3.Vor[3])上的所有定時(shí)器以‘分’為單位轉(zhuǎn)移到‘分表’T2的相應(yīng)節(jié)點(diǎn)上,并繼續(xù)把‘分表’T2當(dāng)前節(jié)點(diǎn)(即T2.Vor
)上的所有定時(shí)器以‘秒’為單位轉(zhuǎn)移到‘秒表’T1的相應(yīng)節(jié)點(diǎn)上;依此類推。當(dāng)某一定時(shí)器到期時(shí),操作系統(tǒng)執(zhí)行完定時(shí)器相應(yīng)的任務(wù)后會(huì)自動(dòng)刪除該定時(shí)器。
插入新定時(shí)器時(shí),需要考察插入定時(shí)器的設(shè)定時(shí)間。記新定時(shí)器的設(shè)定時(shí)間與當(dāng)前時(shí)刻的時(shí)間間隔為D。如果D在一‘分’內(nèi)(即D<N1τ),則直接將新定時(shí)器加入到T1的某個(gè)節(jié)點(diǎn)上,新節(jié)點(diǎn)編號(hào)=(T1的當(dāng)前節(jié)點(diǎn)編號(hào)+時(shí)間差值D)/N1的余數(shù);如果D長(zhǎng)于一‘分’但短于一‘時(shí)’(N1τ<D<N1N2τ),則將新定時(shí)器加入到T2的某個(gè)節(jié)點(diǎn)上,新節(jié)點(diǎn)編號(hào)=(T2當(dāng)前節(jié)點(diǎn)編號(hào)+時(shí)間差值D/N1的整數(shù)部分)/N2的余數(shù);其余依此類推;如果D>N1N2…(NM-1)τ,則將新定時(shí)器加入到第M個(gè)循環(huán)鏈表TM的第NM-1號(hào)節(jié)點(diǎn)上。
綜上所述,本發(fā)明采用多循環(huán)隊(duì)列的時(shí)鐘結(jié)構(gòu)進(jìn)行定時(shí)器的調(diào)度,實(shí)現(xiàn)簡(jiǎn)單,在空間和時(shí)間上效率都很高,節(jié)省了系統(tǒng)的資源。
權(quán)利要求
1.一種實(shí)時(shí)多任務(wù)操作系統(tǒng)的定時(shí)器調(diào)度方法,其特征在于包括以下環(huán)節(jié)1)設(shè)置M個(gè)循環(huán)鏈表,M為不小于2的整數(shù);2)循環(huán)鏈表的初始化根據(jù)設(shè)置的循環(huán)鏈表的個(gè)數(shù)M,建立M個(gè)循環(huán)鏈表,這些循環(huán)鏈表構(gòu)成類似于時(shí)鐘的結(jié)構(gòu)計(jì)時(shí)間隔最短的循環(huán)鏈表為第一循環(huán)鏈表(T1),它等分成N1個(gè)節(jié)點(diǎn),依次編號(hào)0~N1-1,相鄰節(jié)點(diǎn)的時(shí)間間隔等于操作系統(tǒng)的定時(shí)器的計(jì)時(shí)周期τ;第二循環(huán)鏈表(T2)等分成N2個(gè)節(jié)點(diǎn),依次編號(hào)0~N2-1,相鄰節(jié)點(diǎn)間的時(shí)間間隔等于第一循環(huán)鏈表T1的循環(huán)周期N1τ;第三循環(huán)鏈表(T3)等分成N3個(gè)節(jié)點(diǎn),依次編號(hào)0~N3-1,相鄰節(jié)點(diǎn)間的時(shí)間間隔等于第二循環(huán)鏈表T2的循環(huán)周期N2N1τ;以此類推,余下循環(huán)鏈表的結(jié)構(gòu)及關(guān)系與此類似,可分別稱之為第四循環(huán)鏈表(T4)、第五循環(huán)鏈表(T5)、第六循環(huán)鏈表(T6)等等,各循環(huán)鏈表內(nèi)的節(jié)點(diǎn)數(shù)目相等或不等;3)新定時(shí)器的加入上層應(yīng)用程序產(chǎn)生新定時(shí)器任務(wù)時(shí),首先計(jì)算新定時(shí)器的設(shè)定時(shí)間與當(dāng)前時(shí)刻的間隔D;如果新定時(shí)器的設(shè)定時(shí)間在第M循環(huán)鏈表TM的第NM-1號(hào)節(jié)點(diǎn)的計(jì)時(shí)范圍外,即D>N1N2…(NM-1)τ,就將新定時(shí)器加到第M循環(huán)鏈表TM的第MM-1號(hào)節(jié)點(diǎn)上;否則根據(jù)D的大小按如下步驟將新定時(shí)器加入到某個(gè)循環(huán)鏈表的恰當(dāng)節(jié)點(diǎn)上;①置i=M,記從T1到TM各循環(huán)鏈表的當(dāng)前節(jié)點(diǎn)編號(hào)依次為A1、A2、...、AM;②計(jì)算 即Q為商的整數(shù)部分;③如果Q=0,且i>1,則i=i-1,返回步驟②;④將新定時(shí)器加入到循環(huán)鏈表Ti的第n號(hào)節(jié)點(diǎn)上,n=[(Q+Ai)mod Ni],即n為(Q+Ai)除以Ni的余數(shù);結(jié)束新定時(shí)器的加入操作。4)定時(shí)器位置的調(diào)度更新在每個(gè)計(jì)時(shí)周期,第一循環(huán)鏈表T1的指針向后移動(dòng)一個(gè)節(jié)點(diǎn),然后考察當(dāng)前指向的節(jié)點(diǎn)如果當(dāng)前節(jié)點(diǎn)上沒(méi)有定時(shí)器,就等下一個(gè)計(jì)時(shí)周期;如果當(dāng)前節(jié)點(diǎn)上有定時(shí)器,就執(zhí)行這個(gè)節(jié)點(diǎn)上所有定時(shí)器的任務(wù)并刪除對(duì)應(yīng)的定時(shí)器;當(dāng)?shù)谝谎h(huán)鏈表T1的指針移動(dòng)N1次完成一個(gè)循環(huán)后,T1的指針重新指向0號(hào)節(jié)點(diǎn),同時(shí)將第二循環(huán)鏈表T2的指針移動(dòng)一個(gè)節(jié)點(diǎn),并將新指向節(jié)點(diǎn)上的所有定時(shí)器按如下步驟分別轉(zhuǎn)移到第一循環(huán)鏈表T1的相應(yīng)節(jié)點(diǎn)上①計(jì)算定時(shí)器設(shè)定時(shí)間與當(dāng)前時(shí)刻的差D;②計(jì)算R=D mod N1,即R為D除以N1的余數(shù);③將定時(shí)器加入到T1的R號(hào)節(jié)點(diǎn)上。其它循環(huán)鏈表的更新依此類推。
2.如權(quán)利要求1所述的定時(shí)器調(diào)度方法,其特征在于還包括以下環(huán)節(jié)當(dāng)循環(huán)鏈表TM的指針指向第NM-1號(hào)節(jié)點(diǎn)時(shí),對(duì)該節(jié)點(diǎn)上設(shè)定到期時(shí)刻與當(dāng)前時(shí)刻的差D<N1N2…(NM-1)τ的那部分定時(shí)器按新定時(shí)器的加入方法轉(zhuǎn)移到其它鏈表的節(jié)點(diǎn)上,對(duì)不符合上述條件的其它定時(shí)器不作改變,然后將表TM的指針移動(dòng)到0號(hào)節(jié)點(diǎn)。
全文摘要
本發(fā)明提供一種實(shí)時(shí)操作系統(tǒng)中基于時(shí)鐘結(jié)構(gòu)的定時(shí)器調(diào)度方法,包括建立M個(gè)循環(huán)鏈表,按定時(shí)間隔由短到長(zhǎng)依次標(biāo)記為T(mén)
文檔編號(hào)G06F9/46GK1645334SQ20051004894
公開(kāi)日2005年7月27日 申請(qǐng)日期2005年1月12日 優(yōu)先權(quán)日2005年1月12日
發(fā)明者何加銘, 聶秋華, 徐鐵峰, 曾興斌, 鄧青玲, 朱風(fēng)波 申請(qǐng)人:寧波大學(xué), 寧波新然電子信息科技發(fā)展有限公司