关于RTOS基础知识-FreeRTOS

一、多任务处理

内核是操作系统的核心组件。Linux 等通用操作系统采用的内核 允许多个用户看似同时访问计算机的处理器。这些用户可以各自执行多个程序,看起来像是并发运行。

每个执行的程序由操作系统控制下的一个或多个线程实现。如果操作系统能够以这种方式执行多个线程,则称为多任务处理。 像 FreeRTOS 这样的小型 RTOS 通常将线程称为任务,因为它们不支持虚拟内存,因此进程和线程之间没有区别。

使用多任务操作系统可以简化原本复杂的软件应用程序的设计: 

  • 操作系统的多任务处理和任务间通信功能允许将复杂的应用程序 划分为一组更小且更易于管理的任务。
  • 这种划分可以简化软件测试,确保团队分工明确,并促进代码复用。
  • 复杂的时序和排序细节将由 RTOS 内核负责,从而减轻了应用程序代码的负担。

二、多任务处理与并发 

常规单核处理器一次只能执行一个任务,但多任务操作系统可以快速切换任务, 使所有任务看起来像是同时在执行。下图展示了 三个任务相对于时间的执行模式。任务名称用不同颜色标示,并写在左侧。时间从左向右移动, 彩色线条显示在特定时间执行的任务。上方展示了所感知的并发执行模式, 下方展示了实际的多任务执行模式。

三、调度 

 调度器是内核中负责决定在特定时间应执行什么任务的部分。内核 可以在任务的生命周期内多次暂停并恢复该任务。 如果任务 B 取代任务 A 成为当前执行的任务 (即任务 A 暂停,任务 B 恢复),我们就可以称任务 A “换出”,任务 B “换入”。

调度策略是调度器用来决定何时执行哪个任务的算法。在(非实时)多用户系统中, 调度策略通常会确保每个任务获得“公平”的处理器时间。实时嵌入式系统中使用的策略详见下文。

只有当调度算法决定执行不同的任务时,任务才会换出。这种切换可能在当前 执行的任务不知情的情况下发生,例如调度算法响应外部事件或定时器到期时; 还可能 发生在执行任务显式调用某个导致其让出休眠(也称为延迟)或阻塞的 API 函数时。

操作系统内核负责管理这些任务状态和转换, 确保根据调度算法和每个任务的当前状态在给定时间选择适当的任务执行。

参考上图中的数字标记:

  • 在标记 (1) 处,任务 1 正在执行。
  • 在标记 (2) 处,内核将任务 1 换出……
  • ……并在标记 (3) 处将任务 2 换入。
  • 在任务 2 执行期间,在标记 (4) 处,任务 2 锁定了处理器外设以进行独占访问(图中不可见)。
  • 在标记 (5) 处,内核将任务 2 换出……
  • ……并在标记 (6) 处将任务 3 换入。
  • 任务 3 试图访问之前被任务 2 锁定的处理器外设,发现其被锁定,在标记 (7) 处阻塞以等待外设解锁。
  • 在标记 (8) 处,内核将任务 1 换入。
  • 如此往复。
  • 在标记 (9) 处,任务 2 再次执行,完成对外设的操作并解锁。
  • 在标记 (10) 处,任务 3 再次执行,发现外设可用,继续执行直到再次被换出。

三、实时调度

实时操作系统 (RTOS) 利用与通用(非实时)系统相同的原理来实现多任务处理, 但两者的目标截然不同。这一差异主要体现在调度策略上。实时嵌入式系统 旨在对现实世界的事件作出及时响应。这些事件通常有截止时间, 实时嵌入式系统必须在此之前响应,RTOS 调度策略必须确保遵守这些截止时间要求。

为在小型 RTOS(如 FreeRTOS)中实现这一目标,软件工程师必须为每个任务分配优先级。RTOS 的调度策略 就是确保能够执行的最高优先级任务获得处理时间。如果存在多个能够运行的同等最高优先级任务(既没有延迟也没有阻塞),则调度策略可以选择在这些任务之间“公平”地分配处理时间。

这种基本形式的实时调度并非万能,无法改变时间的快慢,应用程序编写者必须确保设定的时序约束在所选任务优先级安排下是可行的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值