ucosii任务管理及调度

上传人:ji****72 文档编号:50742333 上传时间:2018-08-10 格式:PPT 页数:170 大小:2.17MB
返回 下载 相关 举报
ucosii任务管理及调度_第1页
第1页 / 共170页
ucosii任务管理及调度_第2页
第2页 / 共170页
ucosii任务管理及调度_第3页
第3页 / 共170页
ucosii任务管理及调度_第4页
第4页 / 共170页
ucosii任务管理及调度_第5页
第5页 / 共170页
点击查看更多>>
资源描述

《ucosii任务管理及调度》由会员分享,可在线阅读,更多相关《ucosii任务管理及调度(170页珍藏版)》请在金锄头文库上搜索。

1、1实时操作系统C/OS-II1 13 32 24 4C/OS-II概述任务管理中断和时间管理任务之间的通信与同步5 5存储管理2通用操作系统和嵌入式(实时)操作系统l通用操作系统:Windows/NT/XP、Linux、UNIX等,用于PC机 、服务器,l嵌入式(实时)操作系统:用于嵌入式设备的操作系统,具有通 用操作系统的基本特点,又具有系统实时性、硬件的相关依赖性 、软件固态化以及应用的专用性等特点;l嵌入式(实时)操作系统通常包括与硬件相关的底层驱动软件、 系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器 Browser等;l嵌入式(实时)操作系统的重要指标:实时性(中断响应时间

2、、 任务切换时间等)、尺寸(可裁剪性 )、可扩展性(内核、中间 件);3嵌入式操作系统的发展操作系统内核应用程序驱动程序和固件操作系统内核文件系统驱动程序和固件API GUI应用程序操作系统内核文件系统驱动程序和固件API GUI应用程序通信协议库函数80年代初期80年代中期-90年代中 期90年代末期-21世纪4常见的嵌入式操作系统实时嵌入式操作系统的种类繁多,大体上可分为两 种,商用型和免费型。l商用型的实操作系统功能稳定、可靠,有完善的技 术支持和售后服务,但往往价格昂贵,如Vxworks、 QNX、WinCE、Palm OS等。l免费型的实时操作系统在价格方面具有优势,目前 主要有Li

3、nux,C/OS是一种源码开放的商业RTOS;C/OS是商业操作 系统5学习嵌入式操作系统l学习一种实时操作系统RTOS,如uc/OS,掌握实时系 统的概念和设计方法;l嵌入式系统以应用为中心,应用时选择“适用”的 操作系统;l嵌入式Linux;l自己“写”RTOS一种学习态度;6C/OS-II的层次示意图l基于C/OS-II 的嵌入式系统 软件层次示意 图如右图所示7RTOS在嵌入式系统中的位置嵌入式硬件平台BSPKERNELFSTCP/IP设备驱动设备I/O调试工具其它组件应用RTOSC/C+8C/OS简介1、C/OSMicro Controller O S,微控制器操作系统2、 C/OS

4、简介l美国人Jean Labrosse 1992年完成l应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、 发动机控制、高速公路电话系统、自动提款机等 l1998年C/OS-II,目前的版本C/OS -II V2.61,2.72l2000年,得到美国航空管理局(FAA)的认证,可以用于飞行 器中l网站www.ucos-II.com()9u公开源代码u可移植性(Portable)绝大部分 C/OS-II的源码是用移植性很强的ANSI C写的。和微处理器 硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最 低限度,使得 C/OS-II便于移植到其他微处理器上。 C/OS-II可以在 绝

5、大多数8位、16位、32位以至64位微处理器、微控制器 、数字信号处 理器(DSP)上运行。u可固化(ROMable) C/OS-II是为嵌入式应用而设计的,这就意味着,只要读者有固化手 段(C编译、连接、下载和固化), C/OS-II可以嵌入到读者的产品 中成为产品的一部分。u可裁剪(Scalable)可以只使用 C/OS-II中应用程序需要的那些系统服务。也就是说某产 品可以只使用很少几个 C/OS-II调用,而另一个产品则使用了几乎所 有 C/OS-II的功能,这样可以减少产品中的 C/OS-II所需的存储器空 间(RAM和ROM)。这种可剪裁性是靠条件编译实现的。C/OS的性能特点(一

6、)10u占先式(Preemptive)u多任务C/OS-II可以管理64个任务,然而,目前这一版本保留8个给系统。应用程序最 多可以有256个任务u可确定性 全部 C/OS-II的函数调用与服务的执行时间具有可确定性。u任务栈每个任务有自己单独的栈, C/OS-II允许每个任务有不同的栈空间,以便压低 应用程序对RAM的需求。u系统服务C/OS-II提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存 的申请与释放、时间相关函数等。u中断管理中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则 高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。u

7、稳定性与可靠性C/OS的性能特点(二)11C/OS-II图书l描述了C/OS-II内部的工作原理l随书的CD中包含了源代码n工业界最清晰的源代码l除英文版外,有中文和韩文版ChineseKoreanEnglishISBN 1-57820-103-9 美国CMP BOOK ISBN 7-81077-290-2 北京航空航天大学出版社ISBN 89-951540-5-512C/OS-II的各种商业应用l全世界有数百种产品在应用:lAvionicslMedicallCell phoneslRouters and switcheslHigh-end audio equipmentlWashing ma

