ucosii2实时操作系统介绍

ucosii2实时操作系统介绍

ID:41785544

大小:351.29 KB

页数:32页

时间:2019-09-02

ucosii2实时操作系统介绍_第1页
ucosii2实时操作系统介绍_第2页
ucosii2实时操作系统介绍_第3页
ucosii2实时操作系统介绍_第4页
ucosii2实时操作系统介绍_第5页
资源描述:

《ucosii2实时操作系统介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第2-5:uC/OS-II实时操作系统i目录:2.5」概述2.5.2任务栈切换方法2.5.3优先级別算法2.5.4任务通信一使用邮箱2.5.5任务通信一使用消息队列2.5.6对共享资源的互斥访问控制与信号(semaphore)2.5.7任务同步与信号(signal)2.5.8内存分配方法2.5.8缺陷与改进(1:任务调度问题,2:通信问题:任务通信模型与uC/OS-II通信机制的缺陷)附录1:uC/OS-II文件列表附录2:相关函数列表附录3:主要变量和数据类型列表1本章所涉及的操作系统理论知识可参阅

2、各种操作系统教科书,比如《现代操作系统》【美】AndrewS.Tancnbaum著陈向群等译机械工业出版社1999年11月2.5.1概述技术指标uC/OS-II是一个占先式实时多任务操作系统内核,但不支持时间片调度,支持任务间通信,提供了多种对共亨资源的访问控制,如禁止切换,调度上锁等。uC/OS-II的也是一个可剪裁的系统,可以根据需要保留或者删除某些功能,任务数最多可达64个。下表中给出了2种常用情况下的目标代码大小。序号目标码(程序+数据)任务数邮箱消息队列信号量任务栈大小18K+6K62551

3、51225K+4K160101512注:该表数据是根据《uC/OS-II表9.2综合得到的.-源码公开的实时嵌入式操作系统》书中p229,p230的衣9.1和通过改变OS_CFG.H文件中的各种配制,可以取消或者保留某些功能,并R改变某些数据结构的大小,在uC/OS-II屮,影响内存人小的数据结构主要包括任务数最,事件控制块数最和任务堆栈人小。uC/OS-II源代码uC/OS-II的X86版本代码规模约为5000行,包括用于应用任务的例子代码和辅助代码,核心代码约350()行,分布在17个文件中【详见

4、附录1】。任务状态uC/OS-II的任务一般会处于以卜6状态之一,1.运行态2.就绪态3.等待信号量4.等待邮箱消息5.等待消息队列消息6.挂起在某一时刻,系统中只会有一个任务处于“运行态”,处于其他各种状态的任务数量没有限制,“挂起态”的进入是任务主动进行的,其他状态一般由各种外部因素造成C只冇处于“就绪态”的任务才可能成为卜-个要执行的任务。任务切换过程和优先级别算法uC/OS-II不支持时间片调度切换,而仅仅提供按任务优先级别的切换,提供了2种任务切换方式,主动切换和被动切换,前者是应用任务通过

5、调用系统函数自动将自己挂起,后者是操作系统根据当前任务运行情况,将正在运行的任务强制挂起,从而切换到另一个任务执行。被动切换对于任务來说是不可预知的,因此可能发生在任意代码位置。uC/OS-II的任务优先级别一般采用常量定义,实际上属于静态优先级別,即在任务运行过程中,系统不改变任务的优先级别,但提供了一个优先级别改变的接口函数,用户任务可以通过调用该函数来修改H身或者其他任务的优先级别。由于uC/OS-II不支持时间片调度,因此如果一个任务函数代码中包含无限循环代码的话,其他低优先级别得任务将永远得

6、不到调度。对于高优先级别任务,也可能得不到执行。任务之间的数据传递在uC/OS-II中,提供了邮箱和消息队列2种方式来满足任务Z间的数据传递,在使用邮箱时,如果收信任务没有将数据取走,就无法传送下个消息,而一个消息队列方式实际上和当与多个邮箱,因此可以连续传送多条消息。共享资源访问控制uC/OS-II'

7、>nJ*以使用禁止调度、设置信号量来保证共享资源访问的排它性。系统的信号量数量由事件控制块数量决定。任务同步如果一个任务需要立即切换到另外一个指定任务,可以通过设置信号量来实现。在uC/OS-II屮,

8、实现任务间同步运行需要较为较为负责的处理。uC/OS-II的使用问题uC/OS-II只是一个任务调度内核,没冇用于某个特定硬件环境的I/O系统,例如TCP/IP协议栈、图形GUI等,需要另外开发。此外,uC/OS-II上也不能使用磁盘或者flash存储器的文件系统,不支持中文显示和中文输入接口,在uC/OS-II上开发应用产品任然需要做人量工作。2.5.2调度过程:任务栈切换方法任务栈的定义与赋初值uC/OS-II是采用独立任务栈的切换方法,给每个任务分配一个任务栈数纽,比如在例子1中exll.c文件

9、中定义的“TaskStk[][]”变量,在切换时将处理器的堆栈指针SP指向该数组,从而实现任务切换。任务栈数组(如“TaskStk[0][]”)在系统初始化吋被赋了每个任务控制块(OS_TCB)的“OS_STK*OSTCBStkPtr”变虽,这个赋值过由函数:TaskStart()->OSTaskCerat()->OSTaskStkInit()—>OSTCBinit()的依次执行完成,具体过程见【表1】:表格1:任务栈的初始化过程步骤文件函数名堆栈变量传

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。