【PPT】嵌入式系統(tǒng)及應用_第1頁
【PPT】嵌入式系統(tǒng)及應用_第2頁
【PPT】嵌入式系統(tǒng)及應用_第3頁
【PPT】嵌入式系統(tǒng)及應用_第4頁
【PPT】嵌入式系統(tǒng)及應用_第5頁
已閱讀5頁,還剩147頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心嵌入式系統(tǒng)及應用嵌入式系統(tǒng)及應用第五章第五章任務管理與調(diào)度任務管理與調(diào)度1電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心主要內(nèi)容主要內(nèi)容 任務簡介任務簡介 任務控制塊任務控制塊 任務管理任務管理 任務調(diào)度任務調(diào)度 優(yōu)先級反轉(zhuǎn)優(yōu)先級反轉(zhuǎn)2電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心第一節(jié)第一節(jié)任任 務務 任務的定義及其主要特性任務的定義及其主要特性任務的內(nèi)容任務的內(nèi)容任務的分類任務的分類任務參數(shù)任務參數(shù)3電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心 在嵌入式實時系統(tǒng)中任務是操作系統(tǒng)內(nèi)核調(diào)度在

2、嵌入式實時系統(tǒng)中任務是操作系統(tǒng)內(nèi)核調(diào)度的基本單位。的基本單位。 任務主要包含以下內(nèi)容:任務主要包含以下內(nèi)容: 代碼代碼:一段可執(zhí)行的程序一段可執(zhí)行的程序 數(shù)據(jù)數(shù)據(jù):程序所需要的相關數(shù)據(jù)(變量、工作:程序所需要的相關數(shù)據(jù)(變量、工作空間、緩沖區(qū)等)空間、緩沖區(qū)等) 堆棧堆棧 程序執(zhí)行的上下文環(huán)境程序執(zhí)行的上下文環(huán)境4電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心 void yourtask (void *pdata) for (;) /* 用用戶戶代代碼碼; 調(diào)調(diào)用用uc/os-ii的某些功能函的某些功能函數(shù)數(shù)*/: osflagpend(); osmboxpend(); osmu

