第三章11进程描述和状态控制课件.ppt
《第三章11进程描述和状态控制课件.ppt》由会员分享,可在线阅读,更多相关《第三章11进程描述和状态控制课件.ppt(34页珍藏版)》请在三一办公上搜索。
1、2023/4/3,1,第三章 任务管理,3.3 任务同步,3.2 多任务,3.1 任务描述和状态,控制,2023/4/3,2,3.1.1 任务基本概念,从代码上看,uC/OS-II任务就是一个函数uC/OS-II任务有两种:用户任务和系统任务从任务的存储结构上看,uC/OS-II由三部分组成:任务程序代码(函数):任务的执行部分任务堆栈:用来保存任务的工作环境任务控制块:记录任务的各个属性,2023/4/3,3,3.1.2 任务的状态,uC/OS-II中任务有5中状态睡眠状态:任务只是以代码的形式驻留在程序空间(ROM或RAM),还没有交给操作系统管理时的情况叫做睡眠状态。即任务在没有被分配任
2、务控制块或者被剥夺了任务控制块时的状态叫做睡眠状态。就绪状态:如果系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记,则任务就具备了运行的充分条件这时任务的状态叫做就绪状态,2023/4/3,4,运行状态:处于就绪态的任务如果经调度器判断获得了CPU的使用权,进入运行状态。等待状态:正在运行的任务需要等待一段时间或需要等待一个事件发生在运行时,该任务就把CPU的使用权让给其他任务,进入等待状态,2023/4/3,5,中断服务状态:一个正在运行的任务一旦响应中断请求就会中止运行而去执行中断服务程序,这时任务的状态叫做中断服务状态。,2023/4/3,6,状态间的切换,2023/4/3,7,
3、2023/4/3,8,3.1.3 用户任务代码一般结构,无限循环结构void mytask(void*pdata)for(;)可以被中断的用户代码;OS_ENTER_CRITICAL();/进入临界段(关中断)不可以被中断的用户代码;OS_EXIT_CRITICAL();/退出临界段(开中断)可以被中断的用户代码;,2023/4/3,9,OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()是uC/OS-II定义的两个宏。分别封装了关中断代码和开中断代码,2023/4/3,10,用户应用程序一般结构,void Mytask1(void*pdata)/定义用户任务1for(
4、;).void Mytask2(void*pdata)/定义用户任务2for(;).void main().OSInit();/初始化uc/os.OSTaskCreate(Mytask1,.);/创建用户任务1OSTaskCreate(Mytask2,.);/创建用户任务2.OSStart();/启动uc/os,2023/4/3,11,3.1.4 系统任务,uC/OS-II预定义了两个系统任务:空闲任务和统计任务空闲任务是每个应用程序必须使用的统计任务是应用程序可以根据实际需求来选择使用的,2023/4/3,12,1.空闲任务,任务在系统中可以有5种状态,即系统极有可能会在某个时间内无用户任务
5、可运行而处于所谓空闲状态。为了使CPU在没有用户任务可执行时有事可做,uC/OS-II提供了一个叫做空闲任务OSTaskIdle()的系统任务。代码如下:,2023/4/3,13,void OSTask(void*pdata)#if OS_CRITICAL_METHOD=3OS_CPU_SR cpu_sr;#endifpdata=pdata;/防止某些编译器报错for(;)OS_ENTER_CRITICAL();/关闭中断 OSdleCtr+;/计数OS_EXIT_CRITICAL();/开中断,2023/4/3,14,2.统计任务,该任务每秒计算一次CPU在单位时间内被使用的时间,并把计算结
6、果以百分比的形式存放在变量OSCPUsage中,以便其他应用程序了解CPU的利用率。是否使用统计任务,用户可以根据应用程序的实际需求来进行选择。,2023/4/3,15,3.1.4 任务堆栈,为了满足任务切换和响应中断时保存CPU寄存器中的内容及任务调用其他函数时的需要,每个任务都有自己的堆栈所有uC/OS-II任务的控制块中都含有一个指向该任务堆栈的指针,2023/4/3,16,任务堆栈的创建,为了定义任务堆栈的方便,在文件OS_CPU.H中专门定义了一个数据类型OS_STK:typedef unsigned int OS_STK;/该类型长度为16位在定义任务堆栈的栈区时,只要定义一个OS
7、_STK类型的数组即可。如:#define TASK_STK_SIZE 512/定义堆栈长度(1024)OS_STK TaskStkTASK_STK_SIZE/定义数组作为任务堆栈,2023/4/3,17,当调用OSTaskCreate()来创建一个任务时,把数组的指针传递给函数OSTaskCreate()中的堆栈栈顶参数,就可以把数组与任务关联起来而成为该任务的任务堆栈,2023/4/3,18,INT8UOSTaskCreate(void(*task)(void*pd),/指向任务的指针void*pdata,/传递给任务的参数OS_STK*ptos,/任务堆栈栈顶指针INT8U prio/任
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 11 进程 描述 状态 控制 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4093709.html