ucosii实时操作系统分析-任务管理及调度(全)

合集下载

ucosii2实时操作系统介绍

ucosii2实时操作系统介绍

第2-5:uC/OS-II 实时操作系统1目录:2.5.1概述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本章所涉及的操作系统理论知识可参阅各种操作系统教科书,比如《现代操作系统》【美】Andrew S.Tanenbaum著陈向群等译机械工业出版社1999年11月2.5.1概述技术指标uC/OS-II是一个占先式实时多任务操作系统内核,但不支持时间片调度,支持任务间通信,提供了多种对共享资源的访问控制,如禁止切换,调度上锁等。

uC/OS-II的也是一个可剪裁的系统,可以根据需要保留或者删除某些功能,任务数最多可达64个。

下表中给出了2种常用情况下的目标代码大小。

在uC/OS-II中,影响内存大小的数据结构主要包括任务数量,事件控制块数量和任务堆栈大小。

uC/OS-II源代码uC/OS-II的X86版本代码规模约为5000行,包括用于应用任务的例子代码和辅助代码,核心代码约3500行,分布在17 个文件中【详见附录1】。

任务状态uC/OS-II的任务一般会处于以下6状态之一,1.运行态2.就绪态3.等待信号量4.等待邮箱消息5.等待消息队列消息6.挂起在某一时刻,系统中只会有一个任务处于“运行态”,处于其他各种状态的任务数量没有限制,“挂起态”的进入是任务主动进行的,其他状态一般由各种外部因素造成。

只有处于“就绪态”的任务才可能成为下个要执行的任务。

任务切换过程和优先级别算法uC/OS-II不支持时间片调度切换,而仅仅提供按任务优先级别的切换,提供了2种任务切换方式,主动切换和被动切换,前者是应用任务通过调用系统函数自动将自己挂起,后者是操作系统根据当前任务运行情况,将正在运行的任务强制挂起,从而切换到另一个任务执行。

第九讲 uCOS-II嵌入式实时操作系统

第九讲 uCOS-II嵌入式实时操作系统

第九讲 第九讲 系统函数 uC/OS-II 嵌入式实时操作系统
1、uC/OS-II简介 2、系统函数 3、任务组成 4、任务管理 5、时钟和中断 6、内存管理 7、移植方法 8、移植实例
9.2 9.2.1 总体组成 uC/OS-II的系统函数
1)uC/OS-II的组成: 与处理器无关的代码; 与
9.1 uC/OS-II 简介 9.1.3 应用范围
3)uC/OS-II的应用范围 • uC/OS已经移植到了很多CPU上,例如:
AnalogDevices的AD21xx; ARM的ARM7/ ARM9等; Hitachi的64180、H8/3xx和SH系列; Intel的80x86、Pentium、PentiumII、 8051、8052、MCS-251、80196等; Motorola的PowerPC、68K、CPU32、 ColdFire、M.Core、68HC系列; Siemens的80C166和TriCore; TexasInstruments的TMS320等;
9.3 9.3.1 任务组成 uC/OS-II的任务组成
1) 任务组成
9.3 9.3.2 任务状态 uC/OS-II的任务组成
2) 任务的状态:睡眠、就绪、运行、等 待和中断服务5种状态。
9.3 uC/OS-II的任务组成 9.3.3 任务优先级
3)任务的优先级 uC/OS-II 按硬件实时任务的可剥夺型 内核来设计的,因此每个任务必须要有一 个唯一的优先级,用于表明该任务在抢夺 微处理器时所具有的优先权。 uC/OS-II规定应用程序最多包含64个 任务,即最多64个优先级。
9.2 9.2.1 应用相关 uC/OS-II的系统函数
2)应用程序有关的部分 • OS_CFG.H: 配置文件

_C_OS_II的实时性任务调度分析

_C_OS_II的实时性任务调度分析