3、texpend(); osqpend(); ossempend(); ostaskdel(os_prio_self); ostasksuspend(os_prio_self); ostimedly(); ostimedlyhmsm(); /* 用用戶戶代代碼碼 */ 任務的代碼通常是一個無限循環(huán),如下面代碼所示:任務的代碼通常是一個無限循環(huán),如下面代碼所示: 任務代碼的定義需注意兩點:任務代碼的定義需注意兩點:1.1.返回參數(shù)必須定義成返回參數(shù)必須定義成voidvoid。2.2.當任務開始執(zhí)行時,可傳遞一個任何類型的參數(shù)。當任務開始執(zhí)行時,可傳遞一個任何類型的參數(shù)。( (參數(shù)類型是參數(shù)類型是v

4、oid void 指針指針) )5電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心 void yourtask (void *pdata) /* 用用戶戶代代碼碼; ostaskdel(os_prio_self); 當任務完成后,任務可以自我刪除,如下面代當任務完成后,任務可以自我刪除,如下面代碼。碼。需注意:任務代碼不是真的刪除了,只是內(nèi)核簡需注意:任務代碼不是真的刪除了,只是內(nèi)核簡單地不會再這個任務,這個任務的代碼也不會再單地不會再這個任務,這個任務的代碼也不會再運行了。運行了。6電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心int main(void) / 初始

5、化初始化 ucos內(nèi)內(nèi)核核. osinit(); / 在在開開始多任始多任務務之前必之前必須須先建立一先建立一個個任任務務 ostaskcreate(testtask1, (void *) 11, &testtaskstk1task_stk_size, 11); /第第1個參數(shù)個參數(shù)是指向是指向該該任任務運務運行代行代碼碼的指的指針針,第,第2個參數(shù)個參數(shù)是一是一個個指向任指向任務務初始化初始化數(shù)數(shù)據(jù)的指據(jù)的指針針, /第第3個參數(shù)個參數(shù)是任是任務務的堆的堆棧棧起始地址(高地址向低地址增起始地址(高地址向低地址增長長),), /第第4個參數(shù)個參數(shù)是任是任務務的的優(yōu)優(yōu)先先級級,數(shù)值數(shù)值越

6、小,越小,優(yōu)優(yōu)先先級級越高。越高。 / 開開始多任始多任務務,控制,控制權權交交給內(nèi)給內(nèi)核核 osstart(); void testtask1(void *pdata) printf(%4u: * test task 1 first call *n, ostime); /創(chuàng)創(chuàng)建其他任建其他任務務 ostaskcreate(testtask2, (void *) 22, &testtaskstk2task_stk_size, 22); while (1) printf(%4u: * test task 11 *n, ostime); ostimedly(1); 7電子科技大學嵌入式軟件

7、工程中心電子科技大學嵌入式軟件工程中心void testtask2(void *pdata) while (1) printf(%4u: * test task 22 *n, ostime); ostimedly(1); 注:注:1. 堆堆棧棧大小有上限,大小有上限,對對于于x86處處理器,理器,os_stk變變量量類類型是型是16位位變變量,所以堆量,所以堆棧棧大大小是小是1024b;2. 內(nèi)內(nèi)核允核允許許建立多建立多達達63個個用用戶戶任任務務,必,必須給這須給這些任些任務務分配一分配一個獨個獨一無二的介于一無二的介于0-62的的優(yōu)優(yōu)先先級級。0是最高是最高優(yōu)優(yōu)先先級級。3. osstar

8、t()函函數(shù)并數(shù)并不返回不返回main函函數(shù)數(shù)。8電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務的主要特性任務的主要特性 任務具有以下特性:任務具有以下特性: 動態(tài)性動態(tài)性:任務狀態(tài)是不斷變化的。 一般分為就緒態(tài)、運行態(tài)和等待態(tài)。一般分為就緒態(tài)、運行態(tài)和等待態(tài)。 在多任務系統(tǒng)中,任務的狀態(tài)將隨著系統(tǒng)的需要不斷進在多任務系統(tǒng)中,任務的狀態(tài)將隨著系統(tǒng)的需要不斷進行變化。行變化。 并發(fā)性并發(fā)性(并行性?并行性?): 系統(tǒng)中同時存在多個任務,這些任務在宏觀上是同時運系統(tǒng)中同時存在多個任務,這些任務在宏觀上是同時運行的行的。 異步獨立性異步獨立性: 每個任務各自按相互獨立的不可預知的速

9、度運行,走走每個任務各自按相互獨立的不可預知的速度運行,走走停停停停。 9電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心 任務與程序的區(qū)別:任務與程序的區(qū)別: 任務能真實地體現(xiàn)工作內(nèi)容的任務能真實地體現(xiàn)工作內(nèi)容的并發(fā)性并發(fā)性,而程,而程序不能;序不能; 程序是任務的組成部分程序是任務的組成部分 除程序外,任務還包括數(shù)據(jù)、堆棧及其上下文環(huán)除程序外,任務還包括數(shù)據(jù)、堆棧及其上下文環(huán)境等內(nèi)容;境等內(nèi)容; 程序是靜態(tài)的,任務是動態(tài)的;程序是靜態(tài)的,任務是動態(tài)的; 任務有任務有生命周期生命周期,有誕生、有消亡,是短暫,有誕生、有消亡,是短暫的;而程序是相對長久的;的;而程序是相對長久的;

10、一個程序可對應多個任務,反之亦然;一個程序可對應多個任務,反之亦然; 任務具有創(chuàng)建其他任務的功能,而程序沒有任務具有創(chuàng)建其他任務的功能,而程序沒有。 10電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心采用多任務的好處:采用多任務的好處: 任務的任務的規(guī)模較小規(guī)模較小 每個任務更容易編碼和調(diào)試,其質(zhì)量也更容易得到每個任務更容易編碼和調(diào)試,其質(zhì)量也更容易得到保證保證 不少不少應用本身應用本身就是由多個任務構(gòu)成的就是由多個任務構(gòu)成的 如一個應用可能需要進行以下任務的處理:計算、如一個應用可能需要進行以下任務的處理:計算、從網(wǎng)絡獲取數(shù)據(jù)和刷新顯示屏幕從網(wǎng)絡獲取數(shù)據(jù)和刷新顯示屏幕 采用多任

11、務的處理方式是應用問題的一個采用多任務的處理方式是應用問題的一個非常自然非常自然的解決方式的解決方式 任務之間具有較高的獨立性,耦合性小任務之間具有較高的獨立性,耦合性小 通過增加新的任務就能方便的通過增加新的任務就能方便的擴充系統(tǒng)功能擴充系統(tǒng)功能 實時性強實時性強 保證緊急事件得到優(yōu)先處理成為可能保證緊急事件得到優(yōu)先處理成為可能11電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務任務1 1任務任務2 2任務任務3 3內(nèi)核內(nèi)核內(nèi)核代碼內(nèi)核代碼內(nèi)核數(shù)據(jù)內(nèi)核數(shù)據(jù)棧棧數(shù)據(jù)數(shù)據(jù)任務任務控制塊控制塊代碼代碼棧棧數(shù)據(jù)數(shù)據(jù)任務任務控制塊控制塊代碼代碼棧棧數(shù)據(jù)數(shù)據(jù)任務任務控制塊控制塊代碼代碼任

12、務任務1 1任務任務2 2任務任務3 312電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心實時系統(tǒng)中任務的分類實時系統(tǒng)中任務的分類 按照到達情況的可預測性,任務可以劃分按照到達情況的可預測性,任務可以劃分為:為: 周期任務周期任務(periodic task) 非周期任務非周期任務 按照重要程度,可分為:按照重要程度,可分為: 關鍵任務關鍵任務(critical task) 非關鍵任務非關鍵任務(noncritical task)13電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心實時系統(tǒng)中任務的分類實時系統(tǒng)中任務的分類 周期任務與非周期任務周期任務與非周期任務 周期

13、任務每隔一個固定的時間間隔就會執(zhí)行周期任務每隔一個固定的時間間隔就會執(zhí)行一次。一次。 舉例:飛行器可能需要每隔舉例:飛行器可能需要每隔100ms獲得一次關獲得一次關于飛行器的速度、高度和姿態(tài)數(shù)據(jù),控制傳感器于飛行器的速度、高度和姿態(tài)數(shù)據(jù),控制傳感器獲取這些數(shù)據(jù)就需要通過周期任務來進行。獲取這些數(shù)據(jù)就需要通過周期任務來進行。 非周期任務執(zhí)行的間隔時間則為不確定的。非周期任務執(zhí)行的間隔時間則為不確定的。 舉例:移動通信設備中的通信任務,該任務只有舉例:移動通信設備中的通信任務,該任務只有在需要進行通信的情況下才會得到執(zhí)行。在需要進行通信的情況下才會得到執(zhí)行。 非周期任務分為:非周期任務分為: sp

14、oradic task:有最小到達間隔時間限制有最小到達間隔時間限制 aperiodic task:沒有到達時間限制沒有到達時間限制14電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心實時系統(tǒng)中任務的分類實時系統(tǒng)中任務的分類 關鍵任務與非關鍵任務關鍵任務與非關鍵任務 關鍵任務:關鍵任務: 為需要得到需要得到及時執(zhí)行及時執(zhí)行的任務,否則將出現(xiàn)災難性的的任務,否則將出現(xiàn)災難性的后果后果 舉例:飛行器中用于處理生命支持系統(tǒng)和穩(wěn)定性控制系統(tǒng)舉例:飛行器中用于處理生命支持系統(tǒng)和穩(wěn)定性控制系統(tǒng)的任務的任務 非關鍵任務:非關鍵任務: 如果沒有得到及時執(zhí)行,則不會產(chǎn)生嚴重后果如果沒有得到及時執(zhí)行,

15、則不會產(chǎn)生嚴重后果 15電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務參數(shù)任務參數(shù) 任務參數(shù):任務參數(shù): 優(yōu)先級(優(yōu)先級(priority) 周期(周期(period) 計算時間(計算時間(computation time) 就緒時間(就緒時間(ready time) 截止時間(截止時間(deadline)16電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務參數(shù)任務參數(shù) 任務的優(yōu)先級任務的優(yōu)先級 表示任務對應工作內(nèi)容在處理上的表示任務對應工作內(nèi)容在處理上的優(yōu)先程度優(yōu)先程度 優(yōu)先級越高,表明任務越需要得到優(yōu)先處理優(yōu)先級越高,表明任務越需要得到優(yōu)先處理 飛行器中處

16、理穩(wěn)定性控制的任務,就需要具有較飛行器中處理穩(wěn)定性控制的任務,就需要具有較高的優(yōu)先級,一旦執(zhí)行條件得到滿足,應及時得高的優(yōu)先級,一旦執(zhí)行條件得到滿足,應及時得到執(zhí)行到執(zhí)行 任務的優(yōu)先級分為任務的優(yōu)先級分為靜態(tài)優(yōu)先級靜態(tài)優(yōu)先級和和動態(tài)優(yōu)先級動態(tài)優(yōu)先級。 靜態(tài)優(yōu)先級:任務的優(yōu)先級被確定后,在系統(tǒng)運靜態(tài)優(yōu)先級:任務的優(yōu)先級被確定后,在系統(tǒng)運行過程中將不再發(fā)生變化;行過程中將不再發(fā)生變化; 動態(tài)優(yōu)先級:系統(tǒng)運行過程中,任務的優(yōu)先級是動態(tài)優(yōu)先級:系統(tǒng)運行過程中,任務的優(yōu)先級是可以動態(tài)變化的??梢詣討B(tài)變化的。 17電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務參數(shù)任務參數(shù) uc/os中可

17、以管理中可以管理64個任務,每個任務必須有個個任務,每個任務必須有個不同的優(yōu)先級。優(yōu)先級的數(shù)值越低,任務的優(yōu)先不同的優(yōu)先級。優(yōu)先級的數(shù)值越低,任務的優(yōu)先級就越高。級就越高。 uc/os總是選擇優(yōu)先級最高的任務執(zhí)總是選擇優(yōu)先級最高的任務執(zhí)行。行。 最低優(yōu)先級最低優(yōu)先級63被系統(tǒng)保留,用戶不能使用。被系統(tǒng)保留,用戶不能使用。 在目前的版本中,任務的優(yōu)先級也是與任務在目前的版本中,任務的優(yōu)先級也是與任務id。18電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務參數(shù)任務參數(shù) 周期周期 周期任務所具有的參數(shù),表示任務周期性執(zhí)行的間隔時間 任務的計算時間任務的計算時間 任務在特定硬件環(huán)境下

18、特定硬件環(huán)境下被完整執(zhí)行所需要的時間,也被稱為是任務的執(zhí)行時間任務的執(zhí)行時間(execution time)。 由于任務每次執(zhí)行的軟件環(huán)境的差異性,導致任務在各次具體執(zhí)行過程中的計算時間各有不同。 通常用最壞情況下的執(zhí)行時間最壞情況下的執(zhí)行時間(worst case time)或是需要的最長執(zhí)行時間來表示,也可用統(tǒng)計時間統(tǒng)計時間(statistical time)來表示。 19電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務參數(shù)任務參數(shù) 任務的就緒時間任務的就緒時間任務具備了在處理器上被執(zhí)行所需要條件時的時間。 任務的截止時間任務的截止時間 意味著任務需要在該時間到來之前被執(zhí)行

19、完成。 截止時間可以通過絕對截止時間絕對截止時間(absolute deadline)和相對截止時間相對截止時間(relative time)兩種方式來表示 相對截止時間為任務的絕對截止時間減去任務的就緒時間。 截止時間可以分為強截止時間強截止時間(hard deadline)和弱截弱截止時間止時間(soft deadline)兩種情況: 具有強截止時間的任務即為關鍵任務關鍵任務,如果截止時間不能得到滿足,就會出現(xiàn)嚴重的后果。 擁有關鍵任務的實時系統(tǒng)又被稱為強實時強實時(hard real-time)系統(tǒng),否則稱為弱實時弱實時(soft real-time)系統(tǒng)。 20電子科技大學嵌入式軟件工

20、程中心電子科技大學嵌入式軟件工程中心第二節(jié)第二節(jié)任務控制塊任務控制塊任務狀態(tài)與變遷任務狀態(tài)與變遷空閑任務空閑任務任務控制塊任務控制塊任務切換任務切換任務隊列任務隊列優(yōu)先級位圖算法優(yōu)先級位圖算法21電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務狀態(tài)與變遷任務狀態(tài)與變遷 任務擁有的任務擁有的資源情況資源情況是不斷變化的,導致是不斷變化的,導致任務狀態(tài)任務狀態(tài)也表現(xiàn)出不斷變化的特性。也表現(xiàn)出不斷變化的特性。 不同的實時內(nèi)核實現(xiàn)方式對任務狀態(tài)的定不同的實時內(nèi)核實現(xiàn)方式對任務狀態(tài)的定義不盡相同,但是都可以概括為三種基本義不盡相同,但是都可以概括為三種基本的狀態(tài):的狀態(tài): 等待等待(wa

21、iting):任務在等待某個事件的發(fā)):任務在等待某個事件的發(fā)生;生; 就緒就緒(ready):): 任務等待獲得處理器資源;任務等待獲得處理器資源; 執(zhí)行執(zhí)行(running):任務獲得處理器資源,所):任務獲得處理器資源,所包含的代碼內(nèi)容正在被執(zhí)行包含的代碼內(nèi)容正在被執(zhí)行。 22電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務狀態(tài)與變遷任務狀態(tài)與變遷 在單處理器系統(tǒng)中:在單處理器系統(tǒng)中: 任何時候都任何時候都只有一個任務在只有一個任務在cpucpu中執(zhí)行中執(zhí)行 如果沒有任何事情可做,就運行如果沒有任何事情可做,就運行空閑任務空閑任務執(zhí)行空執(zhí)行空操作操作 任何一個可以執(zhí)行的任

22、務都必須處于任何一個可以執(zhí)行的任務都必須處于就緒狀態(tài)就緒狀態(tài) 調(diào)度程序從任務的調(diào)度程序從任務的就緒隊列就緒隊列中選擇下一個需要執(zhí)中選擇下一個需要執(zhí)行的任務。行的任務。 處于就緒狀態(tài)的任務擁有除處于就緒狀態(tài)的任務擁有除cpu以外的其他所有以外的其他所有需要的資源。需要的資源。 任務還可能處于任務還可能處于等待狀態(tài)等待狀態(tài) 如果任務在需要等待如果任務在需要等待i/o設備或其他任務提供的數(shù)設備或其他任務提供的數(shù)據(jù),而數(shù)據(jù)又還沒有到達該任務的情況下,就處據(jù),而數(shù)據(jù)又還沒有到達該任務的情況下,就處于等待狀態(tài)于等待狀態(tài)23電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務狀態(tài)與變遷任務狀態(tài)與

23、變遷 任務會在不同的狀態(tài)之間進行轉(zhuǎn)換,即任務會在不同的狀態(tài)之間進行轉(zhuǎn)換,即任務狀態(tài)的變遷任務狀態(tài)的變遷就緒態(tài)就緒態(tài)運行態(tài)運行態(tài)等待態(tài)等待態(tài)獲得獲得cpucpu被高優(yōu)先級被高優(yōu)先級任務搶占或任務搶占或超時超時獲得資源獲得資源需要需要資源資源24電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務任務1 1任務任務2 2任務任務3 3調(diào)度調(diào)度程序程序0 05 5101015152020252530303535404045455050運行運行等待等待就緒就緒三個任務進行狀態(tài)轉(zhuǎn)換的過程三個任務進行狀態(tài)轉(zhuǎn)換的過程 包含三個任務和一個調(diào)度程序。調(diào)度程序用來確定下一個包含三個任務和一個調(diào)度程序。

24、調(diào)度程序用來確定下一個需要投入運行的任務,因此需要投入運行的任務,因此調(diào)度程序本身也需要占用一定調(diào)度程序本身也需要占用一定的處理時間的處理時間。 25電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心osmboxpost()osqpost()osqpostfront()ossempost()ostaskresume()ostimedlyresume()ostimetick()osmboxpend()osqpend()ossempend()ostasksuspend()ostimedly()ostimedlyhmsm()interruptosintexit()osstart()osin

25、texit()os_task_sw()ostaskdel()ostaskcreate()ostaskcreateext()ostaskdel()task is preemptedostaskdel()等待狀態(tài)等待狀態(tài)睡眠態(tài)睡眠態(tài)就緒態(tài)就緒態(tài)運行態(tài)運行態(tài)中斷服中斷服務態(tài)務態(tài)26電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心uc/os任務狀態(tài)任務狀態(tài) 睡眠態(tài):指任務駐留在程序空間睡眠態(tài):指任務駐留在程序空間(rom(rom或或ram),ram),還沒還沒有交給有交給ucosucos來管理。把任務交給來管理。把任務交給ucosucos來管理,是來管理,是通過調(diào)用下述通過調(diào)用下述2 2個

26、函數(shù)之一:個函數(shù)之一:ostaskcreate()ostaskcreate()和和ostaskcreateext()ostaskcreateext()來實現(xiàn)的。這些調(diào)用告訴內(nèi)核,來實現(xiàn)的。這些調(diào)用告訴內(nèi)核,任務程序的起始地址在哪里,優(yōu)先級是多少,任任務程序的起始地址在哪里,優(yōu)先級是多少,任務要使用多少棧空間等。務要使用多少??臻g等。27電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心uc/os任務狀態(tài)任務狀態(tài) 就緒態(tài):任務一旦建立,就進入了就緒態(tài)。任務就緒態(tài):任務一旦建立,就進入了就緒態(tài)。任務的建立可以是在多任務運行開始之前,也可以動的建立可以是在多任務運行開始之前,也可以動態(tài)地由

27、一個運行著的任務建立。如果多任務已經(jīng)態(tài)地由一個運行著的任務建立。如果多任務已經(jīng)啟動,且一個任務是被另一個任務建立的,而新啟動,且一個任務是被另一個任務建立的,而新建立的任務的優(yōu)先級高于建立它的任務的優(yōu)先級,建立的任務的優(yōu)先級高于建立它的任務的優(yōu)先級,則剛剛被建立的新任務將立即獲得則剛剛被建立的新任務將立即獲得cpucpu的使用權。的使用權。 一個任務可以通過調(diào)用一個任務可以通過調(diào)用ostaskdel()ostaskdel()返回到睡眠態(tài),返回到睡眠態(tài),或通過調(diào)用該函數(shù)讓另一個任務進入睡眠態(tài)。或通過調(diào)用該函數(shù)讓另一個任務進入睡眠態(tài)。28電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心

28、uc/os任務狀態(tài)任務狀態(tài) 運行態(tài):調(diào)用運行態(tài):調(diào)用osstartosstart()函數(shù)可以啟動多任務。()函數(shù)可以啟動多任務。osstartosstart()函數(shù)只能在啟動時調(diào)用一次,該函數(shù)()函數(shù)只能在啟動時調(diào)用一次,該函數(shù)選擇用戶初始化代碼中已經(jīng)建立的、進入就緒態(tài)選擇用戶初始化代碼中已經(jīng)建立的、進入就緒態(tài)的優(yōu)先級最高的任務來進行執(zhí)行。的優(yōu)先級最高的任務來進行執(zhí)行。 等待態(tài):從運行態(tài)到等待態(tài)有兩種可能的原因等待態(tài):從運行態(tài)到等待態(tài)有兩種可能的原因: :1.1.正在運行的任務調(diào)用正在運行的任務調(diào)用ostimedlyostimedly()()函數(shù)將自身延函數(shù)將自身延遲一段時間,則該任務進入等待

29、態(tài)。遲一段時間,則該任務進入等待態(tài)。2.2.正在執(zhí)行的任務需要等待某一事件的發(fā)生,如信正在執(zhí)行的任務需要等待某一事件的發(fā)生,如信號量和消息,若該事件未發(fā)生或未獲得,該任務進號量和消息,若該事件未發(fā)生或未獲得,該任務進入等待態(tài)。入等待態(tài)。29電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心uc/os任務狀態(tài)任務狀態(tài) 中斷服務態(tài):被中斷了的任務進入中斷服務態(tài)。中斷服務態(tài):被中斷了的任務進入中斷服務態(tài)。響應中斷時,正在執(zhí)行的任務被掛起,中斷服務響應中斷時,正在執(zhí)行的任務被掛起,中斷服務子程序控制了子程序控制了cpucpu使用權。中斷服務子程序可能會使用權。中斷服務子程序可能會使一個或多個

30、任務進入就緒態(tài)。在中斷服務子程使一個或多個任務進入就緒態(tài)。在中斷服務子程序返回之前,內(nèi)核要判定,被中斷的任務是否還序返回之前,內(nèi)核要判定,被中斷的任務是否還是就緒態(tài)任務中優(yōu)先級最高的。若已經(jīng)不是,則是就緒態(tài)任務中優(yōu)先級最高的。若已經(jīng)不是,則新進入就緒態(tài)的這個優(yōu)先級更高的任務將得以運新進入就緒態(tài)的這個優(yōu)先級更高的任務將得以運行,否則,原來被中斷了的任務將繼續(xù)運行。行,否則,原來被中斷了的任務將繼續(xù)運行。30電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務控制塊任務控制塊 內(nèi)核對任務管理是通過對內(nèi)核對任務管理是通過對任務控制塊任務控制塊(task task control bloc

31、kcontrol block,tcbtcb)的操作來實現(xiàn)的。)的操作來實現(xiàn)的。 任務控制塊任務控制塊是包含任務相關信息的數(shù)據(jù)結(jié)構(gòu)是包含任務相關信息的數(shù)據(jù)結(jié)構(gòu) 包含了任務執(zhí)行過程中所需要的所有信息。包含了任務執(zhí)行過程中所需要的所有信息。 任務控制塊大都包括以下信息:任務控制塊大都包括以下信息: 任務的名字任務的名字 任務執(zhí)行的起始地址任務執(zhí)行的起始地址 任務的優(yōu)先級任務的優(yōu)先級 任務的狀態(tài)任務的狀態(tài) 任務的硬件上下文(堆棧指針、任務的硬件上下文(堆棧指針、pc和寄存器等和寄存器等) 任務的隊列指針等內(nèi)容任務的隊列指針等內(nèi)容 31電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務控制

32、塊任務控制塊 一旦任務建立,一個任務控制塊一旦任務建立,一個任務控制塊os_tcbos_tcb就被賦就被賦值,能夠保存任務被其他任務搶占時的狀態(tài)。值,能夠保存任務被其他任務搶占時的狀態(tài)。當任務重新得到當任務重新得到cpucpu的使用權后,任務控制塊的使用權后,任務控制塊能夠確保任務從當時被中斷的那一點絲毫不差能夠確保任務從當時被中斷的那一點絲毫不差的繼續(xù)執(zhí)行。的繼續(xù)執(zhí)行。 下面是下面是uc/osuc/os的的os_tcbos_tcb源代碼。源代碼。32電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心typedef struct os_tcb os_stk *ostcbstkptr;

33、 /*指向指向當當前任前任務務堆堆棧棧頂棧棧頂?shù)闹傅闹羔樶?,每每個個任任務務的堆的堆棧棧容量可以是任意的容量可以是任意的*/#if os_task_create_ext_en 0 /*允允許許建立任建立任務務函函數(shù)數(shù)的的擴擴展展*/ void *ostcbextptr; /* 指向用指向用戶戶自定自定義義的任的任務務控制控制塊擴塊擴展展 */ os_stk *ostcbstkbottom; /* 棧棧底指底指針針*/ int32u ostcbstksize; /* 棧??湛臻g間,以,以棧棧元元為單為單位位 */ int16u ostcbopt; /* 把把“ “選擇項選擇項” ”傳給傳給函函數(shù)

