RTOS基本原理:多任务和调度-FreeRTOS是如何工作的

本文介绍了FreeRTOS的基本原理,包括多任务的概念及其如何简化应用程序设计。同时深入探讨了多任务与并发的区别,以及RTOS内核如何通过调度策略实现任务间的高效切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FreeRTOS是如何工作的--RTOS基本原理:多任务和调度


作者:Gavin Lee   来源:upsdn.net    更新日期:2006-04-12

RTOS基本原理
多任务
调度
上下文切换
实时应用
实时调度

这一节提供一个关于实时和多任务概念的简介。读下一节之前必须理解这些概念。

多任务(Multitasking)

在一个操作系统内部,内核[kernel]是最核心的部件。像Linux那样的操作系统使用的内核,从表面上看(seemingly),允许用户并发(simultaneously)访问 计算机。多个用户似乎(apparently)可以并行(concurrently)执行多个程序。

在操作系统的控制下,每个正在执行的程序就是一个任务[task]。如果一个操作系统能够以这种方法执行多个任务,这就叫做多任务[multitasking].

多任务操作系统的使用可以简化应用程序的设计:
1. 操作系统的多任务和任务间通信的机制允许复杂的应用程序被分成一系列更小的和更多的可以管理的任务。
2. (程序的)划分(partitioning)让软件测试更容易, 团队工作分解(work breakdown within teams),也有利于代码复用。
3. 复杂的定时和先后顺序的细节 可以从应用程序代码中 删除。(因为)这成为操作系统的职责。

多任务Vs 并发

传统的(conventional)的处理器同时只能执行一个任务。但通过快速的任务切换,一个多任务操作系统可以使它看起来(appear)好像每个任务并行执行一样。这可以下面的示意图来描述(depicted)。它显示了有关(with respect to)时间的3个任务的执行模式。任务名用颜色标注出来,写在左手边。时间从左到右增加,相应的颜色的线条 显示该任务在某个特殊时间正在执行。上面的图 演示的是用户所觉察到的并行执行模式,下面的图是实际的多任务执行模式。

Task Execution Pattern

 ----所有可用的任务都好像在执行,但实际上在任何一个时刻都只有一个任务在执行

 

调度

调度器(scheduler)是内核中负责 决定在某个特殊时间 哪个任务应该执行的部分。内核可以在任务的生命期(lifetime) 挂起(suspend) / 恢复(resume)一个任务许多次。

调度策略(scheduling policy)是调度器用来决定哪个任务在哪个时间点执行的算法。一个(非实时)多用户系统的策略很可能分配(allow)给每个任务一个"公平"(fair)的处理器时间片(proportion of processor time)。用在实时系统/嵌入式系统的策略稍后再描述。

除了被RTOS内核无意的挂起外,一个任务还可以自己挂起自己。如果一个任务想延迟一段固定的时间(也就是sleep),或者等待(也就是block)某个资源可用(比如一个串口),或者等待一个事件出现(比如一个键按下)。一个阻塞或者睡眠的任务是不能执行的,不会为它分配任何处理时间。

Suspending

上图中提到的编号:
1) Task1正在运行
2) 内核挂起Task1
3) 恢复任务Task2
4) Task2正在执行,为独占访问(exclusive access),它锁定一个处理器外设
5) 内核 挂起Task2
6) 恢复Task3
7) Task3试图访问同样的处理器外设,发现它被锁定,Task3不能继续,所以自己挂起自己。
8) 内核恢复Task1
………….
9) 接下来(the next time),Task2在9处执行。它完成了对处理器外设的访问,所以解锁它
10) 再下来,Task3在10处执行。它发现 现在可以访问处理器外设了,于是开始执行,直到被内核挂起。

 

