一、实时操作系统概念:
(实时操作系统(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。