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

正文內(nèi)容

嵌入式操作系統(tǒng)設(shè)計-資料下載頁

2025-03-21 21:12本頁面
  

【正文】 2, 0, 1, 0, /* 0x80 to 0x8F */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0x90 to 0x9F */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xA0 to 0xAF */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xB0 to 0xBF */ 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xC0 to 0xCF */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xD0 to 0xDF */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, /* 0xE0 to 0xEF */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 /* 0xF0 to 0xFF */ }。 ? 挑出進入就緒態(tài)的優(yōu)先級最高的任務(wù) y = OSUnMapTbl[OSRdyGrp]。 x = OSUnMapTbl[OSRdyTbl[y]] prio = (y 3) + x ? 舉例 OSRdyGrp 01101000, 0x68 3=OSUnMapTbl[0x68] OSRdyTbl[3] 值為 11100100 ,0xE4 2=OSUnMapTbl[0xE4] 優(yōu)先級 26=( 33) + 2 查任務(wù)控制塊優(yōu)先級表得對應(yīng)任務(wù)控制塊 Linux Scheduling Algorithms Goals ? Good interactive performance during high load ? Fairness ? RealTime Parameters ? Priority ? Time slice Priority ? Static priority The static priority of every task is fixed ? Dynamic priority The dynamic priority of every task is set according to its static priority and past behavior ? Calculate time slice of each task based on its static priority ? Schedule tasks preemptively according to their dynamic priority ? The dynamic priority of a task can vary within a range of values, called variable dynamic priority range. The length of the range is referred to as MAX_BONUS. ? Now it equal to 10. Interactive tasks The kernel treats an interactive task as a normal task when the task runs out of its time slice under two conditions: ? When some task in the expired priority array has a higher static priority than the static priority of the interactive task. ? When the difference between the current time and the value of system variable expired timestamp is equal to or larger than STARVATION_LIMIT times (nr_running+1). InterProcesses Communication OSTCBStat: OS_STAT_SEM 0x01 Pending on semaphore OS_STAT_MBOX 0x02 Pending on mailbox OS_STAT_Q 0x04 Pending on queue OS_STAT_MUTEX 0x10 Pending on mutual semaphore OS_STAT_FLAG 0x20 Pending on event flag group OS_STAT_PEND_ANY B―00110111‖ 是每個掛起的總和 OS_STAT_SUSPEND 0x08 Task is suspended OS_STAT_RDY 0x00 Ready to run 事件控制塊 ECB 181。C/OSII通過 中定義的 OS_EVENT數(shù)據(jù)結(jié)構(gòu)來維護一個事 件控制塊的所有信息,也就是事件控 制塊 ECB。該結(jié)構(gòu)中除了包含了事件 本身的定義,如用于信號量的計數(shù) 器,用于指向郵箱的指針,以及指向 消息隊列的指針數(shù)組等,還定義了等 待該事件的所有任務(wù)的列表。 typedef struct { void *OSEventPtr。 /* 指向消息或者消息隊列的指針 */ INT8U OSEventTbl[OS_EVENT_TBL_SIZE]。 /* 等待任務(wù)列表 */ INT16U OSEventCnt。 /* 計數(shù)器 (當事件是信號量時 ) */ INT8U OSEventType。 /* 事件類型 */ INT8U OSEventGrp。 /* 等待任務(wù)所在的組 */ } OS_EVENT。 對于事件控制塊進行的一些通用操作 ,包 括: 初始化一個事件控制塊 OSEventWaitListInit() 使一個任務(wù)進入就緒態(tài) OSEventTaskRdy() 使一個任務(wù)進入等待該事件的狀態(tài) OSEventWait() 因為等待超時而使一個任務(wù)進入就緒態(tài) OSEventTO() 初始化一個事件控制塊 OSEventWaitListInit() 當建立一個信號量、郵箱或者消息隊列時,相應(yīng)的 建立函數(shù) OSSemInit(), OSMboxCreate(),或者 OSQCreate()通過調(diào)用 OSEventWaitListInit()對事件控 制塊中的等待任務(wù)列表進行初始化。該函數(shù)初始化 一個空的等待任務(wù)列表,其中沒有任何任務(wù)。該函 數(shù)的調(diào)用參數(shù)只有一個,就是指向需要初始化的事 件控制塊的指針 pevent。 void OSEventWaitListInit (OS_EVENT *pevent) { INT8U i。 peventOSEventGrp = 0x00。 for (i = 0。 i OS_EVENT_TBL_SIZE。 i++) { peventOSEventTbl[i] = 0x00。 } } 使一個任務(wù)進入就緒態(tài) OSEventTaskRdy() 當發(fā)生了某個事件,該事件等待任務(wù)列表中的最高 優(yōu)先級任務(wù)( Highest Priority Task – HPT)要置 于就緒態(tài)時,該事件對應(yīng)的 OSSemPost(), OSMboxPost(), OSQPost(),和 OSQPostFront()函 數(shù)調(diào)用 OSEventTaskRdy()實現(xiàn)該操作。換句話 說,該函數(shù)從等待任務(wù)隊列中刪除 HPT任務(wù) ( Highest Priority Task),并把該任務(wù)置于就緒 態(tài)。 void OSEventTaskRdy (OS_EVENT *pevent, void *msg, INT8U msk) { OS_TCB *ptcb。 INT8U x。 INT8U y。 INT8U bitx。 INT8U bity。 INT8U prio。 y = OSUnMapTbl[peventOSEventGrp]。 (1) bity = OSMapTbl[y]。 (2) x = OSUnMapTbl[peventOSEventTbl[y]]。 (3) bitx = OSMapTbl[x]。 (4) prio = (INT8U)((y 3) + x)。 (5) if ((peventOSEventTbl[y] amp。= ~bitx) == 0) { (6) peventOSEventGrp amp。= ~bity。 } ptcb = OSTCBPrioTbl[prio]。 (7) ptcbOSTCBDly = 0。 (8) ptcbOSTCBEventPtr = (OS_EVENT *)0。 (9) if (OS_Q_EN amp。amp。 (OS_MAX_QS = 2)) || OS_MBOX_EN ptcbOSTCBMsg = msg。 (10) else msg = msg。 endif ptcbOSTCBStat amp。= ~msk。 (11) if (ptcbOSTCBStat == OS_STAT_RDY) { (12) OSRdyGrp |= bity。 (13) OSRdyTbl[y] |= bitx。 } } 使一個任務(wù)進入等待某事件發(fā)生狀態(tài) , OSEventTaskWait() 當某個任務(wù)要等待一個事件的發(fā)生時,相應(yīng)事件的 OSSemPend(), OSMboxPend()或者 OSQPend()函 數(shù)會調(diào)用該函數(shù)將當前任務(wù)從就緒任務(wù)表中刪除, 并放到相應(yīng)事件的事件控制塊的等待任務(wù)表中 void OSEventTaskWait (OS_EVENT *pevent) { OSTCBCurOSTCBEventPtr = pevent。 (1) if ((OSRdyTbl[OSTCBCurOSTCBY] amp。= ~OSTCBCurOSTCBBitX) == 0) { (2) OSRdyGrp amp。= ~OSTCBCurOSTCBBitY。 } peventOSEventTbl[OSTCBCurOSTCBY] |= OSTCBCurOSTCBBitX。 (3) peventOSEventGrp |= OSTCBCurOSTCBBitY。 } 由于等待超時而將任務(wù)置為就緒態(tài)
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1