两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種嵌入式實時操作系統(tǒng)中多級資源管理的實現(xiàn)方法

文檔序號:6354581閱讀:359來源:國知局
專利名稱:一種嵌入式實時操作系統(tǒng)中多級資源管理的實現(xiàn)方法
技術(shù)領(lǐng)域
本發(fā)明屬于汽車電子控制技術(shù)領(lǐng)域,更為具體地講,涉及一種嵌入式實時操作系 統(tǒng)中多級資源管理的實現(xiàn)方法。
背景技術(shù)
1、資源的概念在汽車電子領(lǐng)域的0SEK/VDX嵌入式實時操作系統(tǒng)規(guī)范中,提出了資源管理的功 能要求,主要用于應(yīng)用程序中的共享資源的保護。這實際上與其他嵌入式實時操作系統(tǒng)中 所提供的信號量機制類似。當(dāng)任務(wù)獲取某一共享資源后,其優(yōu)先級會被抬升到該資源的天 花板優(yōu)先級,以防止與該任務(wù)有相同資源競爭的任務(wù)進入。在釋放資源時任務(wù)的優(yōu)先級被 恢復(fù)到任務(wù)原來的優(yōu)先級。圖1是資源優(yōu)先級的原理實例圖。在圖1所示的例子中,Taskl的優(yōu)先級最高,Task4的優(yōu)先級最低。Taskl與Task4 共享一個資源,則該資源的優(yōu)先級應(yīng)該比Taskl高或相等。當(dāng)Task4占用資源時,它獲得 不低于Taskl的優(yōu)先級,因此在它獲得資源后的運行過程中,即便Taskl就緒它也不會被 Taskl搶占,直到Task4釋放資源。資源一旦被釋放,Task4的優(yōu)先級立即回到原來的低優(yōu) 先級,并且處于就緒狀態(tài),Taskl進入運行狀態(tài)。當(dāng)Taskl占用資源時,它的優(yōu)先級也會被 抬升到天花板優(yōu)先級。確定資源優(yōu)先級的原則是(1)、資源優(yōu)先級必需高于或者等于要使用該資源的任務(wù)的最高優(yōu)先級;O)、但不能夠高于未使用該資源的并且比使用該資源的任務(wù)的最高優(yōu)先級高的 任務(wù)的優(yōu)先級。圖2是確定資源優(yōu)先級的原則實例圖。確定資源優(yōu)先級的原則如圖2所示,在圖2的實例中,共有12個任務(wù)Tl T12,任 務(wù)的優(yōu)先級是數(shù)字越大優(yōu)先級越高,圖中各個任務(wù)所處的位置所對應(yīng)的縱坐標(biāo)表明了它的 優(yōu)先級。該實例中的T4,T6,T7,T9共享同一個資源R,它們當(dāng)中的最高優(yōu)先級是9。根據(jù) 上述確定資源優(yōu)先級原則第(1)條,則資源R的優(yōu)先級至少應(yīng)該為9,這個優(yōu)先級被稱為資 源R的天花板優(yōu)先級。而在這個系統(tǒng)中不共享資源S的任務(wù)中,Tl,T2,T3,T5,T8的優(yōu)先 級低于這個天花板優(yōu)先級,對該資源R優(yōu)先級的選擇沒有影響;但是另外一些不共享資源R 的任務(wù)T10,T11,T12的優(yōu)先級是高于這個天花板優(yōu)先級的,根據(jù)第(2)條規(guī)則,資源R的優(yōu) 先級不能超過它們當(dāng)中最低的優(yōu)先級12,則資源R最終的優(yōu)先級可以介于9和12之間,包 含9但不包含12,即圖中加粗的黑色實線所代表的3個優(yōu)先級9、10、11。2、多級資源的類型0SEK/VDX規(guī)范中提出了 5種類型的資源,即標(biāo)準資源、中斷資源、內(nèi)部資源、調(diào)度 器資源和鏈接資源。這些資源具有不同范圍的優(yōu)先級空間,我們把這些資源的集合稱為多 級資源,有關(guān)多級資源的概念陳述如下。
通常在一個基于優(yōu)先級的多任務(wù)軟件系統(tǒng)中,有兩種類型的運行體任務(wù)和中斷 服務(wù)例程。任務(wù)有一個優(yōu)先級范圍,中斷服務(wù)例程也有一個優(yōu)先級范圍。任務(wù)的優(yōu)先級范 圍是低于中斷服務(wù)例程的優(yōu)先級范圍的,因此,在系統(tǒng)允許響應(yīng)中斷的情況下,中斷的發(fā)生 是可以打斷任務(wù)的運行的。如圖3所示為一個系統(tǒng)范圍的優(yōu)先級模式,在這個系統(tǒng)中,任務(wù) 的優(yōu)先級范圍為1 64,中斷服務(wù)例程,包括異常處理程序的優(yōu)先級范圍為65 96。針對下面將闡述的5種資源,即標(biāo)準資源、中斷資源、內(nèi)部資源、調(diào)度器資源和鏈 接資源,在如圖3的系統(tǒng)中如果有使用這5種類型的資源,則標(biāo)準資源的優(yōu)先級范圍為1 64,中斷資源的優(yōu)先級范圍為65 96,內(nèi)部資源由于僅限于任務(wù)使用,其優(yōu)先級范圍也為 1 64,調(diào)度器資源的優(yōu)先級是個確定值,即為任務(wù)優(yōu)先級范圍的最大值64,鏈接資源的優(yōu) 先級取決于其所鏈接的資源的情況,其優(yōu)先級范圍為1 96。有關(guān)上述各類型資源的優(yōu)先 級范圍總結(jié)如圖4所示。2.1標(biāo)準資源標(biāo)準資源指的是一個普通的資源,其工作原理如第1節(jié)所述,并且它與其他資源 沒有關(guān)聯(lián)。標(biāo)準資源的優(yōu)先級范圍僅限于操作系統(tǒng)中所有任務(wù)能夠配置的優(yōu)先級范圍。比 如在圖4所示系統(tǒng)中,最多允許任務(wù)有64個不同的優(yōu)先級,則標(biāo)準資源的優(yōu)先級范圍為 1 64。2. 2中斷資源中斷資源的概念是將操作系統(tǒng)所管理的資源的概念進行了擴展,其含義是如果 有任務(wù)和中斷服務(wù)例程共享資源,那么這個資源被稱為中斷資源,它的作用與標(biāo)準資源一 樣,當(dāng)任務(wù)獲取了這個資源,其優(yōu)先級會被提升到該資源的天花板優(yōu)先級,其效果是,任務(wù) 獲得了比某些中斷更高的運行權(quán)利,任何一個可能占用相同資源的任務(wù)或中斷都不會進入 到運行狀態(tài),因為他們的優(yōu)先級都低于或等于當(dāng)前占用資源的任務(wù)的優(yōu)先級。中斷資源的 優(yōu)先級比純粹只涉及任務(wù)的資源優(yōu)先級高。中斷資源的占用可以通過設(shè)置硬件相應(yīng)的中斷標(biāo)志來完成,結(jié)果是,低于該中斷 級別的其他中斷被禁止。當(dāng)釋放資源時,相應(yīng)級別的中斷被打開允許響應(yīng)。另外,獲取中斷資源的也可以是中斷服務(wù)例程。2. 3內(nèi)部資源內(nèi)部資源也是代表了一組共享某資源的任務(wù),可以對使用相同內(nèi)部資源的任務(wù) 進行互斥。與標(biāo)準資源及其他資源不同的是,內(nèi)部資源不需要通過顯式的資源操作函數(shù) GetResource和ReleaseResource來獲取和釋放,它是當(dāng)任務(wù)進入運行狀態(tài)后自動獲得的 資源,當(dāng)任務(wù)退出運行態(tài)后自動釋放,這是由操作系統(tǒng)自動處理的。內(nèi)部資源只適用于任務(wù)。內(nèi)部資源在任務(wù)進入運行態(tài)時擁有,退出運行態(tài)時釋放, 唯一的例外是任務(wù)被搶占時,即任務(wù)被搶占時其已獲得的內(nèi)部資源是不需要釋放的。如果有的話,內(nèi)部資源總是任務(wù)第一個獲取的資源,但這并不表示內(nèi)部資源的優(yōu) 先級最低,在內(nèi)部資源之后,任務(wù)還可以獲得其他更低優(yōu)先級的資源。如果有的話,內(nèi)部資源也總是任務(wù)最后一個釋放的資源,所有其他的資源都必須 在內(nèi)部資源之前釋放。2. 4調(diào)度器資源調(diào)度程序可以被看作是一種特殊的資源,所有的任務(wù)都能夠訪問它。如果一個任務(wù)要想保護自己不被搶占,那么它可以占用調(diào)度器資源。當(dāng)調(diào)度器資源被占用時,中斷的響 應(yīng)可以正常發(fā)生,但是除鎖定調(diào)度器資源的任務(wù)外,其他任務(wù)不能被調(diào)度執(zhí)行。調(diào)度器資源也是對資源概念的一種擴展,在其他嵌入式操作系統(tǒng)中也有相類似的 功能,即開關(guān)調(diào)度。在0SEK/VDX規(guī)范中將其作為一種資源類型,可以減少相關(guān)系統(tǒng)調(diào)用的 數(shù)量,而使用與其他資源一樣的申請、釋放操作來關(guān)閉和打開調(diào)度。調(diào)度器資源的優(yōu)先級是高于所有任務(wù)原本的優(yōu)先級的,但是如果某任務(wù)獲取了中 斷資源,則其優(yōu)先級比調(diào)度器資源的優(yōu)先級高。即調(diào)度器資源鎖定的是調(diào)度程序,而中斷資 源鎖定的是中斷響應(yīng)。2. 5鏈接資源鏈接資源和標(biāo)準資源在使用上是完全一樣的,鏈接資源相當(dāng)于標(biāo)準資源的別名, 但其仍然是一個獨立的資源。由于在0SEK/VDX規(guī)范中,不允許資源的嵌套使用,或者說直 接嵌套調(diào)用同一個資源是不允許的,可以使用與這個資源具有相同特征的資源來代替,這 就是鏈接資源。鏈接資源可以和鏈接資源、標(biāo)準資源進行鏈接,但不能與內(nèi)部資源進行鏈接。當(dāng)把資源的概念擴展到鏈接資源后,一個資源的天花板優(yōu)先級應(yīng)該至少被設(shè)置為 所有訪問該資源的任務(wù)的最高優(yōu)先級或任何鏈接到該資源的資源優(yōu)先級。圖5資源鏈接之 前的情況,圖5中諸如Rl等符號右邊的數(shù)字代表其優(yōu)先級。在一個系統(tǒng)中,任務(wù)Tl (優(yōu)先 級1),T2(優(yōu)先級幻,T3(優(yōu)先級幻共享一個資源R1,這個Rl是個標(biāo)準資源,其天花板優(yōu) 先級應(yīng)該至少為3。系統(tǒng)中有另外的一些任務(wù)Τ4 (優(yōu)先級4),Τ5 (優(yōu)先級幻,Τ6 (優(yōu)先級6) 共享資源R2,R2為一個鏈接到Rl的資源,因此R2的天花板優(yōu)先級至少為6,而同時Rl的 天花板優(yōu)先級需要至少調(diào)整到6,圖6為資源在鏈接后的情況。從上述例子得出被鏈接的資源的優(yōu)先級升高,其意義相當(dāng)于擴展了資源所包含 的任務(wù)集合。2. 6對資源使用的要求前面對各種資源的描述中,已經(jīng)給出了一些資源使用的原則,這里再總結(jié)下相關(guān) 要求。 在申請資源時,資源的優(yōu)先級一定要比調(diào)用任務(wù)或中斷例程的靜態(tài)分配的原始 優(yōu)先級高; 試圖獲取一個已被某個任務(wù)或中斷服務(wù)例程占有的資源,系統(tǒng)將返回錯誤; 任務(wù)在獲得一個優(yōu)先級較高的資源后,后續(xù)還可以獲得優(yōu)先級相等甚至較低的 資源,但是其優(yōu)先級不變,保持為所有資源最高的優(yōu)先級; 同一個任務(wù)的資源應(yīng)該按照先進后出(Last In First Out,可簡寫為LIF0)的 順序申請和釋放; 當(dāng)任務(wù)進入等待態(tài)、掛起態(tài)時必須釋放完所擁有的所有資源,當(dāng)離開運行態(tài),即 切換到等待態(tài)、掛起態(tài)或就緒態(tài)時由操作系統(tǒng)完成內(nèi)部資源的釋放; 鏈接資源、中斷資源和標(biāo)準資源在使用上是完全一樣的。

發(fā)明內(nèi)容
本發(fā)明目的在于提供一種符合0SEK/VDX規(guī)范的、滿足嵌入式實時操作系統(tǒng)對于多級資源管理要求的方法。為實現(xiàn)上述目的,本發(fā)明嵌入式實時操作系統(tǒng)中多級資源管理的實現(xiàn)方法,其特 征在于,包括以下步驟(1)、相關(guān)數(shù)據(jù)結(jié)構(gòu)的設(shè)計1.1)、資源控制塊a、采用資源控制塊來對嵌入式實時操作系統(tǒng)中,除內(nèi)部資源外的每個資源進行管 理,資源控制塊包括資源ID,用于對資源進行唯一標(biāo)識,資源是否已被使用標(biāo)識,用于記錄資源是否已被使用,資源的天花板優(yōu)先級,嵌入式實時操作系統(tǒng)配置時根據(jù)資源優(yōu)先級的確定原則確 定,資源的當(dāng)前優(yōu)先級,用于記錄任務(wù)獲取該資源后所達到的優(yōu)先級,以便在任務(wù)釋 放資源的過程中其優(yōu)先級能夠恢復(fù)到正確的高度,指向下一個資源塊的指針,用于將獲取的資源鏈成一個資源鏈表,新獲取的資源 會插入到該鏈表的頭部,釋放資源的時候最近獲取的資源會被最先釋放掉;如果資源為中斷資源,則其資源控制塊還包括中斷掩碼,用于處理中斷資源時,記錄占用該資源前的中斷掩碼,以便中斷資源釋 放時,恢復(fù)中斷前的操作;b、資源鏈表對于標(biāo)準資源和鏈接資源的資源控制塊,根據(jù)任務(wù)獲取它們的先后順序鏈接成資 源鏈表,并鏈接到該任務(wù)的任務(wù)控制塊上;對于中斷資源的資源控制塊,根據(jù)獲取它們的先后順序鏈接成一個全局的中斷資 源鏈表;對于調(diào)度器資源的資源控制塊,其為獨立的資源控制塊,沒有掛在任何一個資源 鏈表上;1.2)、任務(wù)控制塊任務(wù)控制塊包括任務(wù)ID,用于對任務(wù)進行唯一標(biāo)識;任務(wù)配置信息表指針,用于指向任務(wù)配置信息結(jié)構(gòu)數(shù)組中該任務(wù)的配置信息表;任務(wù)當(dāng)前優(yōu)先級,用于記錄當(dāng)任務(wù)獲取任何一個資源后的最新的優(yōu)先級;任務(wù)使用的資源鏈表,用于把任務(wù)當(dāng)前所占用的標(biāo)準資源和鏈接資源按獲取它們 的先后順序鏈接起來,任務(wù)在釋放這些資源的時候則按照先進后出的順序進行;1. 3)、任務(wù)配置信息結(jié)構(gòu)數(shù)組任務(wù)配置信息結(jié)構(gòu)數(shù)組用于記錄任務(wù)靜態(tài)配置的信息,由嵌入式實時操作系統(tǒng)中 所有任務(wù)的配置信息表組成,這些信息在系統(tǒng)運行過程中不會發(fā)生改變;任務(wù)配置信息表包括任務(wù)ID號、任務(wù)靜態(tài)配置的原始優(yōu)先級、任務(wù)所使用的資 源列表以及內(nèi)部資源優(yōu)先級;O)、各級資源的操作2.1)、獲取資源
8
以資源ID為輸入?yún)?shù),告訴嵌入式操作系統(tǒng)需要獲取的是哪一個資源a、如果要獲取的是調(diào)度器資源檢查其資源控制塊的是否已被使用標(biāo)識,如果未 被使用則成功獲得調(diào)度器資源并返回;如果調(diào)度器資源已被使用則返回失??;b、檢查需要獲取的資源bl、如果其資源控制塊中是否已被使用標(biāo)識為已被使用,則返回錯誤,b2、如果當(dāng)前是在中斷處理程序中獲取非中斷資源,則返回錯誤,b3、如果要獲取的是標(biāo)準資源或鏈接資源b31、如果是在中斷服務(wù)例程中獲取該資源,則返回錯誤,b32、如果其資源控制塊中的天花板優(yōu)先級小于調(diào)用該資源的任務(wù)的任務(wù)控制塊 中的任務(wù)靜態(tài)配置的原始優(yōu)先級,返回錯誤,b33、如果在這之前調(diào)度器資源已經(jīng)被使用,返回錯誤;C、獲取資源的操作Cl、如果要獲取的是中斷資源ell、從硬件的中斷控制器中獲取當(dāng)前的中斷掩碼值并將其保存到該中斷資源的 資源控制塊的中斷掩碼元素中;cl2、將中斷控制器中的中斷掩碼值設(shè)置為該中斷資源的控制塊中的天花板優(yōu)先 級的值,以便屏蔽低于或等于該中斷資源的天花板優(yōu)先級的中斷;cl3、將該中斷資源的控制塊是否已被使用過標(biāo)識設(shè)置為已被使用;cl4、將該中斷資源的控制塊掛接到中斷資源鏈表的頭部;c2、如果要獲取的是標(biāo)準資源或鏈接資源c21、將該資源的控制塊是否已被使用過標(biāo)識設(shè)置為已被使用;c22、將該資源的控制塊掛接到獲取該資源的任務(wù)控制塊的資源鏈表的頭部;c23、如果獲取該資源的任務(wù)的控制塊中的當(dāng)前優(yōu)先級低于該資源的控制塊中的 天花板優(yōu)先級,則將獲取該資源的任務(wù)的控制塊中的當(dāng)前優(yōu)先級調(diào)整至該資源的天花板優(yōu) 先級;c24、將該資源的控制塊中的當(dāng)前優(yōu)先級設(shè)置為獲取該資源的任務(wù)的控制塊重的 當(dāng)前優(yōu)先級的值;2. 2)、釋放資源以資源ID為輸入?yún)?shù),告訴嵌入式操作系統(tǒng)需要獲取的是哪一個資源a、如果要釋放的是調(diào)度器資源檢查其資源控制塊的是否已被使用標(biāo)識,如果未 被使用則返回錯誤;如果調(diào)度器資源已被使用則釋放它,并進行任務(wù)調(diào)度;b、檢查需要釋放的資源bl、如果其資源控制塊中是否已被使用標(biāo)識為未已被使用,返回錯誤;b2、如果是在中斷服務(wù)例程中釋放非中斷類型的資源,則返回錯誤;b3、如果要釋放的是中斷資源b31、如果該資源不是中斷資源鏈表頭部的那個資源,則返回錯誤;b4、如果要釋放的是標(biāo)準資源或鏈接資源b41、如果要釋放的資源不是任務(wù)資源鏈表的頭節(jié)點,返回錯誤;b42、如果在這之前調(diào)度器資源已經(jīng)被使用,返回錯誤;
b43、如果是在中斷服務(wù)例程中釋放該資源,返回錯誤;b44、如果其資源控制塊中的天花板優(yōu)先級小于調(diào)用該資源的任務(wù)的任務(wù)控制塊 中的任務(wù)靜態(tài)配置的原始優(yōu)先級,返回錯誤。C、釋放資源的操作Cl、如果要釋放的是中斷資源ell、將該中斷資源的資源控制塊中是否已被使用標(biāo)識的置為未被使用;cl2、調(diào)整中斷資源鏈表取下頭節(jié)點,下一個中斷資源控制塊成為鏈表中的頭節(jié)占.
^ \\\ cl3、根據(jù)該中斷資源的資源控制塊中保存的中斷掩碼,恢復(fù)之前在獲取該中斷資 源時所保存的中斷掩碼值;cl4、檢查中斷資源鏈表,如果已釋放完所有的中斷資源,操作系統(tǒng)就進行任務(wù)調(diào) 度;c2、如果要釋放的是標(biāo)準資源或鏈接資源c21、將該資源的資源控制塊中是否已被使用標(biāo)識的置為未被使用;c22、調(diào)整獲取該資源任務(wù)的資源鏈表取下頭節(jié)點,下一個資源控制塊成為鏈表 中的頭節(jié)點;C23、如果獲取該資源任務(wù)的資源鏈表上還有其他資源控制塊,則調(diào)整該任務(wù)的控 制塊中的當(dāng)前優(yōu)先級為資源鏈表頭部那個資源的資源控制塊中的當(dāng)前優(yōu)先級,然后執(zhí)行調(diào) 度程序進行任務(wù)調(diào)度;c24、如果調(diào)用任務(wù)已不再擁有任何資源則進行如下的判斷和處理d41、如果該任務(wù)使用了內(nèi)部資源,并且任務(wù)的控制塊中當(dāng)前優(yōu)先級大于內(nèi)部資 源的優(yōu)先級,則調(diào)整任務(wù)當(dāng)前優(yōu)先級為內(nèi)部資源的優(yōu)先級,然后進行任務(wù)調(diào)度;d42、如果該任務(wù)未使用內(nèi)部資源,并且任務(wù)的控制塊中當(dāng)前優(yōu)先級不等于其靜 態(tài)配置的原始優(yōu)先級,則調(diào)整任務(wù)的當(dāng)前優(yōu)先級到原始優(yōu)先級的高度,然后進行任務(wù)調(diào)度。本發(fā)明的發(fā)明目的是這樣實現(xiàn)的為了符合0SEK/VDX規(guī)范的、滿足嵌入式實時操作系統(tǒng)對于多級資源管理的要求, 本發(fā)明嵌入式實時操作系統(tǒng)中多級資源的管理方法針對標(biāo)準資源、鏈接資源、中斷資源以 及調(diào)度器資源設(shè)計了資源控制塊,并鏈接到不同的位置,然后,按照不同資源的優(yōu)先級高低 關(guān)系,利用資源控制塊,實現(xiàn)對多級資源的管理。


