ucosii实时操作系统分析 任务管理及调度ppt课件.ppt
《ucosii实时操作系统分析 任务管理及调度ppt课件.ppt》由会员分享,可在线阅读,更多相关《ucosii实时操作系统分析 任务管理及调度ppt课件.ppt(37页珍藏版)》请在三一办公上搜索。
1、C/OS-II操作系统中进程调度模块分析,背 景,1、课程任务: 分析C/OS-II操作系统中的进程调度模块的源代码2、任务说明:结合课堂上讲授的进程的定义、进程控制块、进程的创建以及处理机调度算法等知识点,分析C/OS-II操作系统中的进程调度模块的源码实现。进而理解进程控制块的结构,理解进程运行的并发性,掌握进程调度的方法。3、任务要求:(1)熟悉相关的理论知识;(2)分析C/OS-II操作系统中的进程调度模块的代码实现,并辅以图表的形式描述实现流程;(3)对核心代码作注释说明。(4)按照模板撰写分析报告,以小组为单位参加答辩。,1、uC/OS的任务控制块-0.8 ( 25页2.3 ) 2
2、、任务就绪表的结构-0.9 (29页2.4.1)3、对任务就绪表的操作(将就绪任务状态填入就绪表)-0.9 (31页2.4.2)4、根据就绪表确定最高优先级(采用查表法确定高优先级任务)-1 ( 31页2.4.2)5、任务调度器实现流程图表述-1 (43页2.4.3)6、任务调度器实现及源代码分析-1 (43页2.4.3 )7、任务切换的过程描述-0.8(可选) (43页2.4.3 )8、用户任务的实现(编写一个示例程序验证调度算法)-1 (43页例2-7)9、任务状态切换(挂起和恢复任务)示例程序演示-0.9(可选) (48页例2-8)10、用信号量实现任务间同步和互斥示例程序演示-0.9(
3、可选) (119页例4-4,122页例4-5)11、用消息邮箱实现任务间通信示例程序演示-0.9(可选)(136页例4-8),任 务,实时操作系统C/OS-II,1,3,2,C/OS-II概述,任务概念,任务调度核心问题分析,C/OS简介,美国人Jean Labrosse 1992年完成应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等 1998年C/OS-II,目前的版本C/OS -II V2.61,2.722000年,得到美国航空管理局(FAA)的认证,可以用于飞行器中网站www.ucos-II.com(),数 据 类 型,typedef uns
4、igned char INT8U;typedef signed char INT8S;typedef unsigned int INT16U;typedef signed int INT16S;typedef unsigned long INT32U;typedef signed long INT32S;typedef float FP32;typedef double FP64;,实时操作系统C/OS-II,1,3,2,C/OS-II概述,任务概念,任务调度核心问题分析,任务调度概念,任务控制块任务代码结构任务优先级一个任务的实现,任务控制块TCB,一旦任务建立,一个任务控制块OS_TCB就
5、被赋值。任务控制块是一个数据结构,保存该任务的相关参数,包括任务堆栈指针,任务的当前状态,任务的优先级等。任务CPU使用权被剥夺时,TCB保存该时刻任务状态;任务重新得到CPU控制权时,TCB确保任务从当时被中断的那一点丝毫不差地继续执行。OS_TCB全部驻留在RAM中。,任务控制块就相当于一个任务的身份证,没有任务控制块的任务是不能被系统承认和管理的。,PCB:标识符、父进程标识符、程序计数器、栈指针、进程状态、优先级,任务控制块TCB uCOS_II.H 第370行,typedef struct os_tcb OS_STK *OSTCBStkPtr; /指向任务堆栈栈顶的指针 struct
6、 os_tcb *OSTCBNext; /指向后一个任务控制块的指针 struct os_tcb *OSTCBPrev; /指向前一个任务控制块的指针 INT16U OSTCBDly; /任务等待的时限(节拍数) INT8U OSTCBStat;/任务的当前状态标志 INT8U OSTCBPrio; /任务的优先级别 OS_TCB;,任务控制块链表,空任务块链表,OSTCBTbl0,OSTCBTbl1,OSTCBTblOS_MAX_TASKS+OS_N_SYS_TASK_-2,OSTCBTblOS_MAX_TASKS+OS_N_SYS_TASK_-1,OSTCBFreeList,系统在调用函数
7、OSInit()对uC/OS-II系统进行初始化时,先在RAM中建立一个OS_TCB结构类型的数组OSTCBTbl ,每个数组元素就是一个任务控制块,然后把这些控制块链接成一个如图所示的链表。由于链表中的这些控制块还没有与具体任务相关联,因此这个链表叫做空任务块链表。每当应用程序调用系统函数OSTaskCreate()创建一个任务时,系统就会将任务控制块链表头指针OSTCBFreeList指向的任务控制块分配给该任务。在给任务控制块中的各成员赋值后,就按任务控制块链表的头指针OSTCBList将其加入到任务控制块链表中。,uC/OS的任务,uC/OS-II的任务有两种:用户任务和系统任务。由应
8、用程序设计者编写的任务叫做用户任务,由系统提供的任务叫做系统任务。用户任务是为解决应用问题而编写的,系统任务是为应用程序来提供某种服务的。,目前,uC/OS-II最多可以对64个任务(包括用户任务和系统任务)进行管理。,空闲任务和统计任务,内核总是创建一个空闲任务OSTaskIdle();总是设置为最低优先级,OS_LOWEST_PRIOR;当所有其他任务都未在执行时,空闲任务开始执行;应用程序不能删除该任务;空闲任务的工作就是把32位计数器OSIdleCtr加1,该计数器被统计任务所使用;统计任务OSTaskStat(),提供运行时间统计。每秒钟运行一次,计算当前的CPU利用率。其优先级是O
9、S_LOWEST_PRIOR-1,可选。,任务的优先级,uC/OS-II分为64个优先级别,每一个级别都用一个数字表示。 数字0的级别最高,数字越大优先级别越低。通常,一个应用程序的任务数小于64,用户可根据应用程序的需要,在OS_CFG.H中设置OS_LOWEST_PRIO,即定义了可供使用的优先级别共OS_LOWEST_PRIO +1个。固定地,系统总是把最低优先级别自动赋给空闲任务,如果系统中还有统计任务,则其优先级别为OS_LOWEST_PRIO -1。,任务的优先级同样也是它的标识号ID。,问题1:如果创建2个相同优先级的任务会怎么执行?,任务的实现,创建任务的系统服务OSTaskC
10、reate()INT8U OSTaskCreate (void (*task)(void *pd), /任务代码指针 void *pdata, /任务参数指针OS_STK *ptos, /任务栈的栈顶指针 INT8U prio /任务的优先级);,用户任务代码的一般结构,void MyTask(void *pdata) for ( ; ; ) 可以被中断的任务代码;OS_ENTER_CRITICAL(); /进入临界段(关中断) 不可以被中断的任务代码;OS_EXIT_CRITICAL();/退出临界段 (开中断) 可以被中断的任务代码; OSTimeDly(10); ,根据嵌入式系统任务的工
11、作特点,任务的执行代码通常是一个无限循环结构,并且在这个循环中可以响应中断,这种结构也叫超循环结构。,为了有效的对中断进行控制,在任务的代码里可使用UC/OS-II定义的宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来控制何时响应中断,何时屏蔽中断。在运行这两个宏之间的代码时是不会响应中断的,这种受保护的代码段叫临界段。,用户应用程序一般结构(续),void Task1(void *pdata)/ 定义用户任务1 for (;) void Task2(void *pdata) / 定义用户任务2 for (;) void main() OSInit(); / 初
12、始化uC/OS-II OSTaskCreate(Task1,);/ 创建用户任务1 OSTaskCreate(Task2,);/ 创建用户任务2 OSStart();/ 启动任务 ,是一个任务。因此它不是被主函数或其它函数调用的,主函数main()只负责创建和启动它们,而由操作系统负责来调度运行它们。使用函数OSStart()启动任务之后,任务就交由操作系统管理和调度了。,一个具体的应用任务实例 代码,实时操作系统C/OS-II,1,3,2,C/OS-II概述,任务概念,任务调度核心问题分析,多任务操作系统的核心:任务调度。 调度定义:就是通过一个算法在多个任务中确定哪个任务来运行。做这项工作
13、的就是调度器。 调度器的主要工作:一是在任务就绪表中查找具有最高优先级别的就绪任务;二是实现任务的切换。调度算法:可抢占的高优先级调度算法调度条件:它在系统或用户任务调用系统函数及执行中断服务程序结束时来调用调度器,以确定该运行的任务并运行它。 uC/OS-II进行任务调度的依据:任务就绪表。,就绪任务表及任务调度,为了能使系统清楚地知道系统中哪些任务已经就绪,哪些还没有就绪,UC/OS-II在RAM中设立了一个记录表,系统中的每个任务都在这个表占据一个位置,并用这个位置的状态(1或者0)来表示任务是否处于就绪状态。这个表就叫做任务就绪表。,C/OS任务调度器实现及源代码分析,void OSS
14、ched (void) INT8U y; OS_ENTER_CRITICAL(); if (OSLockNesting | OSIntNesting) = 0) y = OSUnMapTblOSRdyGrp; OSPrioHighRdy = (INT8U)(y 3) + OSUnMapTblOSRdyTbly); if (OSPrioHighRdy != OSPrioCur) OSTCBHighRdy=OSTCBPrioTblOSPrioHighRdy; OSCtxSwCtr+; OS_TASK_SW(); OS_EXIT_CRITICAL();,检查是否中断调用和允许任务调用(调度器上锁),
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ucosii实时操作系统分析 任务管理及调度ppt课件 ucosii 实时 操作系统 分析 任务 管理 调度 ppt 课件
链接地址:https://www.31ppt.com/p-1438419.html