嵌入式操作糸统一UC/OS 任务控制块结构 Struct os tcb oS stK *OSTCBStkPtr struct os tcb *OSTCBNext struct os tcb OSTCBprev; OS EVent *OSTCBEventptr void *OSTCBMsg INT 16U OSTCBDly int8u oSTCBStat inT8U OST CBPrio iNT8U OSTCBX, OSTCBY, OSTCBBitX, oSTCBBitY 3OS_TCB 2002/11
嵌入式操作系统—uC/OS 2002/11 6 任务控制块结构 ◼ Struct os_tcb { OS_STK *OSTCBStkPtr; struct os_tcb *OSTCBNext; struct os_tcb *OSTCBprev; OS_EVENT *OSTCBEventPtr; void *OSTCBMsg; INT16U OSTCBDly; INT8U OSTCBStat; INT8U OSTCBPrio; INT8U OSTCBX, OSTCBY, OSTCBBitX, OSTCBBitY; } OS_TCB
嵌入式操作糸统一UC/OS 任务的状态 WAITING OSMBoxPost OSMBoxPend( oSQPost( OSQPend( OSQPostFront( OSTaskDelO OSSemPost0 OSSemPend() OSTask Resume() OSTaskSuspend( OSTime Dly Resume( OSTime Dly OSTime Dly HMSM( OSTask) oSTaskCreate Ex咱 aSSart( OSIntExitO OS TASK SW DORMAN READY SR OSTaskDelO OSInt Exit Task is Preempted Figure 3-1, Task States 2002/11
嵌入式操作系统—uC/OS 2002/11 7 任务的状态
嵌入式操作糸统一UC/OS 任务的状态 OSTCBStat 运行,就绪,等待,挂起. OSTCBStat 低四位 挂起队列邮箱信号量 可以有多个准备就绪的任务,但一个时 刻只有一个任务可以运行, OSHighRd 2002/11
嵌入式操作系统—uC/OS 2002/11 8 任务的状态 OSTCBStat ◼ 运行,就绪,等待,挂起… ◼ 可以有多个准备就绪的任务,但一个时 刻只有一个任务可以运行,OSHighRdy 挂起 队列邮箱信号量 OSTCBStat 低四位
嵌入式操作糸统一UC/OS 任务的调度- OSSched UC/OS是占先式实时多任务内核,优先级 最高的任务一旦准备就绪,则拥有CPU的 所有权开始投入运行 UC/OS中不支持时间片轮转法,每个任务 的优先级要求不一样且是唯一的,所以 任务调度的工作就是:查找准备就绪的 最高优先级的任务并进行上下文切换。 2002/11
嵌入式操作系统—uC/OS 2002/11 9 任务的调度--OSSched ◼ uC/OS是占先式实时多任务内核,优先级 最高的任务一旦准备就绪,则拥有CPU的 所有权开始投入运行。 ◼ uC/OS中不支持时间片轮转法,每个任务 的优先级要求不一样且是唯一的,所以 任务调度的工作就是:查找准备就绪的 最高优先级的任务并进行上下文切换
嵌入式操作糸统一UC/OS 任务的调度 就绪任务表:用于存贮每个任务的就绪 状态标志。由两个变量组成: OSRedy Grp:8位,每位表示一组(8个)任务中 是否有就绪的任务 OSRdytb]:位图方式表示某个任务是否就绪。 2002/11
嵌入式操作系统—uC/OS 2002/11 10 任务的调度 ◼ 就绪任务表:用于存贮每个任务的就绪 状态标志。由两个变量组成: ◼ OSRedyGrp:8位,每位表示一组(8个)任务中 是否有就绪的任务。 ◼ OSRdyTbl[]:位图方式表示某个任务是否就绪