硬汉嵌入式论坛

 找回密码
 立即注册
查看: 826|回复: 3
收起左侧

[μCOS-III] 新手学习UCOS-III关于就绪列表插入函数的问题

[复制链接]

13

主题

89

回帖

128

积分

初级会员

积分
128
发表于 2022-11-26 11:07:49 | 显示全部楼层 |阅读模式
本帖最后由 qq1646544 于 2022-11-26 11:12 编辑

在读ucos-iii源码的时候,看到就绪列表插入tcb,如果这个tcb的优先级和当前任务优先级一样就插入到当前优先级下的链表尾部,否则就插入那个tcb优先级的链表头部,代码如下图:
image.png

但是应该是不管tcb的优先级如何,其都应该插入自己优先级下的链表尾部吗,为什么后来的tcb放到链表头部呢?这样之前的TCB岂不是一直被排后了?

求大佬解答~
回复

使用道具 举报

13

主题

89

回帖

128

积分

初级会员

积分
128
 楼主| 发表于 2022-11-26 11:11:15 | 显示全部楼层
本帖最后由 qq1646544 于 2022-11-26 11:13 编辑

困扰好几天啦!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2022-11-26 11:59:05 | 显示全部楼层
首先要明白两个点
1、uCOS的任务优先级调度是通过位图查找的,不是靠优先级列表排列顺序查找的。
2、uCOS的每个任务都有一个列表管理OS_RDY_LIST。

然后就是楼主位的问题,这个函数主要是同优先级任务的处理区分,如果就绪的这个任务与当前正在运行的任务优先级相同就插入到此任务就绪列表的默认,时间片调度是逐个顺序执行的,必要要把它放在后面。

否则就放在前面,放在前面输入最优解。

回复

使用道具 举报

13

主题

89

回帖

128

积分

初级会员

积分
128
 楼主| 发表于 2022-11-27 22:44:48 | 显示全部楼层
本帖最后由 qq1646544 于 2022-11-27 22:52 编辑
eric2013 发表于 2022-11-26 11:59
首先要明白两个点
1、uCOS的任务优先级调度是通过位图查找的,不是靠优先级列表排列顺序查找的。
2、uCOS ...

明白啦!                                               
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 14:37 , Processed in 0.204662 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表