【Free RTOS简介】

free rtos学习笔记之整体简介

简介

free rtos实际上是分为两个部分,即freertos,其中free是免费的意思,rtos(Real Time Operating System)则是实时操作系统的意思,连在一起是,这个实时操作系统是开源的,能够免费使用。

那么什么是实时操作系统呢
如果操作系统能使计算机系统及时的响应外部事件请求,并能控制所有实时设备和实时任务协调运行,且能在一个规定的时间内完成对事件的处理,那么这种系统就称为实时操作系统(RTOS)。

FreeRTOS 又能够为我们提供什么功能,或者说我们用它能够干什么呢
FreeRTOS 提供的功能包括:任务管理时间管理信号量消息队列内存管理记录功能等,可基本满足较小系统的需要。FreeRTOS 内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU 总是让处于就绪态的、优先级最高的任务先运行。FreeRT0S 内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU 的使用时间。

任务管理

在FreeRTOS 中,每个执行线程都被称为”任务”即该线程要做的事情,类似于上级给下级分活,每个活就是一个任务。

应用程序可以包含多个任务。如果运行应用程序的微控制器只有一个核(core),那么在任意给定时间,实际上只会有一个任务被执行。这就意味着一个任务可以有一个或两个状态,即运行状态和非运行状态,实际上非运行状态又分为阻塞态、挂起态和就绪态。下面是对几个状态的解释:

运行态:如果系统正在执行任务A,那么我们称任务A当前处于运行态。
阻塞态:如果一个任务正在等待某个事件,则称这个任务处于”阻塞态(blocked)”。
挂起态:处于挂起状态的任务对调度器而言是不可见的,我们可以理解为,我们把任务A给暂时隐藏起来,后面还可以恢复。
就绪态:如果任务处于非运行状态,但既没有阻塞也没有挂起,则这个任务处于就绪(ready,准备或就绪)状态。处于就绪态的任务能够被运行,但只是”准备(ready)”运行,而当前尚未运行。
下图是几个状态的状态机:
【Free RTOS简介】_第1张图片

队列

FreeRTOS 的应用程序实际上是由一组独立的任务构成。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS 中所有的通信与同步机制都是基于队列实现的。

中断管理

嵌入式实时系统需要对整个系统环境产生的事件作出反应。他们需要处理来自各种源头产生的事件,这些事件对处理时间和响应时间都有不同的要求。在各种情况下,都需要作出合理的判断,以达到最佳事件处理的实现策略:
1、事件如何被检测到
通常采用中断方式,但是事件输入也可以通过查询获得。
2、什么时候采用中断方式?中断服务例程(ISR)中的处理量有多大?以及ISR 外的任务量有多大
通常情况下,ISR 应当越短越好。

资源管理

在多任务系统中,实际上存在一种潜在的风险。当一个任务在使用某个资源的过程中,即还没有完全结束对资源的访问时,便被切出运行态,使得资源处于非一致,不完整的状态。如果这个时候有另一个任务或者中断来访问这个资源,则会导致数据损坏或是其它相似的错误。举个例子如下:
考虑如下情形,有两个任务都试图往一个LCD 中写数据:
任务A 运行,并往LCD 写字符串”Hello world”。

任务A 被任务B 抢占,但此时字符串才输出到”Hello w”。

任务B 往LCD 写”Abort, Retry, Fail?”,然后进入阻塞态。

任务A 从被抢占处继续执行,完成剩余的字符输出——“orld”。

现在LCD 显示的是被破坏了的字符串”Hello wAbort, Retry, Fail?orld”。

那么怎么解决上述的问题呢
访问一个被多任务共享,或是被任务与中断共享的资源时,需要采用”互斥”技术以保证数据在任何时候都保持一致性。这样做的目的是要确保任务从开始访问资源就具有排它性,直至这个资源又恢复到完整状态。
FreeRTOS 提供了多种特性用以实现互斥,但是最好的互斥方法(如果可能的话,任何时候都当如此)还是通过精心设计应用程序,尽量不要共享资源,或者是每个资源都通过单任务访问。

总结

该篇文章主要就是简单的介绍下rtos,让自己简单理解rtos能够干什么,有什么功能。

整体来说就是,rtos里面的调度系统可以帮我们处理任务,然而,我们知道单个任务只是实现某一个功能,这显然不是我们想要的,我们需要多个任务互相配合来实现更加强大的功能,而如何让这些任务进行互通信息呢?答案就是队列。我们知道不同任务怎么互通后,那么新的问题就来了,在多任务系统中,实际上存在一种潜在的风险。当一个任务在使用某个资源的过程中,如果这个时候有另一个任务或者中断来访问这个资源,则会导致数据损坏或是其它相似的错误。那么rtos是有对应的处理的,即资源管理,而这种管理的方式就是采用互斥的技术。

你可能感兴趣的:(笔记,单片机,stm32,嵌入式实时数据库)