CMSIS RTOS2学习笔记day3

巧了我就是萌 提交于 2019-11-28 20:15:42

今天来看下分时调度策略下时间片的管理,需要注意的一个问题是:无论是实时抢占还是分时调度,时间片的更新是一定需要有的。
方便起见,从时间片设置开始介绍:Round-Robin是轮询调度,轮询调度时间是5ms,
在这里插入图片描述
然后看到OS_ROBINTOUT是
v
看到上面的英文可以看到,默认的调度时间为5ms。当然也没什么需要修改的必要。
顺着下来,这个值应该是在一个systemtick中和任务运行时间进行比较.。
这是一个全区遍历,好多任务共用一个,每次切换任务,都会把这个东西复位,重新进行处理。
在这里插入图片描述
这次就是来检查运行时间的。如果检查到正在运行的时间已经超过tout,那么就应该切换下一个任务。额…懂啦。上述代码可以看出分配给每个任务运行的时间是,当前ostime加上超时时间(时间片)。那么当系统时间ostime到达这个时间的时候,就可以进行切换了。
在这里插入图片描述
这里有一个延时任务的更新,这是专门是任务延时使用的。rt_dec_dly()就是专门针对任务延时的,延时时间到了之后,就放置优先正常队列中。
在这里插入图片描述
这里应该是定时器的配置。
到这里,我们的内核之旅就结束啦。下一章总结下这个内核的调度策略。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!