34、數(shù) ostaskcreateext()。目前支持三目前支持三個選擇項個選擇項:os_task_opt_chk用于告知用于告知內(nèi)內(nèi)核在任核在任務務建立建立時時允允許許建立任建立任務棧務棧檢驗檢驗,該檢驗該檢驗功能由用功能由用戶戶程序程序?qū)崿F(xiàn)實現(xiàn);os_task_opt_stk_clr表示任表示任務務建立建立時時,任,任務棧務棧要要清清0;os_task_opt_save_fp表示任表示任務務要做浮點要做浮點數(shù)運數(shù)運算。算。 */ int16u ostcbid; /* 保留保留 */#endif struct os_tcb *ostcbnext; struct os_tcb *ostcbprev;

35、 /* 用于任用于任務務控制控制塊雙塊雙向向鏈鏈表的前后表的前后查查找。找。*/33電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心#if (os_q_en0)&(os_max_qs0)|(os_mbox_en0)|(os_sem_en0)|(os_mutex_en0) /* 若不打算使用信若不打算使用信號號量、互斥信量、互斥信號號量、消息量、消息隊隊列、消息列、消息郵郵箱,箱,則對應則對應的的變變量不量不會會在在tcb中出中出現(xiàn)現(xiàn)*/ os_event *ostcbeventptr; /* 指向事件控制指向事件控制塊塊的指的指針針 */#endif#if (os_q_en

