【RTX51 Tiny入门】04_任务和调度器


01 - 任务

  RTX51 Tiny中被调度的单位称为任务,它拥有属于自己的资源,能够相对独立地运行,在代码上表现为带关键字_task_和对应数字ID的一个无参数、无返回值的死循环函数,如下:

void Task_Name(void) _task_ 0
{
	while(1) {
	// do something
	}
}

  以上表示0号任务,RTX51 Tiny的任务数量最多为16,编号0~15,规定第一个执行的任务编号为0,相当于main函数,要注意:任务一定是无参数、无返回值和不能返回的,如果任务只执行一次,那么可以不是一个死循环函数,但最后必须用os_delete_task()删除任务(一般是0号任务,负责创建其它任务后就删除自己),换言之,任务一定不能返回


02 - 调度器

  RTX51 Tiny本质上是一个任务切换器,单核运行的RTOS一个重要特征是任务并行执行,在某个时刻只有一个任务在执行,执行完毕后选择下一个,调度器就是决策哪一个任务可以运行的角色。RTX51 Tiny的调度器具有2种任务调度方式:协助调度和时间片调度,它们的区别如下:

协助调度时间片调度
任务切换主导权任务自身调度器和任务自身
任务切换过程需要当前运行任务主动放弃CPU,其它任务才能得到运行在时间片内可以自主放弃CPU,否则任务一直运行直到时间片耗尽,调度器切换任务
开启方法Conf_tny.A51配置文件中设定TIMESHARING为0Conf_tny.A51配置文件中设定TIMESHARING大于0
任务状态running、ready、waiting、deleterunning、ready、waiting、delete、timeout

03 - 任务状态

  存在调度器后,任务就有状态之分,RTX51 Tiny任务状态比较简单,但是选择不同的调度方式,任务状态会有相应的增删:

  • 选择时间片调度下有就绪态(ready)-运行态(running)-阻塞态(waiting)-超时态(timeout)-死亡态(delete)
  • 选择协助调度后,任务就没有了超时态(timeout)

  不同调度方式下的状态之间的转换关系如下

在这里插入图片描述

在这里插入图片描述

  状态转换类似一个状态机。8051及相关系列的单片机内存有限,于是RTX51 Tiny的任务状态也不能太复杂,除了官网提供的Tasks Management外,还可以知晓RTX51 Tiny任务状态的地方就是源码,RTX51 Tiny是开源的,下载正版Keil后就可以得到源码,不过正版Keil需要购买版权才能使用,随后开发人员可以根据需要进行修改


04 - 总结

  • RTX51 Tiny本质上是一个任务切换器
  • 任务一定是无参数、无返回值函数,如果任务只执行一次,可以不是死循环(最后要delete),否则一定是死循环函数
  • 时间片调度算法下任务有:就绪态、运行态、阻塞态、死亡态、超时态
  • 协助调度算法下任务有:就绪态、运行态、阻塞态、死亡态

  • 01-【RTX51 Tiny入门】-RTX51 Full & Tiny简介
  • 02-【RTX51 Tiny入门】-资源占用情况
  • 03-【RTX51 Tiny入门】-内核组成
  • 04-【RTX51 Tiny入门】-任务和调度器
  • 05-【RTX51 Tiny入门】-OS API函数
  • 06-【RTX51 Tiny入门】-查看RTX51 Tiny官方例程
  • 07-【RTX51 Tiny入门】-使用RTX51 Tiny
  • 08-【RTX51 Tiny入门】-Conf_tny.A51配置文件
  • 09-【RTX51 Tiny初级】-K_TMO与K_IVL的区别和使用场合
  • 10-【RTX51 Tiny初级】-os_send_signal()和os_set_ready()的区别和使用场合
  • 11-【RTX51 Tiny初级】-os_wait和os_switch_task区别和使用场合
  • 12-【RTX51 Tiny初级】-解决多重调用问题(MULTPLE CALL TOSEGMENT)
  • 13-【RTX51 Tiny高级】-进行Task的划分与拆分
  • 14-【RTX51 Tiny高级】-修改默认产生时间片的定时器T0为其它定时器
  • 15-【RTX51 Tiny高级】-考虑Round-Robin的开启与关闭
  • 16-【RTX51 Tiny高级】-解决Task之间的通讯和耦合问题
  • 17-【RTX51 Tiny高级】-Task ID隐藏的优先级问题
  • 18-【RTX51 Tiny高级】-系统架构的设计
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值