完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
对于相同优先级的任务采用时间片轮询的方式运行,那比如说有两个优先级都为5的任务,那这两个任务的运行时间如何设置呢?在rt-thread中创建任务时就可以设置任务的运行时间,在freertos中怎么用呢?
|
|
相关推荐
21个回答
|
|
|
难道只能根据设置的systick来决定吗?设置的切换频率如果是1ms,就是1ms切换一次???
|
|
|
|
|
|
|
|
|
应该是的!
|
|
|
|
|
|
任务切换还有一种:调用某些系统API的时候
|
|
|
|
|
|
不一定! 还有一种就是调用系统某些Api的时候会切换任务
|
|
|
|
|
|
你忽略了一个情况,假如两个相同优先级的任务,都不会主动交出CPU的使用权,那么只能通过systick来强行切换,外部条件比如信号量激活都是没法让任务1交出CPU的使用权的因为他们两者的优先级是一样的,谁也不会让谁
|
|
|
|
|
|
左工视频讲了:任务切换发生在调用系统Api或者sysrick中断服务函数里!
两个同优先级任务如果是当前就绪任务列表里的最高优先级的话,任务切换的时候他们是会得到执行的。具体源码我上班后看了再贴出来。 |
|
|
|
|
|
两个任务都是当前的最高优先级,而且两个都不交出CPU的使用权,何来切换?
|
|
|
|
|
|
相同优先级(最高)的任务如果都处于就绪态,你知道系统如何让它俩先后得到执行吗?兄弟
|
|
|
|
|
|
就绪任务列表上的任务是在systick中断中得到处理?
|
|
|
|
|
|
|
|
|
|
|
|
也就是相同优先级(假设是当前最高的)的任务是会依次得到执行了。节后看了源码 我也好好理理系统的处理脉络。 谢谢你节日期间还为此去查阅源码,赞!
|
|
|
|
|
|
我是很抱歉才对,你前几天的评论今天才有空上来看,同时非常感谢你对我的错误的纠正
|
|
|
|
|
|
别这么客气。
|
|
|
|
|
|
UCOSIII也可以设置任务的时间片轮转时间,但是FreeRTOS不可以,只能调整系统时钟节拍来达到该功能
|
|
|
|
|
|
|
|
|
|
|
|
但是1MS对于任务来说还是太短了, 一个任务开时间片轮转调度,但是只能跑1MS就切换跑另一个任务,时间有点短了,除非任务简单,耗时短
|
|
|
|
|
|
每个任务执行时间不是这个1ms决定的,由你自己的任务代码及工程复杂程度及优先级设置等决定的。确实systick是每1ms运行一次并处理部分任务切换,不要忘记了调用系统Api函数也会引起任务调度,因此任务切换的周期应该小于1ms,我在考虑如何测某任务的运行周期的问题!
|
|
|
|
|
|
我觉得开时间片轮转的意义就是让相同优先级任务都能至少跑一次循环而不是频繁的切来切去还跑不了一次,这就得不偿失了。至于时钟节拍定位1MS就是说高优先级如果已经就绪最多等待1MS就能抢占CPU,也并不一定意味着任务必须压缩到1MS以内(只要没比它高的任务跑就行),你测任务运行周期的话建议仿真下试试
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1073 浏览 1 评论
1892 浏览 0 评论
1869 浏览 1 评论
3295 浏览 5 评论
3619 浏览 9 评论
1078浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1402浏览 1评论
1896浏览 0评论
1211浏览 0评论
1349浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 16:32 , Processed in 1.222247 second(s), Total 112, Slave 92 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3080