完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在做原子时间片调度的实验的时候,自己遇到了一个问题,就是我把时间片时间改为了1ms(原来是50ms),task1、task2和task3中把延时函数改成了10ms(其实我想做的实验就是时间片小于任务执行的时间会发生什么情况),然后最后得到下图的实验现象,确实,由于时间片调度的原因,三个任务里面的日志几乎是同一时刻打印的,而不是说要等到任务1完全延时好才能执行其他任务,但是有个问题是任务2执行的间隔是30ms,我本来认为应该是10ms才对(因为有时间片(1ms)的任务切换),为什么任务2要等到task1和task2执行完后才能再执行呢这是我配置的时间片时间为1ms下图是我的三个task任务函数:
实验结果: |
|
相关推荐
3个回答
|
|
嗯嗯,我突然还想到另一个问题,就是如果我把上面三个任务函数中的延时函数换成10ms调度的延时,那么他中间的的过程又是怎么样的,我自己实验看到的现象确实是三个任务还是同时打出日志,但是同一个任务之间的间隔变成了10ms而不是30ms,这个现象说明的三个任务确实真正的在同时运行,但是里面的运行细节跟上面区别在哪里?
任务函数: 10ms调度延时下的实验结果: |
|
|
|
也对呀,调度延时那个函数微妙就执行完了,执行的结果就是把一个任务挂起一定时间,滴答定时器调度器判断这个时间到了没,到了就让任务就绪,所以第一次三个打印完,延时也就结束了,三个任务都被挂起了,开始执行空闲任务,空闲任务被调度切换了10次,不过只有他自己还是在执行他,10ms以后,时间到了,三个任务同时就绪又开始执行打印,一共只需要10ms,你还是多看看视频教程吧,一遍不行看两遍,两边不行三遍,看懂为止,懂了才能触类旁通
|
|
|
|
原来是这样,谢谢大虾
|
|
|
|
只有小组成员才能发言,加入小组>>
800 浏览 0 评论
1156 浏览 1 评论
2531 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2714 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1089浏览 3评论
195浏览 2评论
461浏览 2评论
374浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
456浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 19:55 , Processed in 1.020120 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号