36、 0) & (os_max_qs 0) | (os_mbox_en 0) void *ostcbmsg; /* 傳遞給傳遞給任任務務的消息指的消息指針針*/#endif34電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心#if (os_version = 251) & (os_flag_en 0) & (os_max_flags 0)#if os_task_del_en 0 os_flag_node *ostcbflagnode; /* 指向事件指向事件標標志志節(jié)節(jié)點的指點的指針針*/#endif os_flags ostcbflagsrdy; /* 當當任

37、任務務等待事件等待事件標標志志組時組時,是使任,是使任務務進進入就入就緒態(tài)緒態(tài)的事件的事件標標志志*/#endif int16u ostcbdly; /* 任任務務允允許許等待事件等待事件發(fā)發(fā)生的最多生的最多時鐘節(jié)時鐘節(jié)拍拍數(shù)數(shù), ostimetick()使用使用這個鏈這個鏈表表來來刷新各任刷新各任務務的任的任務務延延遲變遲變量量.ostcbdly */ int8u ostcbstat; /* 任任務狀態(tài)務狀態(tài)*/ int8u ostcbprio; /* 任任務優(yōu)務優(yōu)先先級級 */35電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心 int8u ostcbx; int8u ostc

38、by; int8u ostcbbitx; int8u ostcbbity; /* 這這四四個變個變量用于找出具有最高量用于找出具有最高優(yōu)優(yōu)先先級級的任的任務務。這這些些值值是在任是在任務務建立建立時計時計算,或者算,或者是在改是在改變變?nèi)稳蝿諆?yōu)務優(yōu)先先級時計級時計算。算。 */ #if os_task_del_en 0 boolean ostcbdelreq; /* 表示任表示任務務是否需要是否需要刪刪除除 */#endif os_tcb;36電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心空任務控制塊鏈表空任務控制塊鏈表ostcbnextostcbnextostcbfreelis

