《嵌入式操作系统教程-第六章.ppt》由会员分享,可在线阅读,更多相关《嵌入式操作系统教程-第六章.ppt(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式操作系统基础 第六章 uC/OS-II的任务调度 第六章 uC/OS-II的任务u调度器调度器OSSched()的任务调度()的任务调度u调度器调度器OSSched()的任务任务切换()的任务任务切换u调度时机调度时机1嵌入式操作系统基础 第六章 uC/OS-II的任务调度第六章 uC/OS-II的任务调度一、调度器 6.1 调度器OSSched()的任务调度1.概念:系统常常是把任务调度和任务切换作为一个系统服务来提供的,用来完成这个任务的系统程序模块或系统函数被称为调度器2.调度职责:寻找优先级别最高的就绪任务作为待运行任务。即从就绪任务表中获取待运行任务的最高优先级,进而来获取带运
2、行任务控制块。2嵌入式操作系统基础 第六章 uC/OS-II的任务调度3.调度过程:y=OSnMapTb1OSRdyGrp;OSPrioHighRdy=(INT8U)(y3)+UnMapTb1OSRdyTb1y);OSTCBHighRdy=OSTCBPrioTb1OSPrioHighRdy;3嵌入式操作系统基础 第六章 uC/OS-II的任务调度vvoid OSSched(void)vv#if OS_CRITICAL_METHOD=3vOS_CPU_SR cpu_sr;v#endifv INT8U y;v OS_ENTER_CRITICAL();v if(OSLockNesting|OSInt
3、Nesting)=0)vv y=OSUnMapTblOSRdyGrp;v OSPrioHighRdy/得到最高级优先任务v =(INT8U)(y OSTCBStkPtr=SP;/在中止任务控制块中保存SPv OSTCBCur=OSTCBHighRdy;/任务控制块的切换vOSPrioCur=OSPrioHighRdy;vSP=OSTCBHighRdy-OSTCBStkPtr;/使SP指向待运行任务堆栈v 用出栈指令把R1,R2,弹入CPU的通用寄存器;vIRET;/中断返回,使PC指向待运行任务v 一个关系:OS_STASK_SWOSCtxSw()7嵌入式操作系统基础 第六章 uC/OS-II的任务调度6.3 调度时机v通过在就绪任务表中声明新任务创建v任务的删除v唤醒等待态任务v异步事件出现,终端服务激活若干任务v运行态任务的状态转换8