freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式系統(tǒng)及應(yīng)用-5-任務(wù)管理與調(diào)度-資料下載頁(yè)

2025-01-10 19:06本頁(yè)面
  

【正文】 OSRdyTbl[6] OSRdyTbl[7] ?00010000 ?00001000 電子科技大學(xué)嵌入式軟件工程中心 任務(wù)退出就緒態(tài) if((OSRdyTbl[priority 3] amp。= ~OSMapTbl[priority amp。 0x07]) = = 0) OSRdyGrp amp。= ~OSMapTbl[priority 3]。 35: 00100 011 OSRdyGrp 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24 39 38 37 36 35 34 33 32 47 46 45 54 43 42 41 40 55 54 53 52 51 50 49 48 63 62 61 60 59 58 57 56 7 6 5 4 3 2 1 0 OSRdyTbl ? 0000100011110111 ? 0001000011101111 OSRdyTbl[0] OSRdyTbl[1] OSRdyTbl[2] OSRdyTbl[3] OSRdyTbl[4] OSRdyTbl[5] OSRdyTbl[6] OSRdyTbl[7] 電子科技大學(xué)嵌入式軟件工程中心 獲取進(jìn)入就緒態(tài)的最高優(yōu)先級(jí) high3Bit = OSUnMapTbl[OSRdyGrp]。 low3Bit = OSUnMapTbl[OSRdyTbl[high3Bit]]。 priority = (high3Bit 3) + low3Bit。 ucOS中,任務(wù)按優(yōu)先級(jí)進(jìn)行組織,以優(yōu)先級(jí)為數(shù)組元素下標(biāo),通過(guò)OSTCBPrioTbl[]即可找到相應(yīng)的 TCB。 35: 00100 011 OSRdyGrp 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24 1 0 0 0 1 0 0 0 47 46 45 54 43 42 41 40 55 54 53 52 51 50 49 48 63 62 61 60 59 58 57 56 0 1 0 1 0 0 0 0 OSRdyTbl ? 0x504/high3Bit ? 0x883/low3Bit ? OSRdyTbl[0] OSRdyTbl[1] OSRdyTbl[2] OSRdyTbl[3] OSRdyTbl[4] OSRdyTbl[5] OSRdyTbl[6] OSRdyTbl[7] 電子科技大學(xué)嵌入式軟件工程中心 任務(wù)管理機(jī)制 ? 任務(wù)管理用來(lái)實(shí)現(xiàn)對(duì)任務(wù)狀態(tài)的直接控制和訪問(wèn)。 ? 內(nèi)核的任務(wù)管理是通過(guò)系統(tǒng)調(diào)用來(lái)體現(xiàn),主要包括任務(wù)創(chuàng)建、任務(wù)刪除、任務(wù)掛起、任務(wù)喚醒、設(shè)置任務(wù)屬性等內(nèi)容 。 創(chuàng)建任務(wù) 刪除任務(wù) 掛起任務(wù) 喚醒任務(wù) 設(shè)置任務(wù)屬性 改變?nèi)蝿?wù)優(yōu)先級(jí) 獲取任務(wù)信息 … 任務(wù)管理功能 電子科技大學(xué)嵌入式軟件工程中心 任務(wù)管理機(jī)制 ? 創(chuàng)建任務(wù) 的過(guò)程即為分配任務(wù)控制塊的過(guò)程。 – 在創(chuàng)建任務(wù)時(shí),通常需要確定任務(wù)的名字和任務(wù)的優(yōu)先級(jí)等內(nèi)容,確立任務(wù)所能使用的堆棧區(qū)域。 – 任務(wù)創(chuàng)建成功后,通常會(huì)為用戶返回一個(gè)標(biāo)識(shí)該任務(wù)的 ID,以實(shí)現(xiàn)對(duì)任務(wù)的引用管理。 ? 刪除任務(wù) 把任務(wù)從系統(tǒng)中去掉,釋放對(duì)應(yīng)的任務(wù)控制塊。 ? 掛起 /喚醒任務(wù) 把任務(wù)變?yōu)榈却隣顟B(tài),可通過(guò)喚醒任務(wù)操作把任務(wù)轉(zhuǎn)換為就緒狀態(tài)。 電子科技大學(xué)嵌入式軟件工程中心 任務(wù)管理機(jī)制 ? 設(shè)置任務(wù)屬性 可以用來(lái)設(shè)置任務(wù)的搶占、時(shí)間片等特性,以確定是否允許任務(wù)在執(zhí)行過(guò)程中被搶占或是對(duì)同優(yōu)先級(jí)任務(wù)采用時(shí)間片輪轉(zhuǎn)方式運(yùn)行等。 ? 改變?nèi)蝿?wù)優(yōu)先級(jí) 用來(lái)根據(jù)需要改變?nèi)蝿?wù)的當(dāng)前優(yōu)先級(jí)。 ? 獲取任務(wù)信息 獲得任務(wù)的當(dāng)前優(yōu)先級(jí)、任務(wù)的屬性、任務(wù)的名字、任務(wù)的上下文、任務(wù)的狀態(tài)等內(nèi)容,便于用戶進(jìn)行決策。 電子科技大學(xué)嵌入式軟件工程中心 創(chuàng)建任務(wù) ? 任務(wù)創(chuàng)建為任務(wù)分配和初始化相關(guān)的數(shù)據(jù)結(jié)構(gòu)。 ? 任務(wù)創(chuàng)建時(shí)通常需要使用如下信息: – 任務(wù)的名字 – 任務(wù)的初始優(yōu)先級(jí) – 任務(wù)棧 – 任務(wù)屬性 – 任務(wù)對(duì)應(yīng)的函數(shù)入口地址 – 任務(wù)對(duì)應(yīng)函數(shù)的參數(shù) – 任務(wù)刪除時(shí)的回調(diào)函數(shù) 電子科技大學(xué)嵌入式軟件工程中心 創(chuàng)建任務(wù) ? ??臻g: – 由于不同任務(wù)運(yùn)行時(shí)需要的的大小不同,由內(nèi)核進(jìn)行任務(wù)棧的分配就不能適應(yīng)應(yīng)用任務(wù)的多樣性需求。 – 通常由 用戶指定 任務(wù)運(yùn)行過(guò)程中需要使用的??臻g。 – 確定任務(wù)到底需要多少棧空間是一個(gè)比較困難的事情。大都需要進(jìn)行一個(gè)反復(fù)修正的過(guò)程: ? 在最開(kāi)始的時(shí)候,根據(jù)應(yīng)用的類(lèi)型,為任務(wù)分配一個(gè)比預(yù)期估計(jì)更大的??臻g; ? 使用棧檢測(cè)函數(shù),定期監(jiān)控任務(wù)對(duì)棧的使用情況,并據(jù)此對(duì)任務(wù)棧的大小進(jìn)行調(diào)整。 電子科技大學(xué)嵌入式軟件工程中心 創(chuàng)建任務(wù) ? 任務(wù)可以包含多種屬性 – 任務(wù)是否可被搶占 – 是否采用時(shí)間片輪轉(zhuǎn)調(diào)度方式調(diào)度 – 是否響應(yīng)異步信號(hào) – 任務(wù)中開(kāi)放的中斷級(jí)別 – 是否使用數(shù)字協(xié)處理器等內(nèi)容 ? 如果任務(wù)需要進(jìn)行浮點(diǎn)運(yùn)算,在創(chuàng)建任務(wù)時(shí)實(shí)時(shí)內(nèi)核應(yīng)為任務(wù)分配浮點(diǎn)堆??臻g,以在任務(wù)切換時(shí)保存或是恢復(fù)數(shù)字協(xié)處理器的上下文內(nèi)容。 ? 任務(wù)對(duì)應(yīng)函數(shù)的入口地址 – 表示所創(chuàng)建任務(wù)起始執(zhí)行的入口 電子科技大學(xué)嵌入式軟件工程中心 創(chuàng)建任務(wù) ? 任務(wù)創(chuàng)建通常需要完成以下工作: – 獲得任務(wù)控制塊 TCB – 根據(jù)實(shí)時(shí)內(nèi)核用戶提供的信息初始化 TCB – 為任務(wù)分配一個(gè)可以唯一標(biāo)識(shí)任務(wù)的 ID – 使任務(wù)處于就緒狀態(tài),把任務(wù)放置到就緒隊(duì)列 – 進(jìn)行任務(wù)調(diào)度處理 電子科技大學(xué)嵌入式軟件工程中心 INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio) { OS_STK *psp。 INT8U err。 OS_ENTER_CRITICAL()。 if (OSTCBPrioTbl[prio] == (OS_TCB *)0) { /* Make sure task doesn39。t already exist at this priority */ OSTCBPrioTbl[prio] = (OS_TCB *)1。 /* Reserve the priority to prevent others from doing the same thing until task is created. */ OS_EXIT_CRITICAL()。 psp = (OS_STK *)OSTaskStkInit(task, pdata, ptos, 0)。 /* Initialize the task39。s stack */ err = OS_TCBInit(prio, psp, (OS_STK *)0, 0, 0, (void *)0, 0)。 if (err == OS_NO_ERR) { OS_ENTER_CRITICAL()。 OSTaskCtr++。 /* Increment the tasks counter */ OS_EXIT_CRITICAL()。 if (OSRunning == TRUE) { /* Find highest priority task if multitasking has started */ OS_Sched()。 } } else { OS_ENTER_CRITICAL()。 OSTCBPrioTbl[prio] = (OS_TCB *)0。/* Make this priority available to others */ OS_EXIT_CRITICAL()。 } return (err)。 } OS_EXIT_CRITICAL()。 return (OS_PRIO_EXIST)。 } OSTaskCreate in uCOS 電子科技大學(xué)嵌入式軟件工程中心 int main(void) { // Initialize uCOSII. OSInit()。 // Create the first task OSTaskCreate(TestTask1, (void *) 11, amp。TestTaskStk1[TASK_STK_SIZE], 11)。 // Start multitasking. OSStart()。 return 0。 } void TestTask1(void *pdata) { printf(%4u: ***** Test Task 1 First call *****\n, OSTime)。 //Create 3 other tasks OSTaskCreate(TestTask2, (void *) 22, amp。TestTaskStk2[TASK_STK_SIZE], 22)。 OSTaskCreate(TestTask3, (void *) 33, amp。TestTaskStk3[TASK_STK_SIZE], 33)。 OSTaskCreate(TestTask4, (void *) 10, amp。TestTaskStk3[TASK_STK_SIZE], 10)。 while (1) { printf(%4u: ***** Test Task 11 *****\n, OSTime)。 OSTimeDly(1)。 } } Task demo based on uCOS 電子科技大學(xué)嵌入式軟件工程中心 void TestTask2(void *pdata) { while (1) { printf(%4u: ***** Test Task 22 *****\n, OSTime)。 OSTimeDly(1)。 } } void TestTask3(void *pdata) { while (1) { printf(%4u: ***** Test Task 33 *****\n, OSTime)。 OSTimeDly(1)。 } } void TestTask4(void *pdata) { while (1) { printf(%4u: +++++ Test Task 10 +++++\n, OSTime)。 OSTaskSuspend(10)。 //Suspend yourself } } 程序運(yùn)行結(jié)果 電子科技大學(xué)嵌入式軟件工程中心 刪除任務(wù) ? 內(nèi)核根據(jù)任務(wù)創(chuàng)建時(shí)獲得的 ID刪除指定的任務(wù)。 ? 在刪除一個(gè)任務(wù)時(shí),需要 釋放該任務(wù)所擁有的資源 。 – 釋放任務(wù)所擁有的資源通常由 內(nèi)核 和 任務(wù) 共同完成。 ? 內(nèi)核通常只釋放那些由內(nèi)核為任務(wù)分配的資源 –如任務(wù)名字和 TCB等內(nèi)容所占用的空間。 ? 由任務(wù)自己分配的資源則通常由任務(wù)自身進(jìn)行釋放 –如任務(wù)的堆??臻g,以及其他一些任務(wù)申請(qǐng)的資源,信號(hào)量、 timer、文件系統(tǒng)資源、 I/O設(shè)備和使用 malloc等函數(shù)動(dòng)態(tài)獲得的內(nèi)存空間等。 電子科技大學(xué)嵌入式軟件工程中心 刪除任務(wù) ? 任務(wù)刪除通常需要進(jìn)行以下工作: – 根據(jù)指定的 ID,獲得對(duì)應(yīng)任務(wù)的
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1