8、chines and dryerslUPS (Uninterruptible Power Supplies)lIndustrial controllerslGPS Navigation SystemslMicrowave RadioslInstrumentationlPoint-of-sale terminalsl更多13C/OS-II提供的系统服务l信号量l带互斥机制的信号量n减少优先级倒置的问题l事件标志l消息信箱l消息队列l内存管理l时钟管理l任务管理14C/GUI and C/FSlC/GUIl嵌入式的用户界面l用ANSI C书写l支持任何8, 16, 32-bits CPUl彩色,灰

9、、度,等级或黑白显示l代码尺寸小lC/FSl嵌入式的文件系统Written in ANSI Cl用ANSI C书写l支持任何8, 16, 32-bits CPUl支持SMC, MMC, SD, CF, IDE, Flash, RAM其他介质15可移植的数据类型typedef unsigned char BOOLEAN;typedef unsigned char INT8U;typedef signed char INT8S;typedef unsigned int INT16U;typedef signed int INT16S;typedef unsigned long INT32U;typ

10、edef signed long INT32S;typedef float FP32;typedef double FP64;16C/OS-II的文件结构171 13 32 24 4C/OS-II概述任务和任务管理中断和时间管理任务之间的通信与同步5 5存储管理18任务的实现创建任务的系统服务lOSTaskCreate()INT8U OSTaskCreate ( void (*task)(void *pd), /任务代码指针 void *pdata, /任务参数指针 OS_STK *ptos, /任务栈的栈顶指针 INT8U prio /任务的优先级 );lOSTaskCreateExt()提

11、问:C/OS-II中的任务是进程还是线程?19任务主函数一个任务通常是一个无限循环(返回值类型void)void MyTask(void *pdata)while (1) do something;waiting;do something;Why?20任务也可以自我删除(并非真的删除,只是内核不 再知道该任务)void MyTask (void *pdata)/* 用户代码 */OSTaskDel(OS_PRIO_SELF);21lC/OS-可以管理多达64个任务;l每个任务被赋以不同的优先级,取值从0到 OS_LOWEST_PRIO-2,数值越小,优先级越高;l系统保留了优先级为0、1、2、

12、3、 OS_LOWEST_PRIO-3、OS_LOWEST_PRI0-2, OS_LOWEST_PRI0-1以及OS_LOWEST_PRI0这8个任务 以被将来使用,用户可以有56个应用任务;l任务的优先级同样也是它的标识号ID。OS_CFG.H 中定义6322空闲任务和统计任务l内核总是创建一个空闲任务OSTaskIdle();w总是设置为最低优先级,OS_LOWEST_PRIOR;w当所有其他任务都未在执行时,空闲任务开始 执行;w应用程序不能删除该任务;w空闲任务的工作就是把32位计数器OSIdleCtr加 1,该计数器被统计任务所使用;l统计任务OSTaskStat(),提供运行时间统

13、计。每 秒钟运行一次,计算当前的CPU利用率。其优先级 是OS_LOWEST_PRIOR-1,可选。23任务控制块TCB 任务控制块 OS_TCB是描述一个任务的核 心数据结构,存放了它的各种管理信息 ,包括任务堆栈指针,任务的状态、优 先级,任务链表指针等; 一旦任务建立了,任务控制块OS_TCB将 被赋值。24任务控制块TCBtypedef struct os_tcb 栈栈指针针;INT16U OSTCBId; /*任务务的ID*/链链表指针针;OS_EVENT *OSTCBEventPtr; /*事件指针针*/void *OSTCBMsg; /*消息指针针*/INT8U OSTCBSta

14、t; /*任务务的状态态*/INT8U OSTCBPrio; /*任务务的优优先级级 */其他 OS_TCB;25栈指针 OSTCBStkPtr:指向当前任务栈顶的指针 ,每个任务可以有自己的栈,栈的容量可 以是任意的; OSTCBStkBottom:指向任务栈底的指针; OSTCBStkSize:栈的容量,用可容纳的指 针数目而不是字节数(Byte)来表示。2627链表指针 所有的任务控制块分属于两条不同的链表 ,单向的空闲链表(头指针为 OSTCBFreeList)和双向的使用链表(头 指针为OSTCBList); OSTCBNext、OSTCBPrev:用于将任务控制 块插入到空闲链表或

15、使用链表中。每个任 务的任务控制块在任务创建的时候被链接 到使用链表中,在任务删除的时候从链表 中被删除。双向连接的链表使得任一成员 都能快速插入或删除。28空闲TCB链表 所有的任务控制块都被放置在任务控制块列表数组 OSTCBTbl中,系统初始化时,所有TCB被链接成空闲的 单向链表,头指针为OSTCBFreeList。当创建一个任务后, 就把OSTCBFreeList所指向的TCB赋给了该任务,并将它加 入到使用链表中,然后把OSTCBFreeList指向空闲链表中的 下一个结点。29系统初始化后指针数组,指向相应TCB30任务的状态休眠l休眠状态(Dormant):任务存在于内存 空间

16、中,但内核不可见;l可以通过以下函数通知内核,使之变为就 绪状态:OSTaskCreate()或OSTaskCreateExt()l可以通过以下函数返回到休眠状态:OSTaskDel() 31任务的状态就绪l就绪状态(Ready):万事具备,只欠 CPU;l在所有的就绪任务当中,具有最高优先级 的任务被选中去运行;l如果任务在运行的时候被抢占了CPU(任务 被中断时才可能被抢占),则又回到就绪状 态。32任务的状态运行l运行状态(Running):任务在CPU上运 行;l当一个任务在运行时,如果没有关闭中断 ,则有可能被中断所打断;l当一个任务在运行时,可能因为各种原因 进入阻塞状态。OSMBoxPend(),OSQPend(),OSSemPend() OSTaskSuspend(), OSTimeDly()33

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号