39、tostcbtbl(0)ostcbtbl(1)null37所有的所有的os_tcb都存放在任務控制塊列表數(shù)組都存放在任務控制塊列表數(shù)組ostcbtbl 中的。中的。電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務控制塊任務控制塊 為節(jié)約內(nèi)存,為節(jié)約內(nèi)存,任務數(shù)量任務數(shù)量通常需要進行預先通常需要進行預先配置配置 按照配置的任務數(shù)量初始化任務控制塊,一個任務對按照配置的任務數(shù)量初始化任務控制塊,一個任務對應一個初始的任務控制塊,形成一個應一個初始的任務控制塊,形成一個空閑任務控制塊空閑任務控制塊鏈鏈。 在任務創(chuàng)建時,實時內(nèi)核從空閑任務控制在任務創(chuàng)建時,實時內(nèi)核從空閑任務控制塊鏈中為

40、任務分配一個任務控制塊。塊鏈中為任務分配一個任務控制塊。 隨后對任務的操作,都是基于對應的隨后對任務的操作,都是基于對應的任務控制塊任務控制塊來進來進行的。行的。 當任務被刪除后,對應的任務控制塊又會被實時內(nèi)核當任務被刪除后,對應的任務控制塊又會被實時內(nèi)核回收到回收到空閑任務控制塊鏈空閑任務控制塊鏈。 38電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心初始化任務控制塊初始化任務控制塊 任務建立時,函數(shù)任務建立時,函數(shù)os_tcbinit()os_tcbinit()初始化任務控制初始化任務控制塊塊os_tcb.os_tcb.39int8u os_tcbinit( int8u pri

41、o, os_stk *ptos, os_stk * pbos, int16u id, int32u stk_size, void *pext, int16u opt) /* prio是任是任務優(yōu)務優(yōu)先先級級, ptos指向指向棧頂棧頂指指針針, pbos指向指向棧棧底的指底的指針針, id是任是任務標識務標識符符, stk_size是堆是堆棧棧的容量的容量, pext是是os_tcb的的擴擴展指展指針針, opt是是選擇項選擇項 */ os_tcb *ptcb; os_enter_critical(); ptcb=ostcbfreelist; if (ptcb!=(os_tcb *)0)電子科

