嵌入式系统及应用——任务管理与调度

本文深入探讨了嵌入式系统中的任务管理与调度,包括任务概述、uCOS-II和FreeRTOS的任务管理机制。任务是操作系统内核的基本调度单位,具有动态性、并发性和异步独立性等特性。文章介绍了任务的状态机、任务控制块、就绪算法、任务切换、任务调度过程以及时间片轮转和优先级抢占策略。同时,还详细讨论了优先级反转现象及其解决方案,如优先级继承和优先级天花板协议。最后,通过FreeRTOS的任务管理,展示了高优先级抢占和时间片轮转的实现。
摘要由CSDN通过智能技术生成

目录

一、任务概述

1.1进程与线程

1.2 任务

1.3 任务的特性

1.4任务的优点

1.5 任务的分类

1.6 任务参数

二、uCOS-II任务示例

三、uC/OS任务管理

3.1 任务状态机

 3.2任务控制块

 3.3 就绪算法和任务切换

 3.4 任务调度过程及时间

3.5 任务管理机制 

3.6任务调度机制

3.7优先级反转

 四、FreeRTOS 任务管理

 4.1 优先级任务抢占

 4.2 相同优先级时间片轮转


一、任务概述

1.1进程与线程

        进程主要包括下面内容:是一个正在执行的程序,可以分配给处理器,并由处理器执行的一个实体;由一个顺序的执行线程、一个当前状态和一组相关的系统资源所刻画的活动单元。

        进程由代码、数据、堆栈和进程控制块PCB构成。进程控制块包含了操作系统用来控制进程所需要的信息,包括进程状态、调度信息、CPU寄存器信息、内存管理信息和IO状态信息。

        早期进程定义是(资源)资源分配的基本单位,一个进程包括一个保存进程印像的虚拟地址空间、主存、I/O设备和文件等资源。(调度执行)进程作为OS调度实体,是调度的基本单位。

        目前来说,轻量级进程或者线程是调度执行的单位;进程是资源分配的单位;线程是进程内部一个相对独立的控制流,由线程上下文和需要执行的一段程序指令构成。在进程中,所有线程共享该进程的状态和资源,可以访问相同的数据。

       线程的优势: 创建终止时间快,切换时间快,线程间通信效率高,通信简单。

        大多数嵌入式实时内核是单进程多线程模型,也就是任务模型。它把整个应用当作一个没有定义的进程对待,应用则被划分为多个任务的形式进行处理。适用于实时性比较高,相对简单的应用。

堆栈区别:
1、申请方式的不同。栈由系统自动分配,而堆是人为申请开辟;
2、申请大小的不同。栈获得的空间较小,而堆获得的空间较大;
3、申请效率的不同。栈由系统自动分配,速度较快,而堆一般速度比较慢;
4、存储内容的不同。栈在函数调用时,函数调用语句的下一条可执行语句的地址第一个进栈,然后函数的各个参数进栈,其中静态变量是不入栈的。而堆一般是在头部用一个字节存放堆的大小,堆中的具体内容是人为安排;
5、底层不同。栈是连续的空间,而堆是不连续的空间

1.2 任务

        任务是嵌入式实时操作系统内核的基本调度单位。任务通常包含一个具有无限循环的程序。任务主要包括:      

  • 代码:一段可执行的程序
  • 数据:程序所需要的相关数据(变量、工作空间、缓冲区等)
  • 堆栈:局部变量,子程序调用,任务上下文等
  • 程序所执行的上下文环境。

1.3 任务的特性

        动态性:任务状态是不断变化的。一般分为就绪态、运行态、等待状态。在多任务系统中,任务的状态随着系统的需要不断进行变化

        并发性(单CPU):系统中同时存在多个任务,这些任务在宏观上是同时运行的。

        异步独立性: 每个任务各种按照相互独立的不可预知的速度运行,走走停停。

1.4任务的优点

  • 任务的规模较小:每个任务更容易编码和调试,其质量也更容易得到保证
  • 不少应用本身就是由多个任务构成的,如网络获取数据、计算和刷新显示屏幕,采用多任务处理的方式是应用问题的一个非常自然的解决方式
  • 任务之间具有较高的独立性、耦合性小;通过增加新的任务就能方便的扩充系统功能
  • 实时性强: 保证紧急事件优先处理成为可能

1.5 任务的分类

        按到达情况的可预测性分为:周期任务非周期任务。周期任务:每隔一个固定的时间间隔就会执行一次(时间片轮转也是一种周期任务)。非周期任务执行的间隔时间不确定。sporadic task有最小到达时间限制;aperiodic task:没有到达时间限制(事件触发(中断产生事件,外部信号产生事件))。

        按照重要程度划分为关键任务和非关键任务。

1.6 任务参数

优先级、周期(周期值)、计算时间(任务运行时间)、就绪时间、截止时间。

(1)优先级:表示任务对应工作内容在处理上的优先程度,优先级越高表明任务越需要得到优先处理。任务的优先级分为静态优先级和动态优先级。静态优先级表示任务的优先级确定后,在系统运行过程中无法发生变化;动态优先级表示在系统运行过程中,任务优先级是可以动态变化。

(2)周期任务所具有的参数,表示任务周期性执行的间隔时间

(3)任务的计算时间:任务在特定硬件环境下被完整执行所需要的时间。通常用最坏情况下的执行时间或者统计时间来表示。

(4)截至时间:意味着任务需要在该时间到来之前被执行完成。截止时间分为绝对截止时间和相对截止时间。相对截止时间为任务的绝对截止时间减去任务的就绪时间。截止时间分为强截止时间(关键任务,强实时)和弱截止时间(弱实时系统)两种情况。

二、uCOS-II任务示例

三、uC/OS任务管理

3.1 任务状态机

        任务拥有的资源是不断变化的,导致任务状态也表现出不断变化的特性。不同的实时内核对任务状态定义不尽相同,可以分为三种基本状态:

  • 等待waiting:任务在等待某个事件的发生
  • 就绪ready:任务等待获得处理器资源
  • 执行running:任务获得CPU资源,所包含的代码正被执行

        对于单处理器系统,任何时候只有一个任务在CPU中执行。无事时就运行空闲任务执行空操作。任何一个可以执行的任务必须处于就绪状态。调度程序从任务的就绪队列中选择下一个需要执行的任务。处于就绪状态的任务拥有除CPU以外的其他所有需要的资源。如果任务在需要等待I/O设备或者其他任务提供的数据,就处于等待状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值