<think>嗯,用户让我比较四个RTOS操作系统,从工作方式、多任务支持、实时性、安全性标准API五个方面,用表格形式呈现。首先,我需要确认每个操作系统的具体信息,确保准确性。 首先,工作方式方面,VxWorks是实时操作系统,微内核结构,这点我记得没错。RT-Linux是实时补丁的Linux,双内核,对吧?FreeRTOS是微内核,设计轻量。RT-Thread也是微内核,模块化设计。 多任务支持,VxWorks支持硬实时任务,抢占式调度。RT-Linux有硬实时分时任务,主从任务调度FreeRTOSRT-Thread都是抢占式调度,但RT-Thread还支持时间片轮转,这点需要确认。 实时性方面,VxWorks确定性高,响应快,微秒级。RT-Linux也是微秒级,但受非实时任务影响。FreeRTOSRT-Thread都是毫秒级,但可能FreeRTOS的实时性稍差? 安全性的话,VxWorks有严格认证,适合军工。RT-Linux依赖Linux安全机制,可能较弱。FreeRTOS社区支持,功能少。RT-Thread有安全框架,符合部分标准。 标准API,VxWorks是POSIX兼容,私有API。RT-Linux是POSIXLinux API。FreeRTOS有自己的API,部分POSIX。RT-Thread也兼容POSIX,有自己的API。 需要检查每个系统的资料是否有更新,比如RT-Thread现在是否支持硬实时任务,或者FreeRTOS是否有新的安全功能。可能需要查阅官方文档或可靠来源确认。例如,RT-Thread的实时性是否确实在毫秒级,或者是否有改进。另外,关于API的兼容性,比如FreeRTOS是否支持POSIX,可能部分实现,但可能不如RT-Thread全面。 表格结构要正确,使用Markdown语法,确保列对齐。用户可能需要直接复制代码,所以格式要正确。注意使用$...$$$...$$来排版数学表达式,但在这个比较中可能用不上,不过用户可能有其他需求,所以按系统指令处理。 最后,确保语言用中文,结构清晰,分步骤比较。可能需要总结每个方面的特点,然后整理成表格。检查是否有遗漏或错误,比如RT-Linux的实时性是否真的微秒级,是否确实存在主从任务调度模式。</think>以下是基于要求的Markdown表格代码: ```markdown | 对比维度 | VxWorks 操作系统 | RT-Linux 操作系统 | FreeRTOS 操作系统 | RT-Thread 操作系统 | |----------------|------------------------------------------|--------------------------------------------|--------------------------------------------|------------------------------------------| | **工作方式** | 硬实时系统,微内核架构 | 基于Linux内核添加实时补丁,双内核架构 | 轻量级实时内核,微内核设计 | 硬实时系统,微内核+模块化组件架构 | | **多任务支持** | 支持硬实时任务,严格抢占式调度 | 硬实时任务与分时任务共存,主从任务调度模式 | 支持抢占式调度任务优先级控制 | 支持抢占式/时间片轮转调度,动态优先级调整 | | **实时性** | 确定性高,响应延迟达微秒级 | 实时性依赖补丁,延迟微秒级(受非实时干扰) | 响应延迟毫秒级,适用于中等实时需求 | 响应延迟毫秒级,可配置为硬实时系统 | | **安全性** | DO-178C/IEC 61508认证,内存保护机制完善 | 依赖Linux安全机制,需额外加固 | 社区维护,无官方安全认证,需自行扩展 | 支持安全框架(如SAL/TFM),符合IEC 61508 | | **标准API** | 兼容POSIX,提供专有Wind River API | 完整POSIX兼容,提供Linux标准API | 自有API接口,部分实现POSIX标准 | 兼容POSIX标准,提供类Linux API风格 | ``` ### 关键特性补充说明: 1. **工作方式** - VxWorks:$$ \text{中断延迟} < 1\mu s $$,适用于航空航天等高可靠场景 - RT-Linux:$$ \text{实时任务} \parallel \text{Linux任务} $$,通过`PREEMPT_RT`补丁实现 - FreeRTOS:最小内核仅占6-12KB ROM,适合资源受限设备 - RT-Thread:通过`FinSH`组件实现运行时调试,$$ \text{模块化程度} \propto \text{可扩展性} $$ 2. **实时性对比公式** 响应时间确定性: $$ VxWorks \approx RT-Linux_{实时域} > RT-Thread \geq FreeRTOS $$ 3. **安全性实现** - VxWorks:内存保护(MMU/MPU)$$ \cap $$进程隔离 - RT-Thread:支持`ARM TrustZone` $$ \Rightarrow $$ 硬件级安全隔离 建议通过实际场景选择系统: - 任务截止时间满足条件:$$ t_{响应} \leq t_{截止} $$时优先硬实时系统(如VxWorks) -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值