42、技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心40初始化任務控制塊初始化任務控制塊 ostcbfreelist = ptcb - ostcbnext; os_exit_critical(); ptcb - ostcbstkptr = ptos; /棧頂棧頂指指針針 ptcb - ostcbprio = (int8u)prio; ptcb - ostcbstat = os_stat_rdy; ptcb - ostcbdly = 0;# if os_task_create_ext_en 0 ptcb - ostcbextptr = pext; / os_tcb的的擴擴展指展指針針 ptcb

43、 - ostcbstksize = stk_size; / stk_size是堆是堆棧棧的容量的容量 ptcb - ostcbstkbottom = pbos; /棧棧底指底指針針 ptcb - ostcbopt = opt; /選擇項選擇項 ptcb - ostcbid = id; / id是任是任務標識務標識符符#endif 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心41初始化任務控制塊初始化任務控制塊#if os_task_del_en 0 ptcb - ostcbdelreq = os_no_err;#endif ptcb - ostcby = prio 3; ptc

44、b - ostcbbity = osmaptblptcb-ostcby; ptcb - ostcbx = prio & 0 x07; ptcb - ostcbbitx = osmaptblptcb-ostcbx;#if os_event_en0 ptcb - ostcbeventptr = (os_event *)0; /事件指事件指針為針為空空 #endif#if (os_version = 251) & (os_flag_en 0) & (os_max_flags 0) & (os_task_del_en 0) ptcb - ostcbflagnode =

