一種高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法。
【背景技術(shù)】
[0002]多任務(wù)處理的操作系統(tǒng)中,每一個(gè)任務(wù)的執(zhí)行與調(diào)度是依靠任務(wù)優(yōu)先級(jí)以及中央處理器(Central processing unit,CPU)時(shí)間片輪轉(zhuǎn)等算法進(jìn)行的。目前的任務(wù)執(zhí)行與調(diào)度方法,都是任務(wù)獲得CPU資源,然后輔以時(shí)間片輪轉(zhuǎn),任務(wù)優(yōu)先級(jí),或兩者結(jié)合等技術(shù)方案,讓任務(wù)在規(guī)劃的模式下運(yùn)行。時(shí)間片輪轉(zhuǎn),任務(wù)在執(zhí)行過程中時(shí)間到了,任務(wù)要掛起,換其他任務(wù)執(zhí)行。任務(wù)優(yōu)先級(jí),尚優(yōu)先級(jí)任務(wù)進(jìn)來會(huì)打斷低優(yōu)先級(jí)任務(wù)執(zhí)行。當(dāng)任務(wù)需要連續(xù)執(zhí)行時(shí),它需要關(guān)閉掉系統(tǒng)中斷,禁止優(yōu)先級(jí)搶占。這樣雖然滿足了大部分的需求,但是遇到某些任務(wù)的某些處理需要快速,高效的,連續(xù)的執(zhí)行時(shí),目前的系統(tǒng)無非是關(guān)閉中斷,或者禁止優(yōu)先級(jí)搶占等措施。這樣做的不足是:關(guān)閉中斷,在某種程度上降低了系統(tǒng)的運(yùn)行效率,畢竟中斷是系統(tǒng)中級(jí)別最高的任務(wù),如果關(guān)閉了它,系統(tǒng)中如果有其他更重要的中斷需要處理,在此時(shí)系統(tǒng)是無法處理的。這就降低了系統(tǒng)的穩(wěn)定性。同樣,禁止優(yōu)先級(jí)搶占,無非也是在任務(wù)優(yōu)先級(jí)層面能夠保證任務(wù)的某些處理過程能夠連貫執(zhí)行,它無法禁止中斷的打斷,也無法禁止時(shí)間片到期時(shí)任務(wù)執(zhí)行的切換。因此會(huì)對(duì)系統(tǒng)的流暢運(yùn)行帶來一定影響。
【發(fā)明內(nèi)容】
[0003]本發(fā)明所要解決的技術(shù)問題在于提供一種高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法,旨在有效提升系統(tǒng)的中斷響應(yīng)速度和執(zhí)行效率,讓系統(tǒng)運(yùn)行地更加流暢。
[0004]本發(fā)明是這樣實(shí)現(xiàn)的,一種高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法,其包括構(gòu)建一個(gè)中斷服務(wù)公共鏈表的步驟、任務(wù)執(zhí)行的步驟及高精度時(shí)鐘中斷服務(wù)的步驟;其中,該中斷服務(wù)公共鏈表的結(jié)構(gòu)包括子任務(wù)的程序地址;該任務(wù)執(zhí)行的步驟包括如下子步驟:任務(wù)中若有需要請(qǐng)求高精度時(shí)鐘中斷服務(wù)的子任務(wù),則構(gòu)建子任務(wù)信息;檢測(cè)該中斷服務(wù)公共鏈表是否加鎖,若加鎖,繼續(xù)等待并檢測(cè),直到解鎖;將該中斷服務(wù)公共鏈表加鎖,將子任務(wù)信息加入到該中斷服務(wù)公共鏈表中,然后將該中斷服務(wù)公共鏈表解鎖;及等到該子任務(wù)執(zhí)行完成后加鎖該中斷服務(wù)公共鏈表,然后刪除該子任務(wù)信息,并將該中斷服務(wù)公共鏈表解鎖;高精度時(shí)鐘中斷服務(wù)包括如下子步驟:當(dāng)產(chǎn)生時(shí)鐘中斷后,高精度時(shí)鐘中斷服務(wù)模塊關(guān)閉該時(shí)鐘中斷;檢測(cè)該中斷服務(wù)公共鏈表是否加鎖;若沒有加鎖,則加鎖并訪問該中斷服務(wù)公共鏈表,根據(jù)該子任務(wù)的程序地址執(zhí)行該子任務(wù);及該子任務(wù)執(zhí)行完畢后,將該中斷服務(wù)公共鏈表解鎖,清除時(shí)鐘中斷標(biāo)志,打開時(shí)鐘中斷,等待下次時(shí)鐘中斷的到來。
[0005]本發(fā)明與現(xiàn)有技術(shù)相比,有益效果在于:該高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法能有效提升系統(tǒng)的中斷響應(yīng)速度和執(zhí)行效率,讓系統(tǒng)運(yùn)行地更加流暢。
【附圖說明】
[0006]圖1是本發(fā)明實(shí)施例提供的高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法的示意圖。
[0007]圖2是圖1的高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法的中斷服務(wù)公共鏈表的示意圖。
[0008]圖3是圖1的高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法的任務(wù)A執(zhí)行部分的流程圖。
[0009]圖4是圖1的高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法的高精度時(shí)鐘中斷服務(wù)部分的流程圖。
【具體實(shí)施方式】
[0010]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0011]如圖1所示,本發(fā)明實(shí)施例提供的高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法,其包括相互配合的兩個(gè)部分,第一部分是任務(wù)A執(zhí)行,第二部分是高精度時(shí)鐘中斷服務(wù),同時(shí)還需要一個(gè)可公共訪問的內(nèi)存區(qū)域,將所需要處理的子任務(wù)信息加入進(jìn)去,即得到一個(gè)中斷服務(wù)公共鏈表。如圖2所示,該中斷服務(wù)公共鏈表的結(jié)構(gòu)包括子任務(wù)的程序地址、參數(shù)個(gè)數(shù)、參數(shù)區(qū)、返回?cái)?shù)據(jù)區(qū)及執(zhí)行完成標(biāo)志。該中斷服務(wù)公共鏈表以先到先服務(wù)的方式使用,也就是說,該中斷服務(wù)公共鏈表中的子程序按照請(qǐng)求高精度時(shí)鐘中斷服務(wù)的先后順序依次排列,然后在執(zhí)行高精度時(shí)鐘中斷服務(wù)時(shí)按照該子程序排列的先后順序依次進(jìn)行。
[0012]任務(wù)A在執(zhí)行過程中,有需要提升執(zhí)行等級(jí),不被其他時(shí)間片或任務(wù)打斷的子任務(wù)(即需要請(qǐng)求高精度時(shí)鐘中斷服務(wù)的子任務(wù))時(shí),將該子任務(wù)的信息加入到該中斷服務(wù)公共鏈表中。然后,任務(wù)A解鎖該中斷服務(wù)公共鏈表,以便其他任務(wù)或時(shí)鐘中斷服務(wù)模塊能夠訪問該可公共訪問的內(nèi)存區(qū)域。任務(wù)A解鎖該中斷服務(wù)公共鏈表后,等待其加入的子任務(wù)被執(zhí)行,檢測(cè)到執(zhí)行完成標(biāo)志設(shè)置為“ I”后,則再次加鎖訪問該中斷服務(wù)公共鏈表,若有返回?cái)?shù)據(jù),則取出該返回?cái)?shù)據(jù)后,將該中斷服務(wù)公共鏈表中的該子任務(wù)信息刪除,表示該子任務(wù)完成了。解鎖該中斷服務(wù)公共鏈表后,任務(wù)A結(jié)束了其使用該高精度時(shí)鐘中斷服務(wù)。
[0013]高精度時(shí)鐘能夠根據(jù)需要配置時(shí)鐘中斷產(chǎn)生間隔。當(dāng)需要快速處理各任務(wù)加入進(jìn)來的子任務(wù)時(shí),能夠?qū)r(shí)鐘中斷間隔設(shè)置的短一些。高精度時(shí)鐘中斷服務(wù)過程為:當(dāng)產(chǎn)生時(shí)鐘中斷后,高精度時(shí)鐘中斷服務(wù)模塊關(guān)閉該時(shí)鐘中斷,然后檢查該中斷服務(wù)公共鏈表是否加鎖,若加鎖,說明有任務(wù)在向該中斷服務(wù)公共鏈表中加入信息或刪除信息,該中斷服務(wù)公共鏈表有變動(dòng),所以取消此次高精度時(shí)鐘中斷服務(wù)。如果該中斷服務(wù)公共鏈表沒加鎖,則加鎖訪問該中斷服務(wù)公共鏈表。從該中斷服務(wù)公共鏈表中獲取排列在最前面的一個(gè)子任務(wù),然后執(zhí)行該子任務(wù),當(dāng)該子任務(wù)執(zhí)行完畢,如有返回值將返回值放入該返回?cái)?shù)據(jù)區(qū),將執(zhí)行完成標(biāo)志設(shè)置為“ I”,表明該子任務(wù)執(zhí)行完畢。最后,解鎖該中斷服務(wù)公共鏈表,清除時(shí)鐘中斷狀態(tài),打開時(shí)鐘中斷,等待下次的中斷到來。
[0014]該高精度時(shí)鐘輔助任務(wù)執(zhí)行的方法包括如下步驟:
[0015]S1:構(gòu)建一個(gè)中斷服務(wù)公共鏈表,該中斷服務(wù)公共鏈表的結(jié)構(gòu)包括子任務(wù)的程序地址、參數(shù)個(gè)數(shù)、參數(shù)區(qū)、返回?cái)?shù)據(jù)區(qū)及執(zhí)行完成標(biāo)志。該中斷服務(wù)公共鏈表以先到先服務(wù)的方式使用,也就是說,該中斷服務(wù)公共鏈表中的子程序按照請(qǐng)求高精度時(shí)鐘中斷服務(wù)的先后順序依次排列,然后在執(zhí)行高精度時(shí)鐘中斷服務(wù)時(shí)按照該子程序排列的先后順序依次進(jìn)行。
[0016]S2:任務(wù)A執(zhí)行的步驟,其包括如下子步驟(如圖3所示):
[0017]S21:任務(wù)A若有需要提升執(zhí)行等級(jí),不被其他時(shí)間片或任務(wù)打斷的子任務(wù),也就是說,任務(wù)A中若需要請(qǐng)求高精度時(shí)鐘中斷服務(wù)的子任務(wù),則構(gòu)建如該中斷服務(wù)公共鏈表的結(jié)構(gòu)的