RTOS实时操作系统——UCOSIII简介

        一、实时操作系统概念:

        (实时操作系统(Real Time Operating System,简称RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制 生产过程 或对处理系统做出 快速响应 ,调度一切可利用的资源完成 实时任务 ,并控制所有实时任务协调一致运行的操作系统):相对于裸机而言能创建多个相同优先级,以及设置相同时间片同时快速处理多线程独立的任务, 高优先级能立即执行并且充分利用已有资源。

        二、实时操作系统特点比较:

裸机:裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序。

裸机特点:(1)实时性差(应用程序轮流执行)

                  (2)delay(空等待,浪费资源)

                  (3)结构臃肿(都在无限循环中进行)

RTOS特点:RTOS全称为Real Time OS,意为实时操作系统,强调实时性。

(1)分而治之(实现功能划分为多个任务)

(2)延时函数(任务调度)

(3)抢占式(高优先级抢占低优先级)

(4)任务堆栈(每个任务都有自己的栈空间)  

三、实时系统分类

1、强实时

        在航空航天等一些关键领域中,应用时间需求应能够得到完全满足,否则就造成如飞机失事等重大的安全事故,造成重大生命财产损失和生态破坏。在这类系统的设计和实现过程中,应采用各种分析、模拟及形式化验证方法对系统进行严格的检验,以保证在各种情况下应用的时间需求和功能需求都能得到满足。

2、弱实时

        某些应用虽然提出了时间需求,但实时任务偶尔违反这种需求对系统的运行以及环境不会造成严重影响,如视频点播系统、信息采集与检索系统就是典型的弱实时系统。在VOD系统中,系统只需保证绝大多数情况下视频数据能够及时传输给用户即可,偶尔的数据传输延迟对用户不会造成很大影响。

四、UCOSIII简介

1.UCOSIII是一个可裁剪,可剥夺的多任务系统,没有任务数目的限制,是UCOS的第三代内核操作系统。

2.为什么要选择UCOSIII:

        2.1稳定、可靠 UCOIII是经过了多种安全认证加持的,包括航空、工业控制、医疗、汽车等等多领域的安全认证。

        2.2uC/OS-I1官方提供了十分完善的资料,共有数十个文档资料。

        2.3支持系列广,支持多种不同架构的不同型号的处理器,如: ST. NXP、Xilinx. Infineon等

        2.4移植简单C语言编写简单易用, 可移植性非常好

三代UCOS比较:

3.相关名词解释:

        任务调度:使用相关的调度算法来决定当前需要执行的哪个任务

        UCOSIII调度方式:

        (1)抢占式调度:主要针对优先级不同的任务,每一个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务。

        在UCOSIII中任务优先级数值越小,优先级越高,在抢占式调度下,会随时间抢占上一优先级相对低的任务而执行下一高优先级任务,当高优先级任务被挂起时,会让剩下最高优先级运行,保证资源的充分利用。

        即:1.高优先级任务,优先执行

                2.高优先级任务不停止,低优先级任务无法执行

                3.被抢占的任务将会进入就绪态

        (2)时间片调度:主要针对优先级相同的任务,当多个任务的优先级相同且就绪时,任务调度器就会根据用户所设置的时间片轮流地运行这些任务。

        (时间片:以一次系统时钟节拍为单位的,UCOSIII默认设置任务时间片为100,则其在任务运行100次系统时钟节拍的时间后,切换到另一个相同任务优先级的任务中运行)

        任务均为同等优先级,时间片默认均设置为100ms(可设置不同),被挂起时会立即切换到下一任务。

即:1.同等优先级人物,轮流执行,时间片流转

        2.一个时间片大小,取决为滴答定时器中断频率

        3.每个人物都可以定义自身的时间片长度

        4.被挂起没有用完的时间片不会继续使用

        UCOSIII5种任务状态:

1.运行态 

        正在执行的任务,该任务就处于运行态,注意在STM32中,同一时间仅一个任务处于运行

2.就绪态

        如果该任务已经能够被执行,但当前还未被执行,那么该任务处于就绪态

3.挂起态

        如果一个运行态的任务因延时或等待某一事件 发生时被挂起,那么这个任务就处于挂起态

4.休眠态

        任务已经在CPU的内存中了(任务被删除了),但是还没有交给UCOSIII内核管理

5.中断态

        当处于运行态的任务被中断打断,CPU跳转去执行中断服务函数时,原本属于运行态的任务,会切换到中断态,直到中断结束,在切换回运行态继续运行。


总结:

1、 被创建的任务,初始状态均为就绪态
2、 被删除的任务,会转为休眠态
3、 仅就绪态和中断态可转变成运行态
4、 其他状态的任务想运行,必须先转变成就绪态

UCO-1主要有三大类列表用来跟踪任务状态:
1.就绪列表

        准备运行的任务将放在就绪列表: 0SRdyList[x],其中x代表任
务优先级数值。(当某个位置一时,代表所对应的优先级就绪列表有任务存在)

2.Tick列表

        正在等待延时超时或挂起的对象超时的任务,将放在OSTickList。

3.挂起列表

        当任务等待信号量、事件时,任务将放置在挂起列表PendList。
 

        

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
关于UCOSII实时操作系统 第一讲 初识uCOSII 4 1、uCOSII单任务实验: 4 2、uCOSII多任务实验: 6 3、任务状态之间的转换: 9 4、空闲任务和统计任务简介: 9 5、任务的三要件: 9 程序代码、私有堆栈、任务控制块 9 6、任务控制块TCB(P80) 9 7、创建任务 9 8、任务的栈空间 10 9、栈的增长方向: 10 第二讲 调度运行机制 11 1、任务挂起和恢复 11 2、任务挂起、恢复的状态转换 13 3、时钟节拍ISR 15 4、时钟节拍函数OSTimtick() 16 5、延时系统调用 16 第三讲 任务管理uCOSII 17 1、任务删除 17 2、任务请求删除实验 19 3、在源码中增加打印信息一般步骤 24 4、OSTaskDelReq()函数理解流程图 25 第四讲 互斥性信号量管理 26 1、优先级反转 26 2、信号量SEM使用 26 3、互斥信号量Mutux使用 29 4、关于信号量程序分析 32 5、关于互斥信号量分析 32 6、OSMutexPend()函数流程图 33 7、OSMutexPost()函数流程图 33 第五讲 消息邮箱 34 1、基本概念 34 2、对于OSMboxPend()理解 34 3、对于OSMboxPost()理解 34 4、消息邮箱管理一般程序 35 5、使用OSMboxQuery() 38 6、OSMboxPend()函数Timeout等待超时程序 38 7、OSMboxPost()函数邮箱状态为FUll程序 40 8、关于OSTimeTickHook(void)使用 41 第六讲 信号量集 43 1、信号量集案例 43 2、OSFlagPend()源码 46 3、OSFlagPost()源码 51 第七讲 动态内存 54 1、内存管理基本概念 54 2、内存管理基本概念 54 3、内存管理案例 54 4、案例分析 69 5、教学案例: 71
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真寻460

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值