45、(os_flag_node *)0; /事件事件標標志志節(jié)節(jié)點指點指針為針為空空#endif 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心42初始化任務控制塊初始化任務控制塊#if (os_q_en 0) & (os_max_qs 0) | (os_mbox_en 0) ptcb - ostcbmsg = (void *)0; /消息指消息指針為針為空空#endif os_enter_critical();/把把os_tcb插插入到已入到已經(jīng)經(jīng)建立任建立任務務的的雙雙向向鏈鏈表中,需表中,需關關中中斷斷 ostcbpriotblprio = ptcb; ptcb-ost

46、cbnext = ostcblist; ptcb-ostcbprev = (os_tcb *)0; if (ostcblist!=(os_tcb *)0) ostcblist-ostcbprev = ptcb; ostcblist = ptcb; osrdygrp |= ptcb-ostcbbity; osrdytblptcb-ostcby |= ptcb-ostcbbitx; os_exit_critical(); return(os_no_err);/返回返回值值用于用于內(nèi)內(nèi)核掌握核掌握執(zhí)執(zhí)行情行情況況 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心43初始化任務控制塊初始化

47、任務控制塊 os_exit_critical(); return (os_no_more_tcb);/返回返回值值用于用于內(nèi)內(nèi)核掌握核掌握執(zhí)執(zhí)行情行情況況 總結(jié):總結(jié):1.目前,內(nèi)核對tcb維護了3個全局數(shù)組:任務控制塊表ostcbtbl(用于決定內(nèi)核最多可用tcb數(shù)),任務優(yōu)先級tcb表ostcbpriotbl,任務就緒表osrdytbl和 osrdygrp。2.目前,對tcb維護了2個全局鏈表:任務控制塊空閑鏈表ostcbfreelist(指向下一個可以分配的tcb);已建立任務控制塊鏈表ostcblist。電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心已建立任務控制塊鏈表o

48、stcblist task nametask idtask statustask prioritytask contexttask nametask idtask statustask prioritytask contexttask nametask idtask statustask prioritytask contextostcblist隊列隊列tcb1tcb2tcbnnull44電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心就緒表就緒表 每個就緒的任務都放在就緒表每個就緒的任務都放在就緒表osrdytblosrdytbl中。當中。當任務就緒時,任務就緒時, osrdyt

49、blosrdytbl中相應位置中相應位置1.1.45電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心就緒表就緒表思考:思考:對于按優(yōu)先級大小存放的對于按優(yōu)先級大小存放的數(shù)據(jù)結(jié)構(gòu),如果我們想找數(shù)據(jù)結(jié)構(gòu),如果我們想找出最高優(yōu)先級的任務,應出最高優(yōu)先級的任務,應當怎么操作呢?當怎么操作呢?46電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心就緒表就緒表 還有一個全局變量,還有一個全局變量,osrdygrp:osrdygrp:47電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心就緒表就緒表 此外,還有一個全局變量,此外,還有一個全局變量,osmaptblosmapt

50、bl的的值值: :48下標二進制值000000001100000010200000100300001000400010000500100000601000000710000000電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心就緒表就緒表49/假假設當設當前任前任務優(yōu)務優(yōu)先先級為級為35,使任,使任務進務進入就入就緒態(tài)緒態(tài)osrdygrp |= osmaptblprio3;osrdytblprio3 |= osmaptblprio&0 x07; 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心就緒表就緒表50/假假設當設當前任前任務優(yōu)務優(yōu)先先級為級為35,使任,

51、使任務脫務脫離就離就緒態(tài)緒態(tài)if (osrdytblprio3&= osmaptblprio&0 x07) = =0)/*先先將將osrdytbl中的相中的相應應位位清清0,然后判,然后判斷該斷該位所在的行是否都位所在的行是否都為為0,若都若都為為0,則則再再清清除除osrdygrp的相的相應應位。位。*/ osrdygrp &= osmaptblprio3; 電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心就緒表就緒表 上面介紹了增加和脫離就緒態(tài)的任務的操作。那么如何找上面介紹了增加和脫離就緒態(tài)的任務的操作。那么如何找出最高優(yōu)先級的就緒態(tài)任務?出最高優(yōu)先級

