一種基于dsp的任務(wù)調(diào)度方法和裝置制造方法
【專利摘要】本申請(qǐng)實(shí)施例提供了一種基于數(shù)字信號(hào)處理DSP的任務(wù)調(diào)度方法和裝置,其中的方法具體包括:在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用所述互斥鎖的任務(wù)信息;在當(dāng)前任務(wù)對(duì)所述互斥鎖執(zhí)行P操作時(shí),從所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息,并將當(dāng)前任務(wù)的優(yōu)先級(jí)與占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)進(jìn)行比較,如果當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用所述互斥鎖的任務(wù)的優(yōu)先級(jí),則將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)。本申請(qǐng)能夠在不受使用場(chǎng)景限制的前提下提高DSP的實(shí)時(shí)性。
【專利說明】一種基于DSP的任務(wù)調(diào)度方法和裝置
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及DSP (數(shù)字信號(hào)處理,Digital Signal Processing)【技術(shù)領(lǐng)域】,特別是涉及一種基于DSP的任務(wù)調(diào)度方法和裝置。
【背景技術(shù)】
[0002]DSP技術(shù)主要應(yīng)用在實(shí)時(shí)性強(qiáng)、數(shù)據(jù)量大、計(jì)算密集的應(yīng)用場(chǎng)合,如通信、控制、測(cè)試、電子娛樂等領(lǐng)域;其中,實(shí)時(shí)性是指DSP的響應(yīng)時(shí)間必須在規(guī)定的時(shí)間內(nèi),超出這個(gè)時(shí)間限制將會(huì)使DSP出現(xiàn)致命的錯(cuò)誤。
[0003]為了滿足DSP對(duì)實(shí)時(shí)性的要求,以確保對(duì)緊迫程度較高的實(shí)時(shí)事件進(jìn)行及時(shí)響應(yīng)和處理,現(xiàn)有基于DSP的任務(wù)調(diào)度方法通常采用基于優(yōu)先級(jí)的可搶占式調(diào)度策略。其中,優(yōu)先級(jí)是選擇任務(wù)運(yùn)行的唯一依據(jù),基于優(yōu)先級(jí)也即保證最高優(yōu)先級(jí)的就緒任務(wù)占有CPU,可搶占也即更高優(yōu)先級(jí)的任務(wù)就緒時(shí),剝奪當(dāng)前正處于運(yùn)行態(tài)的任務(wù)的CPU使用權(quán),以讓高優(yōu)先級(jí)的任務(wù)占有CPU。
[0004]上述基于優(yōu)先級(jí)的可搶占式調(diào)度策略在實(shí)際中會(huì)帶來如下問題:由于多任務(wù)共享資源,高優(yōu)先級(jí)的任務(wù)被低優(yōu)先級(jí)的任務(wù)阻塞,反而使中優(yōu)先級(jí)的任務(wù)先于高優(yōu)先級(jí)的任務(wù)執(zhí)行,也就是優(yōu)先級(jí)翻轉(zhuǎn)的問題。
[0005]參照?qǐng)D1,示出了現(xiàn)有技術(shù)一種DSP的基于優(yōu)先級(jí)的可搶占式調(diào)度的示例,該示例中有3個(gè)任務(wù):A、B和C,該3個(gè)任務(wù)的優(yōu)先級(jí)排序?yàn)?A〈B〈C ;假設(shè)采用互斥鎖來保護(hù)共享資源,該互斥鎖有兩種關(guān)鍵的操作:P操作(Pend)和V操作(Post);當(dāng)一個(gè)任務(wù)對(duì)一個(gè)互斥鎖進(jìn)行P操作時(shí),如果該互斥鎖的狀態(tài)為可獲取,則將該互斥鎖的狀態(tài)修改為不可獲取,同時(shí)P操作成功,系統(tǒng)調(diào)用返回;如果該互斥鎖的狀態(tài)為不可獲取,則系統(tǒng)調(diào)用將阻塞該任務(wù);而當(dāng)有其他任務(wù)對(duì)該互斥鎖執(zhí)行V操作時(shí),將會(huì)解除等待該互斥鎖的任務(wù)的阻塞狀態(tài),如果沒有任務(wù)阻塞在該互斥鎖上,則將該互斥鎖的狀態(tài)修改為可獲取。
[0006]圖1中的任務(wù)調(diào)度具體可以包括:
[0007]在TO時(shí)刻,任務(wù)A對(duì)某互斥鎖執(zhí)行P操作,若該互斥鎖之前的狀態(tài)為可獲取,則現(xiàn)在變?yōu)椴豢色@取,任務(wù)A占用該互斥鎖,同時(shí)任務(wù)A的P操作成功并返回繼續(xù)執(zhí)行任務(wù)A ;
[0008]在Tl時(shí)刻,中斷a發(fā)生并觸發(fā)了任務(wù)B;
[0009]在T2時(shí)刻,任務(wù)B搶占任務(wù)A的CPU,并處于運(yùn)行狀態(tài);
[0010]在T3時(shí)刻,中斷b發(fā)生并觸發(fā)了任務(wù)C ;
[0011]在T4時(shí)刻,任務(wù)C搶占任務(wù)B的CPU,并處于運(yùn)行狀態(tài),任務(wù)C試圖通過執(zhí)行P操作獲取被任務(wù)A占用的互斥鎖,被阻塞;
[0012]在T5時(shí)刻,任務(wù)B重新獲得CPU,并執(zhí)行任務(wù);
[0013]在T6時(shí)刻,任務(wù)B執(zhí)行完畢,并讓出CPU給任務(wù)A ;
[0014]在T7時(shí)刻,任務(wù)A通過執(zhí)行V操作釋放上述互斥鎖,任務(wù)C的阻塞被解除,任務(wù)C開始運(yùn)行。
[0015]上述方案中,優(yōu)先級(jí)最高的任務(wù)C既要等優(yōu)先級(jí)低的任務(wù)B運(yùn)行完,還要等優(yōu)先級(jí)更低的任務(wù)A釋放互斥鎖之后才能被調(diào)度,如果任務(wù)A和任務(wù)B執(zhí)行的很費(fèi)時(shí)的操作,顯然任務(wù)C的被調(diào)度時(shí)機(jī)就不能保證,而在實(shí)際中高優(yōu)先級(jí)的任務(wù)通常用于快速完成一些需要及時(shí)處理的事件,因此,上述方案將嚴(yán)重影響DSP的實(shí)時(shí)性。
[0016]為了規(guī)避上述高優(yōu)先級(jí)的任務(wù)不能及時(shí)調(diào)度的問題,現(xiàn)有的DSP應(yīng)用系統(tǒng)在設(shè)計(jì)時(shí)事先根據(jù)輕重緩急程度規(guī)劃好各任務(wù)的優(yōu)先級(jí),并采用關(guān)中斷的方法,也即在進(jìn)入共享資源的臨界代碼段之前要關(guān)中斷,而在臨界代碼段執(zhí)行完以后要立即開中斷。
[0017]上述關(guān)中斷的方法簡(jiǎn)單易行,能夠較好地符合DSP的以計(jì)算、控制為主的任務(wù)需求,但是在關(guān)中斷期間會(huì)不可避免地丟失硬件中斷,故只能在關(guān)中斷期間做一些簡(jiǎn)單快速的操作,無法適用于所有的互斥場(chǎng)景。
[0018]綜上,現(xiàn)有的DSP的基于優(yōu)先級(jí)的可搶占式調(diào)度方案要么實(shí)時(shí)性差,要么使用場(chǎng)景受限。
【發(fā)明內(nèi)容】
[0019]本申請(qǐng)實(shí)施例所要解決的技術(shù)問題是提供一種基于DSP的任務(wù)調(diào)度方法和裝置,能夠在不受使用場(chǎng)景限制的前提下提高DSP的實(shí)時(shí)性。
[0020]為了解決上述問題,本申請(qǐng)公開了一種基于數(shù)字信號(hào)處理DSP的任務(wù)調(diào)度方法,包括:
[0021]在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用所述互斥鎖的任務(wù)信息;
[0022]在當(dāng)前任務(wù)對(duì)所述互斥鎖執(zhí)行P操作時(shí),從所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息,并將當(dāng)前任務(wù)的優(yōu)先級(jí)與占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)進(jìn)行比較,如果當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用所述互斥鎖的任務(wù)的優(yōu)先級(jí),則將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)。
[0023]優(yōu)選的,所述方法還包括:
[0024]在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),若發(fā)現(xiàn)所述互斥鎖的阻塞隊(duì)列中第一個(gè)任務(wù)的優(yōu)先級(jí)低于后面任務(wù)的優(yōu)先級(jí),則將所述第一個(gè)任務(wù)的優(yōu)先級(jí)提高到所述后面任務(wù)中的最高優(yōu)先級(jí)。
[0025]優(yōu)選的,所述在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用所述互斥鎖的任務(wù)信息的步驟,包括:
[0026]在任務(wù)針對(duì)互斥鎖的P操作成功時(shí),在所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄該任務(wù)的信息,作為占用所述互斥鎖的任務(wù)信息。
[0027]優(yōu)選的,所述方法還包括:
[0028]在將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)的同時(shí),在所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中記錄相應(yīng)的原始優(yōu)先級(jí)信息;
[0029]在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),從所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中讀取相應(yīng)的原始優(yōu)先級(jí)信息,并將所述占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)恢復(fù)到原始優(yōu)先級(jí)。
[0030]另一方面,本申請(qǐng)還公開了一種基于數(shù)字信號(hào)處理DSP的任務(wù)調(diào)度裝置,包括:
[0031]第一記錄模塊,用于在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用所述互斥鎖的任務(wù)信息;
[0032]第二讀取模塊,用于在當(dāng)前任務(wù)對(duì)所述互斥鎖執(zhí)行P操作時(shí),從所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息;
[0033]比較模塊,用于將當(dāng)前任務(wù)的優(yōu)先級(jí)與占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)進(jìn)行比較;及
[0034]第一修改模塊,用于在當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)時(shí),將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)。
[0035]優(yōu)選的,所述裝置還包括:
[0036]第二修改模塊,用于在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),若發(fā)現(xiàn)所述互斥鎖的阻塞隊(duì)列中第一個(gè)任務(wù)的優(yōu)先級(jí)低于后面任務(wù)的優(yōu)先級(jí),則將所述第一個(gè)任務(wù)的優(yōu)先級(jí)提高到所述后面任務(wù)中的最高優(yōu)先級(jí)。
[0037]優(yōu)選的,所述第一記錄模塊,具體用于在任務(wù)針對(duì)互斥鎖的P操作成功時(shí),在所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄該任務(wù)的信息,作為占用所述互斥鎖的任務(wù)信息。
[0038]優(yōu)選的,所述裝置還包括:
[0039]第二記錄模塊,用于在將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)的同時(shí),在所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中記錄相應(yīng)的原始優(yōu)先級(jí)信息;
[0040]第二讀取模塊,用于在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),從所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中讀取相應(yīng)的原始優(yōu)先級(jí)信息;
[0041]恢復(fù)模塊,用于將所述占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)恢復(fù)到原始優(yōu)先級(jí)。
[0042]與現(xiàn)有技術(shù)相比,本申請(qǐng)實(shí)施例包括以下優(yōu)點(diǎn):
[0043]本申請(qǐng)實(shí)施例在當(dāng)前任務(wù)對(duì)互斥鎖執(zhí)行P操作時(shí),如果發(fā)現(xiàn)該互斥鎖被比自己優(yōu)先級(jí)低的任務(wù)占用,則將占用該互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí);
[0044]第一,本申請(qǐng)實(shí)施例能夠在占用該互斥鎖的任務(wù)釋放互斥鎖之前介于兩個(gè)任務(wù)之間的任務(wù)無法搶占CPU,因此能夠保證盡快釋放以盡快解除所述當(dāng)前任務(wù)的阻塞狀態(tài),從而保證具有較高優(yōu)先級(jí)的該當(dāng)前任務(wù)被盡快調(diào)度,故能夠提高DSP的實(shí)時(shí)性,并且,本申請(qǐng)實(shí)施例無需開關(guān)中斷,因此對(duì)互斥場(chǎng)景沒有特殊要求,也即不受使用場(chǎng)景的限制;
[0045]第二,本申請(qǐng)實(shí)施例在現(xiàn)有互斥鎖的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上增加了占用該互斥鎖的任務(wù)信息,在發(fā)現(xiàn)需要提高優(yōu)先級(jí)的任務(wù)的過程中只需從新增后互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息即可,因此能夠快速發(fā)現(xiàn)需要提高優(yōu)先級(jí)的任務(wù),從而能夠進(jìn)一步提高DSP的實(shí)時(shí)性;
[0046]第三,本申請(qǐng)實(shí)施例僅在通過P操作嘗試獲取同一互斥鎖的任務(wù)的優(yōu)先級(jí)高于占用該互斥鎖的任務(wù)的優(yōu)先級(jí)時(shí),提高占用該互斥鎖的任務(wù)的優(yōu)先級(jí),故不會(huì)增加過多的開銷;并且,上述整個(gè)任務(wù)調(diào)度流程未引入無謂的判斷分支,一方面能夠避免新增代碼帶來的開銷,另一方面能夠保證代碼的執(zhí)行效率,從而能夠保證DSP的實(shí)時(shí)性;
[0047]第四,本申請(qǐng)實(shí)施例在任務(wù)的優(yōu)先級(jí)提高后,所有任務(wù)的優(yōu)先級(jí)的重新排序僅需一次鏈表的刪除和添加,故具有維護(hù)簡(jiǎn)單的優(yōu)點(diǎn)。
【專利附圖】
【附圖說明】
[0048]圖1是本申請(qǐng)的一種現(xiàn)有技術(shù)一種DSP的基于優(yōu)先級(jí)的可搶占式調(diào)度的示例;
[0049]圖2是本申請(qǐng)的一種基于DSP的任務(wù)調(diào)度方法實(shí)施例一的流程圖;
[0050]圖3是本申請(qǐng)實(shí)施例一種互斥鎖的數(shù)據(jù)結(jié)構(gòu)的示意圖;[0051]圖4是本申請(qǐng)實(shí)施例一種針對(duì)互斥鎖執(zhí)行P操作時(shí)的任務(wù)優(yōu)先級(jí)示意圖;
[0052]圖5是本申請(qǐng)一種基于DSP的任務(wù)調(diào)度的應(yīng)用示例I ;
[0053]圖6是本申請(qǐng)一種基于DSP的任務(wù)調(diào)度的應(yīng)用示例2 ;
[0054]圖7是本申請(qǐng)的一種基于DSP的任務(wù)調(diào)度方法實(shí)施例二的流程圖;
[0055]圖8是本申請(qǐng)一種多任務(wù)排隊(duì)等待互斥鎖時(shí)的任務(wù)優(yōu)先級(jí)示意圖;
[0056]圖9是本申請(qǐng)一種基于DSP的任務(wù)調(diào)度的方法示例3 ;
[0057]圖10是本申請(qǐng)的一種基于DSP的任務(wù)調(diào)度裝置實(shí)施例的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0058]為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明。
[0059]本申請(qǐng)實(shí)施例提供了一種無需關(guān)中斷即可解決優(yōu)先級(jí)翻轉(zhuǎn)問題的任務(wù)調(diào)度方案,其在當(dāng)前任務(wù)對(duì)互斥鎖執(zhí)行P操作時(shí),如果發(fā)現(xiàn)該互斥鎖被比自己優(yōu)先級(jí)低的任務(wù)占用,則將占用該互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí),這樣,在占用該互斥鎖的任務(wù)釋放互斥鎖之前介于兩個(gè)任務(wù)之間的任務(wù)無法搶占CPU,因此能夠保證盡快釋放以盡快解除所述當(dāng)前任務(wù)的阻塞狀態(tài),從而保證具有較高優(yōu)先級(jí)的該當(dāng)前任務(wù)被盡快調(diào)度,故能夠提高DSP的實(shí)時(shí)性。
[0060]并且,本申請(qǐng)實(shí)施例在現(xiàn)有互斥鎖的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上增加了占用該互斥鎖的任務(wù)信息,在發(fā)現(xiàn)需要提高優(yōu)先級(jí)的任務(wù)的過程中只需從新增后互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息即可,因此能夠快速發(fā)現(xiàn)需要提高優(yōu)先級(jí)的任務(wù),從而能夠進(jìn)一步提高DSP的實(shí)時(shí)性。
[0061]實(shí)施例一
[0062]參照?qǐng)D2,示出了本申請(qǐng)的一種基于DSP的任務(wù)調(diào)度方法實(shí)施例一的流程圖,具體可以包括:
[0063]步驟201、在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用該互斥鎖的任務(wù)信息;
[0064]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,可以在任務(wù)針對(duì)互斥鎖的P操作成功時(shí),在所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄該任務(wù)的信息,作為占用所述互斥鎖的任務(wù)信息。由于任務(wù)針對(duì)互斥鎖的P操作成功即可表示占用了該互斥鎖,故該優(yōu)選實(shí)施例可以及時(shí)記錄占用該互斥鎖的任務(wù)信息,當(dāng)然,在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用該互斥鎖的任務(wù)信息的其它時(shí)機(jī)也是可行的,如在任務(wù)針對(duì)互斥鎖的P操作成功后的若干指令周期內(nèi)。
[0065]參照?qǐng)D3,示出了本申請(qǐng)實(shí)施例一種互斥鎖的數(shù)據(jù)結(jié)構(gòu)的示意圖,其中,該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄有“當(dāng)前占用互斥鎖的是任務(wù)A”的相關(guān)信息。
[0066]步驟202、在當(dāng)前任務(wù)對(duì)該互斥鎖執(zhí)行P操作時(shí),從該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用該互斥鎖的任務(wù)信息,并將當(dāng)前任務(wù)的優(yōu)先級(jí)與占用該互斥鎖的任務(wù)的優(yōu)先級(jí)進(jìn)行比較,如果當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用該互斥鎖的任務(wù)的優(yōu)先級(jí),則將占用該互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)。
[0067]在實(shí)際應(yīng)用中,所述當(dāng)前任務(wù)可以是除任務(wù)A之外的、對(duì)該互斥鎖執(zhí)行P操作的任意任務(wù)。
[0068]參照?qǐng)D4,示出了本申請(qǐng)實(shí)施例一種針對(duì)互斥鎖執(zhí)行P操作時(shí)的任務(wù)優(yōu)先級(jí)示意圖,其中,任務(wù)A占用互斥鎖,且該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄有任務(wù)A的相應(yīng)信息,那么,在任務(wù)B對(duì)該互斥鎖進(jìn)行P操作時(shí),可以從該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取任務(wù)A的信息,并將任務(wù)B的優(yōu)先級(jí)與任務(wù)A的優(yōu)先級(jí)進(jìn)行比較,如果任務(wù)B的優(yōu)先級(jí)高于任務(wù)A的優(yōu)先級(jí),則可以將任務(wù)A的優(yōu)先級(jí)提高到任務(wù)B的優(yōu)先級(jí)。
[0069]實(shí)施例一在當(dāng)前任務(wù)對(duì)互斥鎖執(zhí)行P操作時(shí),如果發(fā)現(xiàn)該互斥鎖被比自己優(yōu)先級(jí)低的任務(wù)占用,則將占用該互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí),其具有如下優(yōu)點(diǎn):
[0070]第一,能夠在占用該互斥鎖的任務(wù)釋放互斥鎖之前介于兩個(gè)任務(wù)之間的任務(wù)無法搶占CPU,因此能夠保證盡快釋放以盡快解除所述當(dāng)前任務(wù)的阻塞狀態(tài),從而保證具有較高優(yōu)先級(jí)的該當(dāng)前任務(wù)被盡快調(diào)度,故能夠提高DSP的實(shí)時(shí)性;
[0071]第二,在現(xiàn)有互斥鎖的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上增加了占用該互斥鎖的任務(wù)信息,在發(fā)現(xiàn)需要提高優(yōu)先級(jí)的任務(wù)的過程中只需從新增后互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息即可,因此能夠快速發(fā)現(xiàn)需要提高優(yōu)先級(jí)的任務(wù),從而能夠進(jìn)一步提高DSP的實(shí)時(shí)性;
[0072]第三,僅在通過P操作嘗試獲取同一互斥鎖的任務(wù)的優(yōu)先級(jí)高于占用該互斥鎖的任務(wù)的優(yōu)先級(jí)時(shí),提高占用該互斥鎖的任務(wù)的優(yōu)先級(jí),故不會(huì)增加過多的開銷;并且,上述整個(gè)任務(wù)調(diào)度流程未引入無謂的判斷分支,一方面能夠避免新增代碼帶來的開銷,另一方面能夠保證代碼的執(zhí)行效率,從而能夠保證DSP的實(shí)時(shí)性;
[0073]第四,在任務(wù)的優(yōu)先級(jí)提高后,所有任務(wù)的優(yōu)先級(jí)的重新排序僅需一次鏈表的刪除和添加,故具有維護(hù)簡(jiǎn)單的優(yōu)點(diǎn)。
[0074]為使本領(lǐng)域技術(shù)人員更好地理解本申請(qǐng),在此提供本申請(qǐng)的應(yīng)用示例:
[0075]應(yīng)用示例I
[0076]參照?qǐng)D5,示出了本申請(qǐng)一種基于DSP的任務(wù)調(diào)度的應(yīng)用示例1,該示例I中有3個(gè)任務(wù):A、B和C,該3個(gè)任務(wù)的優(yōu)先級(jí)排序?yàn)?A〈B〈C,具體可以包括如下步驟:
[0077]在TO時(shí)刻,任務(wù)A對(duì)某互斥鎖執(zhí)行P操作,若該互斥鎖之前的狀態(tài)為可獲取,則現(xiàn)在變?yōu)椴豢色@取,任務(wù)A占用該互斥鎖,同時(shí)任務(wù)A的P操作成功并返回繼續(xù)執(zhí)行任務(wù)A,以及,在該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄任務(wù)A的信息
[0078]在Tl時(shí)刻,中斷a發(fā)生并觸發(fā)了任務(wù)B;
[0079]在T2時(shí)刻,任務(wù)B搶占任務(wù)A的CPU,并處于運(yùn)行狀態(tài);
[0080]在T3時(shí)刻,中斷b發(fā)生并觸發(fā)了任務(wù)C ;
[0081]在T4時(shí)刻,任務(wù)C搶占任務(wù)B的CPU,并處于運(yùn)行狀態(tài),任務(wù)C試圖通過執(zhí)行P操作獲取被任務(wù)A占用的互斥鎖,被阻塞;此時(shí),從該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取任務(wù)A的信息,并將任務(wù)C的優(yōu)先級(jí)與任務(wù)A的優(yōu)先級(jí)進(jìn)行比較,發(fā)現(xiàn)任務(wù)B的優(yōu)先級(jí)高于任務(wù)A的優(yōu)先級(jí),故可以將任務(wù)A的優(yōu)先級(jí)提高到任務(wù)C的優(yōu)先級(jí);
[0082]在T5時(shí)刻,由于任務(wù)A的優(yōu)先級(jí)大于任務(wù)B的優(yōu)先級(jí),故任務(wù)A重新獲得CPU,并執(zhí)行任務(wù);
[0083]在T6時(shí)刻,任務(wù)A通過執(zhí)行V操作釋放上述互斥鎖,任務(wù)C的阻塞被解除,由于任務(wù)C的優(yōu)先級(jí)高于任務(wù)B,故任務(wù)C開始運(yùn)行;
[0084]在T7時(shí)刻,任務(wù)C執(zhí)行完畢,任務(wù)B重新獲得CPU,并執(zhí)行任務(wù)。[0085]可以明顯看出,相對(duì)于圖1的方案中,優(yōu)先級(jí)最高的任務(wù)C既要等優(yōu)先級(jí)低的任務(wù)B運(yùn)行完,還要等優(yōu)先級(jí)更低的任務(wù)A釋放互斥鎖之后才能被調(diào)度,圖5的方案中優(yōu)先級(jí)最高的任務(wù)C無需再等待優(yōu)先級(jí)低的任務(wù)B運(yùn)行完就能被調(diào)度,也即任務(wù)C得到了優(yōu)先于任務(wù)B的執(zhí)行順序,故能夠保證任務(wù)C的被調(diào)度時(shí)機(jī),而由于在實(shí)際中高優(yōu)先級(jí)的任務(wù)通常用于快速完成一些需要及時(shí)處理的事件,因此,本申請(qǐng)能夠提高DSP的實(shí)時(shí)性。
[0086]應(yīng)用示例2
[0087]參照?qǐng)D6,示出了本申請(qǐng)一種基于DSP的任務(wù)調(diào)度的方法示例2,該示例I中有5個(gè)任務(wù):A、B、C、D和E,該5個(gè)任務(wù)的優(yōu)先級(jí)排序?yàn)?A〈B〈C〈D〈E,具體可以包括如下步驟:
[0088]在TO時(shí)刻,任務(wù)A對(duì)某互斥鎖執(zhí)行P操作,若該互斥鎖之前的狀態(tài)為可獲取,則現(xiàn)在變?yōu)椴豢色@取,任務(wù)A占用該互斥鎖,同時(shí)任務(wù)A的P操作成功并返回繼續(xù)執(zhí)行任務(wù)A,以及,在該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄任務(wù)A的信息
[0089]在Tl時(shí)刻,中斷a發(fā)生并觸發(fā)了任務(wù)B;
[0090]在T2時(shí)刻,任務(wù)B搶占任務(wù)A的CPU,并處于運(yùn)行狀態(tài);
[0091]在T3時(shí)刻,中斷b發(fā)生并觸發(fā)了任務(wù)C ;
[0092]在T4時(shí)刻,任務(wù)C搶占任務(wù)B的CPU,并處于運(yùn)行狀態(tài),任務(wù)C試圖通過執(zhí)行P操作獲取被任務(wù)A占用的互斥鎖,被放至阻塞隊(duì)列;此時(shí),從該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取任務(wù)A的信息,并將任務(wù)C的優(yōu)先級(jí)與任務(wù)A的優(yōu)先級(jí)進(jìn)行比較,發(fā)現(xiàn)任務(wù)C的優(yōu)先級(jí)高于任務(wù)A的優(yōu)先級(jí),故可以將任務(wù)A的優(yōu)先級(jí)提高到任務(wù)C的優(yōu)先級(jí);
[0093]在T5時(shí)刻,由于任務(wù)A的優(yōu)先級(jí)大于任務(wù)B的優(yōu)先級(jí),故任務(wù)A重新獲得CPU,并執(zhí)行任務(wù);
[0094]在T6時(shí)刻,中斷c發(fā)生并觸發(fā)了任務(wù)E ;
[0095]在T7時(shí)刻,任務(wù)E搶占任務(wù)A的CPU,并處于運(yùn)行狀態(tài),任務(wù)E試圖通過執(zhí)行P操作獲取被任務(wù)A占用的互斥鎖,被放至阻塞隊(duì)列;此時(shí),從該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取任務(wù)A的信息,并將任務(wù)E的優(yōu)先級(jí)與任務(wù)A的優(yōu)先級(jí)進(jìn)行比較,發(fā)現(xiàn)任務(wù)E的優(yōu)先級(jí)高于任務(wù)A的優(yōu)先級(jí),故可以將任務(wù)A的優(yōu)先級(jí)提高到任務(wù)E的優(yōu)先級(jí);
[0096]在T8時(shí)刻,由于任務(wù)A的優(yōu)先級(jí)大于任務(wù)B的優(yōu)先級(jí),故任務(wù)A重新獲得CPU,并執(zhí)行任務(wù);
[0097]在T9時(shí)刻,任務(wù)A通過執(zhí)行V操作釋放上述互斥鎖,任務(wù)C從所述阻塞隊(duì)列中出隊(duì),由于任務(wù)C的優(yōu)先級(jí)高于任務(wù)B,故任務(wù)C開始運(yùn)行;
[0098]在TlO時(shí)刻,中斷d發(fā)生并觸發(fā)了任務(wù)D ;
[0099]在Tll時(shí)刻,任務(wù)D搶占任務(wù)C的CPU,并處于運(yùn)行狀態(tài);
[0100]在T12時(shí)刻,任務(wù)D執(zhí)行完畢,任務(wù)C重新獲得CPU,并執(zhí)行任務(wù);
[0101]在T13時(shí)刻,任務(wù)C通過執(zhí)行V操作釋放上述互斥鎖,任務(wù)E的阻塞被解除,任務(wù)E開始運(yùn)行。
[0102]可以明顯看出,相對(duì)于圖1的方案,圖6的方案中優(yōu)先級(jí)最高的任務(wù)C無需再等待優(yōu)先級(jí)低的任務(wù)B運(yùn)行完就能被調(diào)度,也即任務(wù)C得到了優(yōu)先于任務(wù)B的執(zhí)行順序,故能夠保證任務(wù)C的被調(diào)度時(shí)機(jī);
[0103]然而,圖6的方案還存在如下問題:優(yōu)先級(jí)最高的任務(wù)E既要等優(yōu)先級(jí)低的任務(wù)D運(yùn)行完,還要等優(yōu)先級(jí)更低的任務(wù)C釋放互斥鎖之后才能被調(diào)度,如果任務(wù)C和任務(wù)D執(zhí)行的很費(fèi)時(shí)的操作,顯然任務(wù)E的被調(diào)度時(shí)機(jī)就不能保證,而在實(shí)際中高優(yōu)先級(jí)的任務(wù)通常用于快速完成一些需要及時(shí)處理的事件,因此,上述方案將嚴(yán)重影響DSP的實(shí)時(shí)性。
[0104]實(shí)施例二
[0105]參照?qǐng)D7,示出了本申請(qǐng)的一種基于DSP的任務(wù)調(diào)度方法實(shí)施例二的流程圖,其在圖2所示實(shí)施例一的基礎(chǔ)上,還可以包括如下步驟:
[0106]步驟203、在所述占用該互斥鎖的任務(wù)對(duì)該互斥鎖進(jìn)行V操作時(shí),若發(fā)現(xiàn)該互斥鎖的阻塞隊(duì)列中第一個(gè)任務(wù)的優(yōu)先級(jí)低于后面任務(wù)的優(yōu)先級(jí),則將所述第一個(gè)任務(wù)的優(yōu)先級(jí)提高到所述后面任務(wù)中的最高優(yōu)先級(jí)。
[0107]本實(shí)施例在占用所述互斥鎖的任務(wù)對(duì)互斥鎖進(jìn)行V操作時(shí),若發(fā)現(xiàn)該互斥鎖的阻塞隊(duì)列中第一個(gè)排隊(duì)等待的任務(wù)(簡(jiǎn)稱第一個(gè)任務(wù))的優(yōu)先級(jí)低于后面任務(wù)的優(yōu)先級(jí),則提高該第一個(gè)任務(wù)的優(yōu)先級(jí)使其與所述后面任務(wù)中的最高優(yōu)先級(jí)持平。
[0108]參照?qǐng)D8,示出了本申請(qǐng)一種多任務(wù)排隊(duì)等待互斥鎖時(shí)的任務(wù)優(yōu)先級(jí)示意圖,其中,對(duì)于同一互斥鎖,當(dāng)前占用互斥鎖的是任務(wù)A,而阻塞隊(duì)列中排隊(duì)等待的任務(wù)具體包括:任務(wù)B和任務(wù)C,其中,任務(wù)B排在任務(wù)C的前面,且任務(wù)B的優(yōu)先級(jí)小于任務(wù)C的優(yōu)先級(jí);這樣,當(dāng)任務(wù)A執(zhí)行V操作時(shí),如果發(fā)現(xiàn)阻塞隊(duì)列中任務(wù)B的優(yōu)先級(jí)低于任務(wù)C的優(yōu)先級(jí),則可以提高任務(wù)B優(yōu)先級(jí)使其與任務(wù)C的優(yōu)先級(jí)持平;這樣,當(dāng)任務(wù)B接著占用互斥鎖時(shí)可以擁有與任務(wù)C相等的優(yōu)先級(jí),這樣,即使下一時(shí)刻新出現(xiàn)了優(yōu)先級(jí)在任務(wù)B的原始優(yōu)先級(jí)和任務(wù)C的優(yōu)先級(jí)之間的任務(wù),也不會(huì)調(diào)度該新出現(xiàn)的任務(wù),因此,本實(shí)施例能夠避免被優(yōu)先級(jí)在任務(wù)B的原始優(yōu)先級(jí)和任務(wù)C的優(yōu)先級(jí)之間的任務(wù)打斷,因此,能夠保證占用互斥鎖的任務(wù)B盡快執(zhí)行完以盡快釋放互斥鎖給任務(wù)C,從而能夠提高DSP的實(shí)時(shí)性。
[0109]應(yīng)用示例3
[0110]參照?qǐng)D9,示出了本申請(qǐng)一種基于DSP的任務(wù)調(diào)度的方法示例3,該示例3中有5個(gè)任務(wù):A、B、C、D和E,該5個(gè)任務(wù)的優(yōu)先級(jí)排序?yàn)?A〈B〈C〈D〈E,具體可以包括如下步驟:
[0111]在TO時(shí)刻,任務(wù)A對(duì)某互斥鎖執(zhí)行P操作,若該互斥鎖之前的狀態(tài)為可獲取,則現(xiàn)在變?yōu)椴豢色@取,任務(wù)A占用該互斥鎖,同時(shí)任務(wù)A的P操作成功并返回繼續(xù)執(zhí)行任務(wù)A,以及,在該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄任務(wù)A的信息
[0112]在Tl時(shí)刻,中斷a發(fā)生并觸發(fā)了任務(wù)B;
[0113]在T2時(shí)刻,任務(wù)B搶占任務(wù)A的CPU,并處于運(yùn)行狀態(tài);
[0114]在T3時(shí)刻,中斷b發(fā)生并觸發(fā)了任務(wù)C ;
[0115]在T4時(shí)刻,任務(wù)C搶占任務(wù)B的CPU,并處于運(yùn)行狀態(tài),任務(wù)C試圖通過執(zhí)行P操作獲取被任務(wù)A占用的互斥鎖,被放至阻塞隊(duì)列;此時(shí),從該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取任務(wù)A的信息,并將任務(wù)C的優(yōu)先級(jí)與任務(wù)A的優(yōu)先級(jí)進(jìn)行比較,發(fā)現(xiàn)任務(wù)C的優(yōu)先級(jí)高于任務(wù)A的優(yōu)先級(jí),故可以將任務(wù)A的優(yōu)先級(jí)提高到任務(wù)C的優(yōu)先級(jí);
[0116]在T5時(shí)刻,由于任務(wù)A的優(yōu)先級(jí)大于任務(wù)B的優(yōu)先級(jí),故任務(wù)A重新獲得CPU,并執(zhí)行任務(wù);
[0117]在T6時(shí)刻,中斷c發(fā)生并觸發(fā)了任務(wù)E ;
[0118]在T7時(shí)刻,任務(wù)E搶占任務(wù)A的CPU,并處于運(yùn)行狀態(tài),任務(wù)E試圖通過執(zhí)行P操作獲取被任務(wù)A占用的互斥鎖,被放至阻塞隊(duì)列;此時(shí),從該互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取任務(wù)A的信息,并將任務(wù)E的優(yōu)先級(jí)與任務(wù)A的優(yōu)先級(jí)進(jìn)行比較,發(fā)現(xiàn)任務(wù)E的優(yōu)先級(jí)高于任務(wù)A的優(yōu)先級(jí),故可以將任務(wù)A的優(yōu)先級(jí)提高到任務(wù)E的優(yōu)先級(jí);
[0119]在T8時(shí)刻,由于任務(wù)A的優(yōu)先級(jí)大于任務(wù)B的優(yōu)先級(jí),故任務(wù)A重新獲得CPU,并執(zhí)行任務(wù);
[0120]在T9時(shí)刻,任務(wù)A通過執(zhí)行V操作釋放上述互斥鎖,此時(shí),發(fā)現(xiàn)阻塞隊(duì)列中任務(wù)C的優(yōu)先級(jí)低于任務(wù)E的優(yōu)先級(jí),于是提高任務(wù)C的優(yōu)先級(jí)使其與任務(wù)E的優(yōu)先級(jí)持平,并且,將任務(wù)C從所述阻塞隊(duì)列中出隊(duì),由于任務(wù)C的優(yōu)先級(jí)高于任務(wù)B,故任務(wù)C開始運(yùn)行;
[0121]在TlO時(shí)刻,中斷d發(fā)生并觸發(fā)了任務(wù)D,由于任務(wù)D的優(yōu)先級(jí)低于任務(wù)C的當(dāng)前優(yōu)先級(jí),故任務(wù)D無法搶占任務(wù)C的CPU,任務(wù)C 一直處于運(yùn)行狀態(tài);
[0122]在Tll時(shí)刻,任務(wù)C通過執(zhí)行V操作釋放上述互斥鎖,任務(wù)E的阻塞被解除,任務(wù)E開始運(yùn)行。
[0123]可以明顯看出,相對(duì)于圖6的方案,圖9的方案中優(yōu)先級(jí)最高的任務(wù)E無需再等待優(yōu)先級(jí)較低的任務(wù)D運(yùn)行完就能被調(diào)度,也即任務(wù)E得到了優(yōu)先于任務(wù)D的執(zhí)行順序,故能夠保證任務(wù)E的被調(diào)度時(shí)機(jī)。
[0124]當(dāng)然,上述圖9只是作為本申請(qǐng)的一種應(yīng)用示例,其阻塞隊(duì)列中有2個(gè)任務(wù),可以理解,本申請(qǐng)可以適用于阻塞隊(duì)列中有2個(gè)以上的多任務(wù)的任務(wù)調(diào)度場(chǎng)景,且能夠避免出現(xiàn)多任務(wù)等待同一互斥鎖可能引起的優(yōu)先級(jí)翻轉(zhuǎn)問題。
[0125]實(shí)施例三
[0126]實(shí)施例三為本申請(qǐng)的一種基于DSP的任務(wù)調(diào)度方法的可選技術(shù)方案,其在圖2所示實(shí)施例一和圖7所示實(shí)施例二的基礎(chǔ)上,還可以包括如下步驟:
[0127]在將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)的同時(shí),在所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中記錄相應(yīng)的原始優(yōu)先級(jí)信息;
[0128]在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),從所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中讀取相應(yīng)的原始優(yōu)先級(jí)信息,并將所述占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)恢復(fù)到原始優(yōu)先級(jí)。
[0129]本優(yōu)選實(shí)施例中,原始優(yōu)先級(jí)也即一個(gè)任務(wù)的初始優(yōu)先級(jí)。在一個(gè)任務(wù)占用互斥鎖的過程中,可能會(huì)有多個(gè)優(yōu)先級(jí)高于該任務(wù)的任務(wù)對(duì)同一互斥鎖執(zhí)行P操作,也即,該任務(wù)的優(yōu)先級(jí)可能被提高多次,例如,任務(wù)A的優(yōu)先級(jí)變化過程可能為I — 2,2 — 3,3 — 4,4 — 5等等,這里,一表示優(yōu)先級(jí)修改,然而,任務(wù)的數(shù)據(jù)結(jié)構(gòu)中通常會(huì)記錄的是該任務(wù)的原始優(yōu)先級(jí)也即I。
[0130]由于在現(xiàn)有任務(wù)的數(shù)據(jù)結(jié)構(gòu)中增加了原始優(yōu)先級(jí)信息,這樣,在滿足需要恢復(fù)優(yōu)先級(jí)的時(shí)機(jī)也即在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),只需從新增后任務(wù)的數(shù)據(jù)結(jié)構(gòu)中讀取相應(yīng)的原始優(yōu)先級(jí)信息即可,因此能夠快速發(fā)現(xiàn)需要恢復(fù)優(yōu)先級(jí)的任務(wù),從而能夠進(jìn)一步提高DSP的實(shí)時(shí)性。
[0131]需要說明的是,由于本申請(qǐng)并未關(guān)中斷,故占用互斥鎖的任務(wù)在執(zhí)行期間很有可能被優(yōu)先級(jí)更高的任務(wù)打斷,而本申請(qǐng)?jiān)诋?dāng)前任務(wù)對(duì)該互斥鎖執(zhí)行P操作時(shí),一旦發(fā)現(xiàn)當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用該互斥鎖的任務(wù)的優(yōu)先級(jí),如果當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用該互斥鎖的任務(wù)的優(yōu)先級(jí),都會(huì)將占用該互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí),這樣,即使下一時(shí)刻新出現(xiàn)了優(yōu)先級(jí)在占用互斥鎖的任務(wù)的原始優(yōu)先級(jí)和等待同一互斥鎖的最高優(yōu)先級(jí)之間的任務(wù),也不會(huì)調(diào)度該新出現(xiàn)的任務(wù),因此,本實(shí)施例能夠避免被優(yōu)先級(jí)在占用互斥鎖的任務(wù)的原始優(yōu)先級(jí)和等待同一互斥鎖的最高優(yōu)先級(jí)之間的任務(wù)打斷,因此,能夠保證占用互斥鎖的任務(wù)盡快執(zhí)行完以盡快釋放互斥鎖給下一個(gè)任務(wù),從而能夠提高DSP的實(shí)時(shí)性。
[0132]需要說明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng)實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)實(shí)施例所必須的。
[0133]參照?qǐng)D10,示出了本申請(qǐng)一種基于DSP的任務(wù)調(diào)度裝置的結(jié)構(gòu)圖,具體可以包括:
[0134]第一記錄模塊1001,用于在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用所述互斥鎖的任務(wù)信息;
[0135]第一讀取模塊1002,用于在當(dāng)前任務(wù)對(duì)所述互斥鎖執(zhí)行P操作時(shí),從所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息;
[0136]比較模塊1003,用于將當(dāng)前任務(wù)的優(yōu)先級(jí)與占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)進(jìn)行比較;及
[0137]第一修改模塊1004,用于在當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)時(shí),將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)。
[0138]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述裝置還可以包括:
[0139]第二修改模塊,用于在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),若發(fā)現(xiàn)所述互斥鎖的阻塞隊(duì)列中第一個(gè)任務(wù)的優(yōu)先級(jí)低于后面任務(wù)的優(yōu)先級(jí),則將所述第一個(gè)任務(wù)的優(yōu)先級(jí)提高到所述后面任務(wù)中的最高優(yōu)先級(jí)。
[0140]在本申請(qǐng)的另一種優(yōu)選實(shí)施例中,所述第一記錄模塊1001,可具體用于在任務(wù)針對(duì)互斥鎖的P操作成功時(shí),在所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄該任務(wù)的信息,作為占用所述互斥鎖的任務(wù)信息。
[0141]在本申請(qǐng)的再一種優(yōu)選實(shí)施例中,所述裝置還可以包括:
[0142]第二記錄模塊,用于在將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)的同時(shí),在所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中記錄相應(yīng)的原始優(yōu)先級(jí)信息;
[0143]第二讀取模塊,用于在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),從所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中讀取相應(yīng)的原始優(yōu)先級(jí)信息;
[0144]恢復(fù)模塊,用于將所述占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)恢復(fù)到原始優(yōu)先級(jí)。
[0145]對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
[0146]本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
[0147]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)實(shí)施例的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)實(shí)施例可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)實(shí)施例可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。[0148]本申請(qǐng)實(shí)施例是參照根據(jù)本申請(qǐng)實(shí)施例的方法、終端設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0149]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0150]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理終端設(shè)備上,使得在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程終端設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0151]盡管已描述了本申請(qǐng)實(shí)施例的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)實(shí)施例范圍的所有變更和修改。
[0152]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設(shè)備中還存在另外的相同要素。
[0153]以上對(duì)本申請(qǐng)所提供的一種基于DSP的任務(wù)調(diào)度方法和裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
【權(quán)利要求】
1.一種基于數(shù)字信號(hào)處理DSP的任務(wù)調(diào)度方法,其特征在于,包括: 在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用所述互斥鎖的任務(wù)信息; 在當(dāng)前任務(wù)對(duì)所述互斥鎖執(zhí)行P操作時(shí),從所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息,并將當(dāng)前任務(wù)的優(yōu)先級(jí)與占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)進(jìn)行比較,如果當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用所述互斥鎖的任務(wù)的優(yōu)先級(jí),則將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),若發(fā)現(xiàn)所述互斥鎖的阻塞隊(duì)列中第一個(gè)任務(wù)的優(yōu)先級(jí)低于后面任務(wù)的優(yōu)先級(jí),則將所述第一個(gè)任務(wù)的優(yōu)先級(jí)提高到所述后面任務(wù)中的最高優(yōu)先級(jí)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用所述互斥鎖的任務(wù)信息的步驟,包括: 在任務(wù)針對(duì)互斥鎖的P操作成功時(shí),在所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄該任務(wù)的信息,作為占用所述互斥鎖的任務(wù)信息。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,還包括: 在將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)的同時(shí),在所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中記錄相應(yīng)的原始優(yōu)先級(jí)信息; 在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),從所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中讀取相應(yīng)的原始優(yōu)先級(jí)信息,并將所述占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)恢復(fù)到原始優(yōu)先級(jí)。
5.一種基于數(shù)字信號(hào)處 理DSP的任務(wù)調(diào)度裝置,其特征在于,包括: 第一記錄模塊,用于在互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄占用所述互斥鎖的任務(wù)信息; 第二讀取模塊,用于在當(dāng)前任務(wù)對(duì)所述互斥鎖執(zhí)行P操作時(shí),從所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中讀取占用所述互斥鎖的任務(wù)信息; 比較模塊,用于將當(dāng)前任務(wù)的優(yōu)先級(jí)與占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)進(jìn)行比較;及第一修改模塊,用于在當(dāng)前任務(wù)的優(yōu)先級(jí)高于占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)時(shí),將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,還包括: 第二修改模塊,用于在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),若發(fā)現(xiàn)所述互斥鎖的阻塞隊(duì)列中第一個(gè)任務(wù)的優(yōu)先級(jí)低于后面任務(wù)的優(yōu)先級(jí),則將所述第一個(gè)任務(wù)的優(yōu)先級(jí)提高到所述后面任務(wù)中的最高優(yōu)先級(jí)。
7.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述第一記錄模塊,具體用于在任務(wù)針對(duì)互斥鎖的P操作成功時(shí),在所述互斥鎖的數(shù)據(jù)結(jié)構(gòu)中記錄該任務(wù)的信息,作為占用所述互斥鎖的任務(wù)信息。
8.根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,還包括: 第二記錄模塊,用于在將占用所述互斥鎖的任務(wù)的優(yōu)先級(jí)提高到當(dāng)前任務(wù)的優(yōu)先級(jí)的同時(shí),在所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中記錄相應(yīng)的原始優(yōu)先級(jí)信息; 第二讀取模塊,用于在所述占用所述互斥鎖的任務(wù)對(duì)所述互斥鎖進(jìn)行V操作時(shí),從所述占用所述互斥鎖的任務(wù)的數(shù)據(jù)結(jié)構(gòu)中讀取相應(yīng)的原始優(yōu)先級(jí)信息;恢復(fù)模塊,用于將所述占用所述互斥鎖的`任務(wù)的優(yōu)先級(jí)恢復(fù)到原始優(yōu)先級(jí)。
【文檔編號(hào)】G06F9/48GK103870330SQ201410074888
【公開日】2014年6月18日 申請(qǐng)日期:2014年3月3日 優(yōu)先權(quán)日:2014年3月3日
【發(fā)明者】侯彥龍, 雷文 申請(qǐng)人:大唐移動(dòng)通信設(shè)備有限公司