操作系统的实时性主要体现在: 当优先级高的任 务要求工作时, 操作系统要以尽快的时间将此任务调 度到 CPU 执行。这里所花费的时间主要包括两部分: 查找最高优先级任务和任务切换[ 1 ]。 其中, 任务切换 ( 即 CPU 寄存器内容切换) 时间是和处理器相关的, 因此本文只分析 Λ C O S 2II 的任务调度算法是如何查 找最高优先级任务的。
3 2009208209 收到, 2009209230 改回 3 3 郑恭明, 男, 1980 年生, 讲师, 研究方向: 信号处理、 嵌入式及 EDA 技术与应用的教学和研究。
图 1 Λ C O S 2II 的任务就绪表
当 O SR dyT b l [ 0 ] 中 的 任 何 一 位 是 1 时, O SR dyG rp 的第 0 位置 1; 当 O SR dyT b l[ 1 ] 中的任何 一位是 1 时, O SR dyG rp 的第 1 位置 1; 当 O SR dyT b l [2 ] 中的任何一位是 1 时, O SR dyG rp 的第 2 位置 1; 当 O SR dyT b l[ 3 ] 中的任何一位是 1 时, O SR dyG rp 的
・6・ ( 总 854)
文章编号: 100325850 ( 2009) 1120006202
Λ C O S 2II 的实时性任务调度分析
2009 年
Ana lys is of Rea l- T i m e Ta sk Schedul ing of Λ C O S- II
郑恭明
( 长江大学电子信息学院 湖北荆州 434023)
I N T 8U con stO SU nM ap T b l[ 256 ]= { 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x00to 0x0F 3 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x10to 0x1F 3 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x20to 0x2F 3 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x30to 0x3F 3 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x40to 0x4F 3 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x50to 0x5F 3 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 3 0x60to 0x6F 3

ucOSII实时操作系统共41页

ucOSII实时操作系统共41页

面向二十一世纪的嵌入式系统设计技术第五讲:ucOS/II 实时操作系统RTOS(一):ucOS/II2002 年 1 月任课教员:徐欣主讲教员:习勇国防科大电子科学与工程学院嵌入式系统开放研究小组博士博士1What is uC/OS? u: Micro C:controluC/OS : 适合于小的、控制器的操作系统小巧公开源代码,详细的注解可剥夺实时内核可移植性强多任务确定性2002/112美国人The Story of uC/OSJean Labrosse 1992 年编写的商业软件的昂贵应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等1998 年uC/OS-II ,目前的版本uCOS-II2002/11uC/OS-II V2.513嵌入式操作系统—uC/OS概要内核结构- 任务以及调度机制任务间通信uC/OS 的移植在PC 机上运行uC/OS2002/114—uC/OS任务task嵌入式操作系统典型的一个无限循环。

void mytask(void *pdata)for (;;) {do something;waiting;do something;支持64 个任务,每个任务一个特定的优先级。

优先级越高,数字越小系统占用了两个任务,空闲任务和统计任务。

2002/115嵌入式操作系统—uC/OS任务的数据结构—任务控制块任务控制块OS_tcb ,包括任务堆栈指针,状态,优先级,任务表位置,任务链表指针等。

所有的任务控制块分为两条链表,空闲链表和使用链表。

新任务TCB(1) TCB0 TCB1next pre(2)(3)OSTCBFreeList图4.3TCB的双向链表结构TCBn空2002/116任务控制块结构嵌入式操作系统—uC/OSStruct os_tcb {OS_STK*OSTCBStkPtr;struct os_tcb*OSTCBNext;struct os_tcb*OSTCBprev;OS_EVENT *OSTCBEventPtr;void *OSTCBMsg;INT16U OSTCBDly;INT8U OSTCBStat;INT8U OSTCBPrio;INT8U OSTCBX, OSTCBY, OSTCBBitX, OSTCBBitY; } OS_TCB2002/117任务的状态OSTCBStat运行,就绪,等待,挂起OSTCBStat低四位挂起队列邮箱信号量可以有多个准备就绪的任务,但一个时刻只有一个任务可以运行,OSHighRdy2002/118任务的调度--OSScheduC/OS 是占先式实时多任务内核,优先级最高的任务一旦准备就绪,则拥有所有权开始投入运行。

ucosii实时操作系统分析-任务管理及调度精品PPT课件

ucosii实时操作系统分析-任务管理及调度精品PPT课件
(48页例2-8) 10、用信号量实现任务间同步和互斥示例程序演示--0.9(可选)
(119页例4-4,122页例4-5) 11、用消息邮箱实现任务间通信示例程序演示--0.9(可选)(136页例4-8) 3
实时操作系统C/OБайду номын сангаас-II
1 C/OS-II概述 2 任务概念 3 任务调度核心问题分析
4
C/OS简介
美国人Jean Labrosse 1992年完成 应用面覆盖了诸多领域,如照相机、医疗器械、音
响设备、发动机控制、高速公路电话系统、自动提 款机等 1998年C/OS-II,目前的版本C/OS -II V2.61 ,2.72 2000年,得到美国航空管理局(FAA)的认证, 可以用于飞行器中 网站()
( 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(可选)
任务控制块是一个数据结构,保存该任务的相关参数,包括任务 堆栈指针,任务的当前状态,任务的优先级等。
任务CPU使用权被剥夺时,TCB保存该时刻任务状态;任务重新得 到CPU控制权时,TCB确保任务从当时被中断的那一点丝毫不差地 继续执行。
OS_TCB全部驻留在RAM中。
任务控制块就相当于一个任务的身份证,没 有任务控制块的任务是不能被系统承认和管 理的。
µC/OS-II操作系统中进程调 度模块分析
1
1、课程任务:
背景
分析µC/OS-II操作系统中的进程调度模块的源代码

μCOS-II 实时操作系统

μCOS-II 实时操作系统

μC/OS是一个特殊风格的嵌入式操作系统,它有多个版本,可以适应从x86到8051的各种不同类型不同规模的嵌入式系统,原先代码开放,但某些改进版本,代码不开放。

1、μC/OS-II 的特点可移植性:绝大部分μC/OS的源码是用移植性很强的ANSI C写的,和微处理器硬件相关的那部分是用汇编语言写的,汇编语言写的部分已经压到最低限度。

可固化:μC/OS是为嵌入式应用而设计的,用户可以通过固化手段将μC/OS 嵌入到产品中成为产品的一部分。

可裁减:μC/OS系统由多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这样,通过目标模块之间的按需组合,可以减少产品中的μC/OS所需的存储空间,这种裁减性是靠条件编译实现的。

占先式:μC/OS完全是占先式的实时内核,即μC/OS总是运行就绪条件下优先级最高的任务。

多任务:μC/OS可以管理64个任务,每个任务的优先级必须是不同的,其中系统占用8个,应用程序最多可以有56个任务。

可确定性:全部μC/OS的函数调用与服务的执行时间是可知的,即μC/OS系统服务的执行时间不依赖于应用程序任务的多少。

任务栈:μC/OS允许每个任务有不同的堆栈空间,以便压低应用程序对RAM 的需求。

系统服务:μC/OS有多个相对独立的、短小精炼的目标模块组成,这些模块有:任务管理、时间管理、任务间的通信与同步、内存管理。

其中:任务管理提供建立任务、删除任务、请求删除任务、任务的堆栈检查、改变任务的优先级、挂起任务、恢复任务和任务信息查询的系统调用;时间管理提供任务延时、取消任务延时和查询系统时间的系统调用;任务间通信与同步提供基于信号量、邮箱和消息队列机制的系统调用;内存管理提供内存分区的建立、分配、释放和查询的系统调用。

中断管理:中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达255层。

UC-OS-II内核调度分析

UC-OS-II内核调度分析

UC/OS-II内核调度分析一.内核概述:多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。

内核提供的基本服务是任务切换。

之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。

内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核本身的数据结构增加了RAM的用量。

但更主要的是,每个任务要有自己的栈空间,这一块吃起内存来是相当厉害的。

内核本身对CPU的占用时间一般在2到5个百分点之间。

UC/OS-II有一个精巧的内核调度算法,实时内核精小,执行效率高,算法巧妙,代码空间很少。

二.UC/OS-II内核调度特点:1.只支持基于优先级的抢占式调度算法,不支持时间片轮训;2.64个优先级,只能创建64个任务,用户只能创建56个任务;3.每个任务优先级都不相同。

4.不支持优先级逆转;5.READY队列通过内存映射表实现快速查询。

效率非常高;6.支持时钟节拍;7.支持信号量,消息队列,事件控制块,事件标志组,消息邮箱任务通讯机制;8.支持中断嵌套,中断嵌套层数可达255层,中断使用当前任务的堆栈保存上下文;9.每个任务有自己的堆栈,堆栈大小用户自己设定;10.支持动态修改任务优先级;11.任务TCB为静态数组,建立任务只是从中获得一个TCB,不用动态分配,释放内存;12.任务堆栈为用户静态或者动态创建,在任务创建外完成,任务创建本身不进行动态内存分配;13.任务的总个数(OS_MAX_TASKS)由用户决定;14.0优先级最高,63优先级最低;15.有一个优先级最低的空闲任务,在没有用户任务运行的时候运行.三.任务控制块OS_TCB描述:UC/OS-II的TCB数据结构简单,内容容易理解,保存最基本的任务信息,同时还支持裁减来减小内存消耗,TCB是事先根据用户配置,静态分配内存的结构数组,通过优先级序号进行添加,查找,删除等功能。

嵌入式实时操作系统uCOS-II原理(课件PPT) μCOS-II中的任务管理

嵌入式实时操作系统uCOS-II原理(课件PPT) μCOS-II中的任务管理
1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 2
1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 3
1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 4
1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0
5 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0

prio=29 0 0 0 1 1 1 0 1
y = OSUnM图5a-6p在T就bl绪[O表S中R查d找yG最高rp优];先级别任务的过程 prio = (INT8U)((y << 3)
任当务控应制用块结程构序的主调要用成员函数OSTaskCreate( )
任务及控任制务块控(O制S_块TC链B)表 t…y创统进任务控这表…pOssIII数具链的表…ettNNNrrd…S建函行务控制个的TTTuue任_会有接任。fcc188Stts任 任 制 认6UU务T一数初从制块任头μ栈务理控tooUr当由按相为务即Kuss控__c个始空块各务部O务务块和ttt制*C指有的制cc进于用应一,相oSObbOOOs/块任化任,个控T_S**SSS控的的管行这户数个故当tT优针关O块OOC链TTTcbCSS务。务然成制BCCCS表系 些提量链这于BTT{BBBI制 身 任理先、 的-SCCDSP时这控后员块ntIBBtr统任供的表个是kliayi块 份 务的NPPot级任 属I;,个制用进链t;r;te初务的任。链一re用x///;vt///就 证 是这函块任行入(任任任/;;别务 性//始控任务表些指///指务务务来指个数链务赋到)向相 , 不等的 的向化制务控叫空等的的向来任记函首表的值任后待当优前时块数制做白当 没 能务为一当 表一的前先一空数先获属,务堆录个,还为块空的时状级个任任于 有 被栈些前 就会为取性最控任限态别任务初没系并任身任栈务务标(务是 任 系控与状 叫调 被 一 对后 制顶控始有统 把务份志节控控制务的用创个任再块制拍一务统制任态做块化对创它块证指制块数块的链系建任务把链针个控承的函应建们链。)务任、的块表指堆指管任务针针
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档