52、的就緒態(tài)任務?51int8u const osunmaptbl = 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1

53、, 0, 2, 0, 1, 0,5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,6,

54、 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 0 x00 to 0 x0f */* 0 x10 to 0 x1f */* 0 x60 to 0 x6f */* 0 x70 to 0 x7f */* 0 x80 to 0 x8f */* 0 x90 to 0 x9f *

55、/* 0 xa0 to 0 xaf */* 0 xb0 to 0 xbf */* 0 xc0 to 0 xcf */* 0 xd0 to 0 xdf */* 0 xe0 to 0 xef */* 0 x20 to 0 x2f */* 0 x30 to 0 x3f */* 0 x40 to 0 x4f */ /* 0 x50 to 0 x5f */* 0 xf0 to 0 xff */;電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心找出進入就緒態(tài)的最高優(yōu)先級找出進入就緒態(tài)的最高優(yōu)先級任務任務y= osunmaptblosrdygrp;x = osunmaptblosrdytbly;

56、 priority = (y 4/high3bit 0 x88-3/low3bitosrdytbl0osrdytbl1osrdytbl2osrdytbl3osrdytbl4osrdytbl5osrdytbl6osrdytbl752電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心另一種實現(xiàn)方式:任務隊列另一種實現(xiàn)方式:任務隊列 在非實時系統(tǒng)中,可以考慮通過任務隊列在非實時系統(tǒng)中,可以考慮通過任務隊列實現(xiàn)對系統(tǒng)中所有任務的管理。實現(xiàn)對系統(tǒng)中所有任務的管理。新任務新任務cpucpu就緒隊列就緒隊列等待隊列等待隊列超時超時調(diào)度調(diào)度等待資源等待資源獲得資源獲得資源釋放釋放cpucpu53電子

57、科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務隊列任務隊列 單等待隊列單等待隊列 資源對應的事件發(fā)生時,實時內(nèi)核需要掃描資源對應的事件發(fā)生時,實時內(nèi)核需要掃描整個等待隊列,搜索等待該資源的任務,并整個等待隊列,搜索等待該資源的任務,并按照一定的策略按照一定的策略選取任務,把任務的任務控選取任務,把任務的任務控制塊放置到就緒隊列。制塊放置到就緒隊列。 如果系統(tǒng)的資源和任務比較多,搜索等待該如果系統(tǒng)的資源和任務比較多,搜索等待該資源的任務所需要的時間就比較長,會影響資源的任務所需要的時間就比較長,會影響整個系統(tǒng)的實時性。整個系統(tǒng)的實時性。 可采用一種可采用一種多等待隊列多等待隊列的處

58、理方式的處理方式 資源對應的事件發(fā)生時,能夠在較短的時間資源對應的事件發(fā)生時,能夠在較短的時間內(nèi)確立等待該資源的任務等待隊列內(nèi)確立等待該資源的任務等待隊列。 54電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心新任務新任務cpucpu就緒隊列就緒隊列資源資源1 1等待隊列等待隊列超時超時調(diào)度調(diào)度等待資源等待資源1 1獲得資源獲得資源1 1釋放釋放cpucpu資源資源2 2等待隊列等待隊列等待資源等待資源2 2獲得資源獲得資源2 2資源資源n n等待隊列等待隊列等待資源等待資源n n獲得資源獲得資源n n55電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務隊列任務隊列

59、 對于就緒任務,如果采用上述隊列方式進對于就緒任務,如果采用上述隊列方式進行管理,在基于優(yōu)先級的調(diào)度處理中,要行管理,在基于優(yōu)先級的調(diào)度處理中,要獲得當前具有獲得當前具有最高優(yōu)先級最高優(yōu)先級的就緒任務:的就緒任務: 方式一:任務就緒時,把就緒任務的任務控方式一:任務就緒時,把就緒任務的任務控制塊放在就緒隊列的末尾制塊放在就緒隊列的末尾。 調(diào)度程序需要從就緒隊列的頭部到尾部進行一次調(diào)度程序需要從就緒隊列的頭部到尾部進行一次遍歷,才能獲得就緒隊列中具有最高優(yōu)先級的任遍歷,才能獲得就緒隊列中具有最高優(yōu)先級的任務;務; 方式二:就緒隊列按照優(yōu)先級從高到低的順方式二:就緒隊列按照優(yōu)先級從高到低的順序排列

60、序排列。 新的就緒任務到達時,需要插入到就緒隊列的合新的就緒任務到達時,需要插入到就緒隊列的合適位置,確保就緒隊列保持優(yōu)先級從高到低排列適位置,確保就緒隊列保持優(yōu)先級從高到低排列的順序性。的順序性。56電子科技大學嵌入式軟件工程中心電子科技大學嵌入式軟件工程中心任務調(diào)度任務調(diào)度 uc/osuc/os總是選擇總是選擇就緒態(tài)任務中優(yōu)先級最高就緒態(tài)任務中優(yōu)先級最高的任務執(zhí)行的任務執(zhí)行。 確定哪個任務優(yōu)先級最高,下面該哪個任務運行了確定哪個任務優(yōu)先級最高,下面該哪個任務運行了的工作是由調(diào)度器完成的。的工作是由調(diào)度器完成的。 uc/osuc/os的任務級調(diào)度是由函數(shù)的任務級調(diào)度是由函數(shù)os_sched()os_sched()完成的。完成的。 中斷級的調(diào)度是由另一個函數(shù)中斷級的調(diào)度是由另一個函數(shù)osintexit()o

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論