OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4220|回复: 3

一点小疑问,关于寻找下一个任务!!!

[复制链接]

28

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1521
金钱
1521
注册时间
2021-8-10
在线时间
274 小时
发表于 2022-3-6 16:22:43 | 显示全部楼层 |阅读模式
6金钱
        #define taskSELECT_HIGHEST_PRIORITY_TASK()                                                                \
        {                                                                                                                                        \
                /* 从就绪列表数组中找出最高优先级列表*/                                \
                while( listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxTopReadyPriority ] ) ) )                \
                {                                                                                                                                \
                        configASSERT( uxTopReadyPriority );                                                                \
                        --uxTopReadyPriority;                                                                                        \
                }                                                                                                                                \
                                                                                                                                                \
                /* 相同优先级的任务使用时间片共享处理器就是通过这个宏实现*/          \
                listGET_OWNER_OF_NEXT_ENTRY(pxCurrentTCB, &( pxReadyTasksLists[ uxTopReadyPriority ] ) );   \
        } /* taskSELECT_HIGHEST_PRIORITY_TASK */


--uxTopReadyPriority;                其中这一句是不是在执行切换优先级列表,相当于去遍历优先级列表。

最佳答案

查看完整内容[请看2#楼]

无论多高优先级的任务,都没有中断的优先级高, OS所谓的高优先级任务,获取运行的情况都是得靠任务调度来保证,而任务调度一般是通过低优先级任务主动让出CPU或者系统滴答定时器中断来切换,而滴答定时器的优先级一般是设置到最低(硬件中断)。 所以,可以理解为高优先级任务,是相对低优先级任务来说的,它可以获得更高的运行权限,但是低于任何一个硬件中断服务函数
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165599
金钱
165599
注册时间
2010-12-1
在线时间
2121 小时
发表于 2022-3-6 16:22:44 | 显示全部楼层
无论多高优先级的任务,都没有中断的优先级高, OS所谓的高优先级任务,获取运行的情况都是得靠任务调度来保证,而任务调度一般是通过低优先级任务主动让出CPU或者系统滴答定时器中断来切换,而滴答定时器的优先级一般是设置到最低(硬件中断)。

所以,可以理解为高优先级任务,是相对低优先级任务来说的,它可以获得更高的运行权限,但是低于任何一个硬件中断服务函数
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子产品购买店铺https://zhengdianyuanzi.tmall.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

28

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1521
金钱
1521
注册时间
2021-8-10
在线时间
274 小时
 楼主| 发表于 2022-3-6 16:36:03 | 显示全部楼层
其实我的疑问点在于,如果是高优先级任务,通过这样遍历,高优先级任务怎么得到的实时响应。
回复

使用道具 举报

28

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1521
金钱
1521
注册时间
2021-8-10
在线时间
274 小时
 楼主| 发表于 2022-3-6 16:42:47 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则


关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-11-7 14:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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