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