圖1是資源優(yōu)先級的原理實例圖;圖2是確定資源優(yōu)先級的原則實例圖;圖3是嵌入式實時操作系統(tǒng)的優(yōu)先級模式4是中斷資源原理示意圖;圖5是資源鏈接前的示意圖;圖6是資源鏈接后的示意7是本發(fā)明中資源控制塊的一種具體實施結(jié)構(gòu)圖;圖8是中斷資源鏈表結(jié)構(gòu)10
圖9是任務(wù)控制塊的一種具體實施結(jié)構(gòu)圖;圖10是實例1的系統(tǒng)運行過程圖;圖11是實例1的系統(tǒng)運行過程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明的具體實施方式
進行描述,以便本領(lǐng)域的技術(shù)人員更好地 理解本發(fā)明。需要特別提醒注意的是,在以下的描述中,當(dāng)已知功能和設(shè)計的詳細描述也許 會淡化本發(fā)明的主要內(nèi)容時,這些描述在這里將被忽略。實施例1、相關(guān)數(shù)據(jù)結(jié)構(gòu)的設(shè)計1. 1、資源控制塊圖7是本發(fā)明中資源控制塊的一種具體實施結(jié)構(gòu)圖在本實施中,如圖7所示,資源控制塊包括資源ID resourceld 用于記錄資源的ID號,對資源進行唯一標(biāo)識;資源是否已被使用標(biāo)識i如sed 用于記錄資源是否已被使用;中斷掩碼savedlsrMask,用于處理中斷資源時,記錄占用該資源前的中斷掩碼,以 便中斷資源釋放時,恢復(fù)中斷前的操作,這個元素是嵌入式實時操作系統(tǒng)在處理中斷資源 時需要用到的;資源的天花板優(yōu)先級ceilingPriority 這個優(yōu)先級是在嵌入式實時操作系統(tǒng)配 置時根據(jù)資源天花板優(yōu)先級的確定原則計算出來的,該確定原則屬于現(xiàn)有技術(shù),在背景技 術(shù)中已經(jīng)進行了詳細描述,在此不在贅述;資源的當(dāng)前優(yōu)先級currentPriority 用于記錄任務(wù)獲取該資源后所達到的優(yōu)先 級,以便在任務(wù)釋放資源的過程中其優(yōu)先級能夠恢復(fù)到正確的高度;指向下一個資源塊的指針nextResource 指向下一個資源的指針,它用于將獲取 的資源鏈成一個資源鏈表,便于資源釋放時的操作。這將形成一個單向鏈表,新獲取的資 源會插入到鏈表的頭部,因此在鏈表最前面的就是最近獲取的資源。而釋放資源的時候是 要求最先釋放鏈表頭部的資源,這樣最近獲取的資源會被最先釋放掉,因而實現(xiàn)的是一個 LIFO (后進先出)的隊列。資源控制塊適用于標(biāo)準資源、鏈接資源、調(diào)度器資源和中斷資源。對于內(nèi)部資源, 由于應(yīng)用不能顯式地使用嵌入式實時操作系統(tǒng)提供的API函數(shù)(應(yīng)用程序編程接口函數(shù)) 獲取或釋放該資源,相關(guān)操作是在任務(wù)進入或離開運行狀態(tài)時由嵌入式實時操作系統(tǒng)自動 處理的,因此內(nèi)部資源沒有單獨的控制塊。內(nèi)部資源的優(yōu)先級是在進行系統(tǒng)配置時,根據(jù)該 任務(wù)所使用的內(nèi)部資源的情況計算出其內(nèi)部資源優(yōu)先級并記錄在任務(wù)配置信息表中的。不同類型資源,即標(biāo)準資源、鏈接資源、調(diào)度器資源和中斷資源的控制塊在使用過 程中被嵌入式實時操作系統(tǒng)鏈接到不同的位置對于標(biāo)準資源和鏈接資源的資源控制塊,根據(jù)任務(wù)獲取它們的先后順序鏈接成資 源鏈表,并鏈接到該任務(wù)的任務(wù)控制塊上;對于中斷資源的資源控制塊,如圖8所示,根據(jù)獲取它們的先后順序鏈接成一個 全局的中斷資源鏈表,中斷資源鏈表上每個資源控制塊所對應(yīng)的資源類型都是中斷資源;
對于調(diào)度器資源的資源控制塊,其為獨立的資源控制塊,沒有掛在任何一個資源 鏈表上;1.2、任務(wù)控制塊圖9是任務(wù)控制塊的一種具體實施結(jié)構(gòu)圖;對于標(biāo)準資源和鏈接資源的控制塊,是掛接在任務(wù)的控制塊上的。在本實施中,如 圖9所示,任務(wù)控制塊包括任務(wù)ID TaskID,用于對任務(wù)進行唯一標(biāo)識;任務(wù)配置信息表指針configTable,用于指向任務(wù)配置信息結(jié)構(gòu)數(shù)組中該任務(wù)的 配置信息表,任務(wù)配置信息表中包含任務(wù)靜態(tài)配置的原始優(yōu)先級、任務(wù)所使用的資源列表 以及內(nèi)部資源優(yōu)先級;任務(wù)當(dāng)前優(yōu)先級curPriority,用于記錄當(dāng)任務(wù)獲取任何一個資源后的最新的優(yōu) 先級;任務(wù)使用的資源鏈表resourceList,用于把任務(wù)當(dāng)前所占用的標(biāo)準資源和鏈接資 源按獲取它們的先后順序鏈接起來,任務(wù)在釋放這些資源的時候則按照先進后出的順序進 行;1. 3、任務(wù)配置信息結(jié)構(gòu)數(shù)組任務(wù)配置信息結(jié)構(gòu)數(shù)組用于記錄任務(wù)靜態(tài)配置的信息,這些信息在嵌入式實時操 作系統(tǒng)運行過程中不會改變。嵌入式實時操作系統(tǒng)中所有任務(wù)的配置信息表組成。表1是任務(wù)配置信息結(jié)構(gòu)數(shù)組taskConfigArray [NUM_0F_TASKS]
任務(wù)ID號 TaskID任務(wù)靜態(tài)配置的原始 優(yōu)先級 StaticPriority任務(wù)所使用的資源列表 sharedResource內(nèi)部資源優(yōu)先級 inResPriorityTlT2T3T4T5表 1該數(shù)組的元素個數(shù)與嵌入式實時操作系統(tǒng)中的任務(wù)數(shù)量有關(guān),比如嵌入式實時操 作系統(tǒng)系統(tǒng)中有5個任務(wù),則該表的任務(wù)ID號為Tl T5?!叭蝿?wù)所使用的資源列表”將記錄任務(wù)在運行過程中可能使用的所有資源的ID號。“內(nèi)部資源優(yōu)先級”是指,如果該任務(wù)有使用內(nèi)部資源,這個內(nèi)部資源的優(yōu)先級是 多少。1. 4、資源配置信息結(jié)構(gòu)數(shù)組資源配置信息結(jié)構(gòu)數(shù)組用于記錄資源靜態(tài)配置的信息,由嵌入式實時操作系統(tǒng)中 所有資源的配置信息表組成,這些信息在系統(tǒng)運行過程中不會改變;資源配置信息表包括資源ID號、資源類型、被鏈接的資源、資源的天花板優(yōu)先級,嵌入式實時操作系統(tǒng)中所有資源的配置信息形成數(shù)組,以表的形式表示如下
表 2 是資源配置信息結(jié)構(gòu)數(shù)組 resourceConfigArray [NUM_0F_RES0URCES]
資源ID號 resourceld資源類型 resourceType被鏈接的資源 IinkedResource資源的天花板優(yōu) 先級 ceilingProrityRlR2R3R4R5R6R7表2該數(shù)組的元素個數(shù)與系統(tǒng)中的資源數(shù)量有關(guān),在本實施例中,如表2所示,嵌入式 實時操作系統(tǒng)中有7個資源,則該表的資源ID號為Rl R7。其中“資源類型”可能的取值是標(biāo)準資源為STANDARD、鏈接資源為LINKED、中斷 資源為INTERRUPT、內(nèi)部資源為INTERNAL、調(diào)度器資源為SCHEDULER。如果某個資源屬于鏈接資源類型(LINKED),則在“被鏈接的資源”中記錄其鏈接到 的資源編號。2、確定資源天花板優(yōu)先級的算法在一個嵌入式實時操作系統(tǒng)的配置過程中,正確計算各種類型資源的天花板優(yōu)先 級是非常重要的。在本實施例中,給出一個確定資源天花板優(yōu)先級的算法。該算法使用上節(jié)所述的任務(wù)配置信息結(jié)構(gòu)數(shù)組和資源配置信息結(jié)構(gòu)數(shù)組,具體的 算法描述如下A.相關(guān)數(shù)據(jù)結(jié)構(gòu)的建立及初始化(1)、建立任務(wù)的配置信息結(jié)構(gòu)數(shù)組 taskConfigArray[NUM_OF_TASKS],宏 NUM_ 0F_TASKS代表系統(tǒng)中的任務(wù)總數(shù);O)、在每個任務(wù)配置信息結(jié)構(gòu)中設(shè)置該任務(wù)靜態(tài)配置的原始優(yōu)先級 taskConfigArray[i], staticPriority, i 的取值范圍是 0 NUM_0F_TASKS_1 ;(3)、在每個任務(wù)配置信息結(jié)構(gòu)中設(shè)置該任務(wù)的資源列表taskConfigArrayEi]. sharedResource,其中的每個列表元素是該任務(wù)所共享的不同資源ID號;、建立資源的配置信息結(jié)構(gòu)數(shù)組 resourceConfigArray [NUM_0F_RES0URCES], 宏NUM_0F_RES0URCES為系統(tǒng)中資源的總數(shù);(5)、在每個資源的配置信息結(jié)構(gòu)中設(shè)置該資源的類型resourceConfigArray [i]. resourceType, i 的取值范圍是 0 NUM_0F_RES0URCES_1 ;(6)、如果某個資源屬于鏈接資源類型(LINKED),還需要在資源配置信息結(jié)構(gòu)中明
resourceConfigArray [i]. IinkedResource0B.算法的具體處理過程(1)、將每個資源的配置信息結(jié)構(gòu)中的天花板優(yōu)先級resourceConfigArray[i].
13ceilingPrority設(shè)置為系統(tǒng)最小的優(yōu)先級(假定為0,數(shù)字越小優(yōu)先級越低);(2)、計算出在沒有鏈接情況下的各個資源的天花板優(yōu)先級(即共享該資源的任 務(wù)集合的最高優(yōu)先級)。具體方法遍歷任務(wù)的配置信息結(jié)構(gòu)數(shù)組,對于其中的每個任務(wù)(2. 1)、獲取該任務(wù)所使用的資源列表 taskConfigArray[i]. sharedResource ;O. 2)、對于列表中的每個資源,查詢該資源的配置信息結(jié)構(gòu),如果該資源當(dāng)前 的天花板優(yōu)先級(resourceConfigArray[j]. ceilingPrority)低于當(dāng)前任務(wù)的優(yōu)先級 (taskConf igArray [ i ]. stat i cl^riori ty),則修改資源的天花板優(yōu)先級為任務(wù)的優(yōu)先級 (resourceConfigArray[j]. ceilingPrority = taskConfigArray[i]. staticPriority);(3)、將鏈接關(guān)系考慮進去進行調(diào)整,方法遍歷資源的配置信息結(jié)構(gòu)數(shù)組,對于其 中的每個資源(3. 1)、如果該資源類型是鏈接資源,則獲取被鏈接的資源的編號 resourceConfigArray[i], linkedResource,并進入步驟(3.2);如果不是鏈接資源,則遍 歷下一個數(shù)組元素,繼續(xù)本步驟的處理;(3.2)、以此資源的編號(resourceConfigArray[i]_ linkedResource)查 詢被鏈接資源的配置信息結(jié)構(gòu),如果其優(yōu)先級低于鏈接到它的資源的優(yōu)先級(即re sourceConf igArray[resourceConf igArray[i]. 1inkedResource]. cei1ingPrority < resourceConfigArray[i]. ceilingPrority),則調(diào)整被鏈接資源的優(yōu)先級為鏈接到它 的資源的優(yōu)先級(resourceConf igArray [resourceConf igArray [i]. linkedResource]. ceilingPrority = resourceConfigArray [i]. ceilingPrority);(3. 3)、如果第(3. 2)步有調(diào)整優(yōu)先級,則反復(fù)執(zhí)行(3. 1)、(3. 2)繼續(xù)查詢被鏈接 資源,直到資源類型不是鏈接資源、或者沒有新的優(yōu)先級調(diào)整為止;(3. 4)、如果第(3. 2)步?jīng)]有調(diào)整優(yōu)先級,則遍歷資源配置信息結(jié)構(gòu)數(shù)組的下一個 元素,回到步驟(3. 1)。完成上述算法后,在每個資源的配置信息結(jié)構(gòu)中的天花板優(yōu)先級ceilingPrority 元素的值就是該資源最終得到的天花板優(yōu)先級了。3、各級資源的操作在本實施例中,對各級資源的操作2個API函數(shù)來完成對標(biāo)準資源、中斷資源、調(diào) 度器資源和鏈接資源的獲取和釋放操作。3. 1 獲取資源的 API 函數(shù) GetResource該函數(shù)以資源ID resourceld為輸入?yún)?shù),告訴操作系統(tǒng)需要獲取的是的哪一個 資源。該函數(shù)的工作原理(1)、如果要獲取的是調(diào)度器資源檢查調(diào)度器資源是否已經(jīng)被使用,如果未被使 用則成功獲得調(diào)度器資源并返回;如果調(diào)度器資源已被使用則返回失??;(2)、對輸入資源ID resourceld進行檢查i、如果該參數(shù)所指定的資源已被使用,即資源控制塊中的i如sed的值為1,則返
回錯誤ii、如果當(dāng)前是在中斷處理程序中獲取非中斷資源,則返回錯誤;iii、如果要獲取的是標(biāo)準資源或鏈接資源 如果是在中斷服務(wù)例程中獲取該資源,則返回錯誤;
如果資源的天花板優(yōu)先級(即資源配置信息結(jié)構(gòu)中的ceilingPriority)小于 調(diào)用任務(wù)原始靜態(tài)配置的優(yōu)先級(即任務(wù)配置信息結(jié)構(gòu)中的staticl^iority),返回錯誤; 如果在這之前調(diào)度器資源已經(jīng)被使用,返回錯誤。(3)、獲取資源的具體操作i、如果要獲取的是中斷資源 從硬件的中斷控制器中獲取系統(tǒng)當(dāng)前的中斷掩碼值并將其保存到resourceld 所指定的資源控制塊的savedlsrMask元素中; 將中斷控制器中的中斷掩碼值設(shè)置為該中斷資源的天花板優(yōu)先級 ceilingPriority 的值; 將資源的狀態(tài)設(shè)置為已使用的,即設(shè)置i如sed元素的值為1 ; 將該資源的控制塊掛接到系統(tǒng)的中斷資源鏈表,如圖8所示的頭部;ii、如果要獲取的是標(biāo)準資源或鏈接資源 將資源的狀態(tài)設(shè)置為已使用的,即設(shè)置i如sed元素的值為1 ; 將該資源的控制塊掛接到調(diào)用該函數(shù)的任務(wù)的資源鏈表的頭部; 如果調(diào)用任務(wù)的當(dāng)前優(yōu)先級,即任務(wù)控制塊中的curPriority低于資源的天花 板優(yōu)先級,即資源控制塊中的ceilingPriority,則將調(diào)用任務(wù)的當(dāng)前優(yōu)先級調(diào)整至該資源 的天花板優(yōu)先級; 將資源控制塊中的當(dāng)前優(yōu)先級currentPriority設(shè)置為調(diào)用任務(wù)的當(dāng)前優(yōu)先 級的值。3. 2、釋放資源的 API 函數(shù) ReleaseResource該函數(shù)以資源ID resourceld為輸入?yún)?shù),告訴操作系統(tǒng)需要釋放的是系統(tǒng)中的 哪一個資源。該函數(shù)的工作原理(1)、如果要釋放的是調(diào)度器資源檢查調(diào)度器資源是否已經(jīng)被使用,如果未被使 用則返回錯誤;如果調(diào)度器資源已被使用則釋放它,并進行任務(wù)調(diào)度;(2)、對輸入資源 ID resourceld 檢查i、如果資源ID resourceld所指定的資源未被使用,即資源控制塊中的ished的 值為0,返回錯誤;ii、如果是在中斷服務(wù)例程中釋放非中斷類型的資源,則返回錯誤;iii、如果要釋放的是中斷資源 如果該資源不是中斷資源鏈表頭部的那個資源,則返回錯誤,因為資源的獲取 和釋放隊列是先進后出的隊列;iv、如果要釋放的是標(biāo)準資源或鏈接資源 如果要釋放的資源不是任務(wù)資源鏈表的頭節(jié)點,即未按照正確的順序釋放資 源,返回錯誤; 如果在這之前調(diào)度器資源已經(jīng)被使用,返回錯誤; 如果是在中斷服務(wù)例程中釋放該資源,返回錯誤; 如果資源的天花板優(yōu)先級,即資源配置信息結(jié)構(gòu)中的天花板優(yōu)先級 ceilingPriority小于調(diào)用任務(wù)靜態(tài)配置的原始優(yōu)先級,即任務(wù)配置信息結(jié)構(gòu)中的任務(wù)靜 態(tài)配置的原始優(yōu)先級staticl^riority,返回錯誤。
15
(3)、釋放資源的具體操作i、如果要釋放的是中斷資源 清除該資源控制塊中的已使用標(biāo)志,即將ii^sed設(shè)置為0 ; 調(diào)整系統(tǒng)的中斷資源鏈表取下頭節(jié)點,下一個中斷資源控制塊成為鏈表中的 頭節(jié)點; 恢復(fù)之前在獲取該中斷資源時所保存的中斷掩碼值; 檢查系統(tǒng)的中斷資源鏈表,如果已釋放完所有的中斷資源,操作系統(tǒng)就進行任 務(wù)調(diào)度。ii、如果要釋放的是標(biāo)準資源或鏈接資源 清除該資源控制塊中的已使用標(biāo)志,即將ii^sed設(shè)置為0 ; 調(diào)整調(diào)用任務(wù)的資源鏈表取下頭節(jié)點,下一個資源控制塊成為鏈表中的頭節(jié)點。 如果調(diào)用任務(wù)的資源鏈表上還有其他資源控制塊,則調(diào)整該任務(wù)的當(dāng)前優(yōu)先 級,即任務(wù)控制塊中的當(dāng)前優(yōu)先級curPriority為資源鏈表頭部那個資源的當(dāng)前優(yōu)先級, 即資源控制塊中的當(dāng)前優(yōu)先級currentPriority,然后執(zhí)行操作系統(tǒng)的調(diào)度程序進行任務(wù)
調(diào)度; 如果調(diào)用任務(wù)已不再擁有任何資源,即它的資源鏈表中已沒有資源控制塊,則 進行如下的判斷和處理■如果該任務(wù)使用了內(nèi)部資源,并且任務(wù)的當(dāng)前優(yōu)先級,即任務(wù)控制塊中的當(dāng)前 優(yōu)先級curPriority大于其內(nèi)部資源的優(yōu)先級即任務(wù)配置信息結(jié)構(gòu)中的內(nèi)部資源優(yōu)先級 inResPriority,則調(diào)整任務(wù)當(dāng)前優(yōu)先級為內(nèi)部資源的優(yōu)先級,然后進行任務(wù)調(diào)度;■如果該任務(wù)未使用內(nèi)部資源,并且任務(wù)的當(dāng)前優(yōu)先級,即任務(wù)控制塊中的當(dāng)前 優(yōu)先級curPriority不等于其靜態(tài)配置的原始優(yōu)先級,即任務(wù)配置信息結(jié)構(gòu)中的原始優(yōu)先 級staticl^iority,則調(diào)整任務(wù)的當(dāng)前優(yōu)先級到原始優(yōu)先級的高度,然后進行任務(wù)調(diào)度。3. 3其他與資源管理相關(guān)的處理在本實施例中,除上述2個API函數(shù)外,在操作系統(tǒng)的功能代碼中還要進行以下處理。(1)、與內(nèi)部資源有關(guān)的處理 發(fā)生任務(wù)切換時,新切換到運行狀態(tài)的任務(wù),不管該任務(wù)是第一次運行還是恢 復(fù)以前的運行過程,會自動獲取內(nèi)部資源; 任務(wù)在終止運行時,如果它還擁有一個內(nèi)部資源,則它需要釋放該內(nèi)部資源,其 優(yōu)先級,即任務(wù)控制塊中的curPriority會還原到靜態(tài)配置的原始優(yōu)先級,即任務(wù)配置信 息結(jié)構(gòu)中的staticPriority。(2)、操作系統(tǒng)在進行如下操作時進行與資源相關(guān)的檢查工作 任務(wù)在終止運行時,如果還有資源沒有釋放,即任務(wù)控制塊中的資源鏈表上還 存在資源控制塊,則返回錯誤; 操作系統(tǒng)調(diào)度程序運行時,檢查是否調(diào)度器資源已被使用,如果已被使用,則不 進行調(diào)度;另外還要檢查系統(tǒng)的中斷資源鏈表上是否有中斷資源控制塊存在,如果有,也不 進行調(diào)度。
實例1下面的實例中,一共有5個任務(wù),其任務(wù)配置信息結(jié)構(gòu)數(shù)組的內(nèi)容如表3所示表3為任務(wù)配置信息結(jié)構(gòu)數(shù)組taskConfigArray[NUM_0F_TASKS](NUM_0F_TASKS = 5)
權(quán)利要求
1.一種嵌入式實時操作系統(tǒng)中多級資源管理的實現(xiàn)方法,其特征在于,包括以下步驟(1)、相關(guān)數(shù)據(jù)結(jié)構(gòu)的設(shè)計1.1)、資源控制塊a、采用資源控制塊來對嵌入式實時操作系統(tǒng)中,除內(nèi)部資源外的每個資源進行管理, 資源控制塊包括資源ID,用于對資源進行唯一標(biāo)識, 資源是否已被使用標(biāo)識,用于記錄資源是否已被使用,資源的天花板優(yōu)先級,嵌入式實時操作系統(tǒng)配置時根據(jù)資源優(yōu)先級的確定原則確定, 資源的當(dāng)前優(yōu)先級,用于記錄任務(wù)獲取該資源后所達到的優(yōu)先級,以便在任務(wù)釋放資 源的過程中其優(yōu)先級能夠恢復(fù)到正確的高度,指向下一個資源塊的指針,用于將獲取的資源鏈成一個資源鏈表,新獲取的資源會插 入到該鏈表的頭部,釋放資源的時候最近獲取的資源會被最先釋放掉; 如果資源為中斷資源,則其資源控制塊還包括中斷掩碼,用于處理中斷資源時,記錄占用該資源前的中斷掩碼,以便中斷資源釋放 時,恢復(fù)中斷前的操作;b、資源鏈表對于標(biāo)準資源和鏈接資源的資源控制塊,根據(jù)任務(wù)獲取它們的先后順序鏈接成資源鏈 表,并鏈接到該任務(wù)的任務(wù)控制塊上;對于中斷資源的資源控制塊,根據(jù)獲取它們的先后順序鏈接成一個全局的中斷資源鏈表;對于調(diào)度器資源的資源控制塊,其為獨立的資源控制塊,沒有掛在任何一個資源鏈表上;·1.2)、任務(wù)控制塊 任務(wù)控制塊包括任務(wù)ID,用于對任務(wù)進行唯一標(biāo)識;任務(wù)配置信息表指針,用于指向任務(wù)配置信息結(jié)構(gòu)數(shù)組中該任務(wù)的配置信息表; 任務(wù)當(dāng)前優(yōu)先級,用于記錄當(dāng)任務(wù)獲取任何一個資源后的最新的優(yōu)先級; 任務(wù)使用的資源鏈表,用于把任務(wù)當(dāng)前所占用的標(biāo)準資源和鏈接資源按獲取它們的先 后順序鏈接起來,任務(wù)在釋放這些資源的時候則按照先進后出的順序進行;·1.3)、任務(wù)配置信息結(jié)構(gòu)數(shù)組任務(wù)配置信息結(jié)構(gòu)數(shù)組用于記錄任務(wù)靜態(tài)配置的信息,由嵌入式實時操作系統(tǒng)中所有 任務(wù)的配置信息表組成,這些信息在系統(tǒng)運行過程中不會發(fā)生改變;任務(wù)配置信息表包括任務(wù)ID號、任務(wù)靜態(tài)配置的原始優(yōu)先級、任務(wù)所使用的資源列 表以及內(nèi)部資源優(yōu)先級; O)、各級資源的操作·2.1)、獲取資源以資源ID為輸入?yún)?shù),告訴嵌入式操作系統(tǒng)需要獲取的是哪一個資源 a、如果要獲取的是調(diào)度器資源檢查其資源控制塊的是否已被使用標(biāo)識,如果未被使用則成功獲得調(diào)度器資源并返回;如果調(diào)度器資源已被使用則返回失??;b、檢查需要獲取的資源bl、如果其資源控制塊中是否已被使用標(biāo)識為已被使用,則返回錯誤, b2、如果當(dāng)前是在中斷處理程序中獲取非中斷資源,則返回錯誤, b3、如果要獲取的是標(biāo)準資源或鏈接資源 b31、如果是在中斷服務(wù)例程中獲取該資源,則返回錯誤,b32、如果其資源控制塊中的天花板優(yōu)先級小于調(diào)用該資源的任務(wù)的任務(wù)控制塊中的 任務(wù)靜態(tài)配置的原始優(yōu)先級,返回錯誤,b33、如果在這之前調(diào)度器資源已經(jīng)被使用,返回錯誤;c、獲取資源的操作Cl、如果要獲取的是中斷資源ell、從硬件的中斷控制器中獲取當(dāng)前的中斷掩碼值并將其保存到該中斷資源的資源 控制塊的中斷掩碼元素中;cl2、將中斷控制器中的中斷掩碼值設(shè)置為該中斷資源的控制塊中的天花板優(yōu)先級的值;cl3、將該中斷資源的控制塊是否已被使用過標(biāo)識設(shè)置為已被使用; cl4、將該中斷資源的控制塊掛接到中斷資源鏈表的頭部; c2、如果要獲取的是標(biāo)準資源或鏈接資源 c21、將該資源的控制塊是否已被使用過標(biāo)識設(shè)置為已被使用; c22、將該資源的控制塊掛接到獲取該資源的任務(wù)控制塊的資源鏈表的頭部; c23、如果獲取該資源的任務(wù)的控制塊中的當(dāng)前優(yōu)先級低于該資源的控制塊中的天花 板優(yōu)先級,則將獲取該資源的任務(wù)的控制塊中的當(dāng)前優(yōu)先級調(diào)整至該資源的天花板優(yōu)先 級;c24、將該資源的控制塊中的當(dāng)前優(yōu)先級設(shè)置為獲取該資源的任務(wù)的控制塊重的當(dāng)前 優(yōu)先級的值;·2. 2)、釋放資源以資源ID為輸入?yún)?shù),告訴嵌入式操作系統(tǒng)需要獲取的是哪一個資源a、如果要釋放的是調(diào)度器資源檢查其資源控制塊的是否已被使用標(biāo)識,如果未被使 用則返回錯誤;如果調(diào)度器資源已被使用則釋放它,并進行任務(wù)調(diào)度;b、檢查需要釋放的資源bl、如果其資源控制塊中是否已被使用標(biāo)識為未已被使用,返回錯誤; b2、如果是在中斷服務(wù)例程中釋放非中斷類型的資源,則返回錯誤; b3、如果要釋放的是中斷資源b31、如果該資源不是中斷資源鏈表頭部的那個資源,則返回錯誤;b4、如果要釋放的是標(biāo)準資源或鏈接資源b41、如果要釋放的資源不是任務(wù)資源鏈表的頭節(jié)點,返回錯誤;b42、如果在這之前調(diào)度器資源已經(jīng)被使用,返回錯誤;b43、如果是在中斷服務(wù)例程中釋放該資源,返回錯誤;b44、如果其資源控制塊中的天花板優(yōu)先級小于調(diào)用該資源的任務(wù)的任務(wù)控制塊中的任務(wù)靜態(tài)配置的原始優(yōu)先級,返回錯誤; C、釋放資源的操作 Cl、如果要釋放的是中斷資源ell、將該中斷資源的資源控制塊中是否已被使用標(biāo)識的置為未被使用; cl2、調(diào)整中斷資源鏈表取下頭節(jié)點,下一個中斷資源控制塊成為鏈表中的頭節(jié)點; cl3、根據(jù)該中斷資源的資源控制塊中保存的中斷掩碼,恢復(fù)之前在獲取該中斷資源時 所保存的中斷掩碼值;cl4、檢查中斷資源鏈表,如果已釋放完所有的中斷資源,操作系統(tǒng)就進行任務(wù)調(diào)度; c2、如果要釋放的是標(biāo)準資源或鏈接資源 c21、將該資源的資源控制塊中是否已被使用標(biāo)識的置為未被使用; c22、調(diào)整獲取該資源任務(wù)的資源鏈表取下頭節(jié)點,下一個資源控制塊成為鏈表中的 頭節(jié)點;c23、如果獲取該資源任務(wù)的資源鏈表上還有其他資源控制塊,則調(diào)整該任務(wù)的控制塊 中的當(dāng)前優(yōu)先級為資源鏈表頭部那個資源的資源控制塊中的當(dāng)前優(yōu)先級,然后執(zhí)行調(diào)度程 序進行任務(wù)調(diào)度;c24、如果調(diào)用任務(wù)已不再擁有任何資源則進行如下的判斷和處理 d41、如果該任務(wù)使用了內(nèi)部資源,并且任務(wù)的控制塊中當(dāng)前優(yōu)先級大于內(nèi)部資源的 優(yōu)先級,則調(diào)整任務(wù)當(dāng)前優(yōu)先級為內(nèi)部資源的優(yōu)先級,然后進行任務(wù)調(diào)度;d42、如果該任務(wù)未使用內(nèi)部資源,并且任務(wù)的控制塊中當(dāng)前優(yōu)先級不等于其靜態(tài)配 置的原始優(yōu)先級,則調(diào)整任務(wù)的當(dāng)前優(yōu)先級到原始優(yōu)先級的高度,然后進行任務(wù)調(diào)度。
2.根據(jù)嵌入式實時操作系統(tǒng)中多級資源的管理方法,其特征在于,還包括以下步驟 (1)、與內(nèi)部資源有關(guān)的處理a、發(fā)生任務(wù)切換時,新切換到運行狀態(tài)的任務(wù),自動獲取內(nèi)部資源;b、任務(wù)在終止運行時,如果它還擁有一個內(nèi)部資源,則它需要釋放該內(nèi)部資源,任務(wù)控 制塊中的優(yōu)先級還原到靜態(tài)配置的原始優(yōu)先級;O)、在進行如下操作時進行與資源相關(guān)的檢查工作a、任務(wù)在終止運行時,如果還有資源沒有釋放,則返回錯誤;b、操作系統(tǒng)調(diào)度程序運行時,檢查是否調(diào)度器資源已被使用,如果已被使用,則不進行 調(diào)度;另外還要檢查系統(tǒng)的中斷資源鏈表上是否有中斷資源控制塊存在,如果有,也不進行 調(diào)度。
全文摘要
本發(fā)明公開了一種嵌入式實時操作系統(tǒng)中多級資源的管理方法。為了符合OSEK/VDX規(guī)范的、滿足嵌入式實時操作系統(tǒng)對于多級資源管理的要求,本發(fā)明針對標(biāo)準資源、鏈接資源、中斷資源以及調(diào)度器資源設(shè)計了資源控制塊,并鏈接到不同的位置,然后,按照不同資源的優(yōu)先級高低關(guān)系,利用資源控制塊,實現(xiàn)對多級資源的管理。
文檔編號G06F9/50GK102096605SQ20111003956
公開日2011年6月15日 申請日期2011年2月17日 優(yōu)先權(quán)日2011年2月17日
發(fā)明者李允 , 趙煥宇, 陳麗蓉 申請人:成電汽車電子產(chǎn)業(yè)園(昆山)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
龙海市| 淮南市| 高平市| 通海县| 池州市| 历史| 寿光市| 连平县| 汉阴县| 红桥区| 麻城市| 高邮市| 邹平县| 汶上县| 将乐县| 万安县| 连江县| 廉江市| 广丰县| 钟祥市| 威海市| 渑池县| 汶上县| 涞源县| 靖宇县| 博罗县| 三门县| 鹿泉市| 进贤县| 涿鹿县| 朝阳区| 康保县| 鹤壁市| 报价| 鄂温| 宁德市| 富川| 寿宁县| 镇平县| 湖北省| 北碚区|