嵌入式OS入门笔记-以RTX为案例:六.RTX的任务调度

这篇嵌入式OS笔记深入探讨了RTX任务调度,包括三种调度方式:抢断式(Pre-emptive)、轮转式(Round robin)和合作式(Co-operative)。RTX的优先级从0到255,数值越大优先级越高。文章还介绍了如何改变任务优先级以及不同调度方式的应用场景。

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

嵌入式OS入门笔记-以RTX为案例:六.RTX的任务调度


上一篇笔记介绍了一些绕开排程器(或调度程序,scheduler)来进行时间管理的一些小方法。这一篇具体介绍RTX的任务调度原理。

RTX主要有三种调度方式:

  • Pre-emptive: 抢断式
  • Round robin: 轮转式
  • Co-operative: 合作式

在正式介绍这些方式之前,先看一下RTX的进程优先等级设置。


1.RTX的优先度

每一个task在创建之初都会有一个优先级(os_tsk_create(task_name,priority);)。优先级是一个从0到255的整形数据,该数据越高的task,优先级越高。每一个优先级都有一个先入先出的队列结构。

具体说来:

首先,RTX并不能处理快速中断(FIQ,ARM处理器中最高优先级的中断),相反地,当快速中断发生时,RTX内核可能会被打断。

然后到普通中断,普通中断并不是一个进程,所以不需要设定优先度,但普通中断一定会打断进程。

然后就到优先度为2-255的进程,这些进程会按照先入先出的顺序运行。低优先度的进程不能打断高优先度的进程,但高优先度的进程会打断低优先度的进程。如果当前最高优先度是x,但所有优先度为x的进程都处于等待状态,那么排程器就会考虑下一优先度(x-1)的进程,但一旦任一x进程进入就绪状态,排程器会打断低优先度进程。

优先度为1的进程时轮转进程,下面介绍到轮转排程时会记录它与优先度为2-255进程的区别。

优先度为0的进程为空闲进程。当没有进程执行时,RTX会执行它,并提升其优先度到1.


几个特殊进程的优先度:os_idle_demon(voi

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值