OpenEdv-开源电子网

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

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

[复制链接]

28

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1486
金钱
1486
注册时间
2021-8-10
在线时间
272 小时
发表于 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或者系统滴答定时器中断来切换,而滴答定时器的优先级一般是设置到最低(硬件中断)。 所以,可以理解为高优先级任务,是相对低优先级任务来说的,它可以获得更高的运行权限,但是低于任何一个硬件中断服务函数
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

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

使用道具 举报

28

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

28

主题

113

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1486
金钱
1486
注册时间
2021-8-10
在线时间
272 小时
 楼主| 发表于 2022-3-6 16:42:47 | 显示全部楼层
是不是就靠抢占式内核,直接打断低优先级的任务保证的实时性。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 02:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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