RTOS系统的核心就是任务管理;

任务的特性

在RTOS中每个任务都有自己的运行环境,不依赖于系统中其他的任务或者调度器,任何一个时间点只能有一个任务运行,具体运行哪个任务是由任务调度器来决定的,而任务调度器的职责就是确保当一个任务开始执行的时候其上下文环境,比如寄存器的值、堆栈中的内容等等,要和任务上次退出时相同,这样当任务再次执行的时候就可以从堆栈中取出上下文环境,任务恢复运行;

所以任务的特性总结如下:

  • 简单且没有使用限制;
  • 支持抢占、支持任务优先级;
  • 每个任务都拥有独立的堆栈,从而导致RAM消耗增大;
  • 如果使用抢占,则必须认真考虑可重入的问题;

任务的状态

任务在任一时刻总是处于下面几个状态中的某一个:

  • 运行态

    一个正在运行的任务就处于运行态,如果使用的是单核处理器的话,那么在任一时刻只有一个任务处于运行态;

  • 就绪态

    处于就绪态的任务就是没有被阻塞或者挂起,而可以运行的任务,之所以处于就绪态是因为有一个同优先级或者更高优先级的任务正在运行;

  • 阻塞态

    任务在等待队列、信号量、事件组、通知、互斥信号量或者调用了vTaskDelay()函数等等这类情况下就会进入阻塞态;任务进入阻塞态会有一个超时时间,当超过了这个超时时间任务就会退出阻塞态,即使所等待的信号或者事件还未到;

  • 挂起态

    任务进入挂起态之后不能被调度器调用而进入运行态,挂起态类似于阻塞态,但是不同之处是没有超时时间;

任务优先级

在FreeRTOS中,任务优先级数字越低表示任务优先级越低,0代表最低的优先级,一般是空闲任务的优先级,configMAX_PRIORITIES-1的优先级最高;

任务调度器的作用就是确保就绪任务中最高优先级的任务始终能过够优先获取到处理器的使用权;

当宏configUSE_TIME_SLICING定义为1的时候(默认情况下,该宏在文件FreeRTOS.h中已经定义为1),多个任务可以共用一个优先级,数量不限,此时处于就绪态的优先级相同的任务就会使用时间片轮转调度器获取运行时间;

FreeRTOS任务基础概念的更多相关文章

  1. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  2. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  3. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

  4. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  5. 理解 angular2 基础概念和结构 ----angular2系列(二)

    前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...

  6. JavaBean 基础概念、使用实例及代码分析

    JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...

  7. RabbitMQ基础概念详细介绍

    http://blog.csdn.net/column/details/rabbitmq.html 转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多 ...

  8. linux设备驱动归纳总结(二):模块的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...

  9. linux设备驱动归纳总结(一)内核的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...

随机推荐

  1. jQuery BlockUI Plugin Demo 2

    Overview The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without l ...

  2. 第二章 身份验证——《跟我学Shiro》

    转发:https://www.iteye.com/blog/jinnianshilongnian-2019547 目录贴:跟我学Shiro目录贴 身份验证,即在应用中谁能证明他就是他本人.一般提供如他 ...

  3. sonar:soanrqube接口api

    背景: jenkins+sonar集成了代码扫描,但是发出的邮件不管项目质量是通过还是失败,每次邮件的标题都是jenkins的构建状态,所以需要获取sonar中该项目的扫描结果. 解决: 在sonar ...

  4. 《Hadoop大数据技术开发实战》学习笔记(一)

    基于CentOS7系统 新建用户 1.使用"su-"命令切换到root用户,然后执行命令: adduser zonkidd 2.执行以下命令,设置用户zonkidd的密码: pas ...

  5. 已经安装了VRay但3dmax的材质编辑器里没有VRay材质的解决过程

    已经安装了VRay但3dmax的材质编辑器里没有VRay材质怎么办? 众所周知,vray是一款很好用的渲染器,但是安装过程和使用当中总会出现各种问题.昨天我就遇到了,捣鼓半天终于解决,分享给大家自己的 ...

  6. 移动架构-UML

    UML(Unified Modeling Language),UML规范用来描述建模的概念有,类(对象的).对象.关联.职责.行为.接口.用例.包.顺序.协作,以及状态.这里对UML做一个简单介绍 前 ...

  7. 最新 乐游网络java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.乐游网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了乐游网络.6.7月主要是做系统复习.项目复盘.Leet ...

  8. web 中常用的两种上传文件的方法总结

    这里我们来总结整理一下常用的两种文件上传方式以及要注意的东西: 1.springmvc .MultipartFile 的上传方式. 2.org.apache.commons.fileupload 使用 ...

  9. Chocolate Eating【二分】

    题目链接:https://ac.nowcoder.com/acm/contest/1577/K 题目大意: 给出n块巧克力,m天吃完.每块巧克力有a[i]快乐值,每天可以选择吃任意块或者不吃巧克力(按 ...

  10. Redis 常用命令学四:有序集合类型命令

    1.增加元素,修改存在元素的分数 127.0.0.1:6379> zadd score 99 a 88 b 66 c (integer) 3 127.0.0.1:6379> ZADD sc ...