学习笔记——FreeRTOS任务切换理解

本文深入探讨了RTOS中任务管理的核心——任务切换,及其对实时系统性能的影响。FreeRTOS采用时间片轮序与优先级抢占相结合的调度策略,确保高优先级任务的即时响应,同时保障同优先级任务的公平运行。文章还详细解析了任务切换和中断处理流程,以及PendSV异常在任务调度中的关键作用。

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

RTOS的核心是任务管理,任务管理的核心是任务切换。任务切换的效率高低决定了一个实时系统的性能。
FreeRTOS 支持时间片轮序和优先级抢占。系统调度器通过调度算法确定当前需要获得CPU 使用权的任务并让其处于运行状态。对于嵌入式系统,某些任务需要获得快速的响应,如果使用时间片,该任务可能无法及时被运行,因此抢占调度是必须的,高优先级的任务一旦就绪就能及时运行;而对于同优先级任务,系统根据时间片调度,给予每个任务相同的运行时间片,保证每个任务都能获得CPU 。
系统在任务切换和中断处理过程中的流程:
1、优先级高的task1正在执行。
2、系统产生中断,cpu使用权交给中断任务,任务一被挂起。
3、中断处理完成,task1继续执行,task1运行到阻塞或者被挂起
4、cpu使用权交给优先级低的任务task2,和task2同优先级的task3准备就绪,时间片调度
5、没有用户任务运行,cpu执行空闲任务

可见执行任务切换的有两种情况:
1、同等级任务时间片用完,提前挂起触发切换在 SysTick 节拍计数器中断中触发异常
2、高优先任务恢复就绪(如信号量,队列等阻塞、挂起状态下退出)时抢占
最终都是通过调用移植层提供的 portYIELD() 宏悬起 PendSV 异常

1、PendSV异常
pendSV(可挂起的系统调用)由于它是不精确的,所以它的挂起状态可以在更高级的异常处理中进行设置并在高优先级的异常处理完成后执行,因此他常常被被设置为优先级最低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值