uCOS-Ⅲ学习笔记:时间片

网友投稿 706 2022-05-30

时间片轮转

一、简介

二、设置时间片有关函数以及变量

任务TCB添加有关变量储存时间片大小

编写调度函数OS_SchedRoundRobin()(每个TICK时调用)

三、调用流程

一、简介

时间片是实现同一优先级下有多任务的功能,在此优先级每个任务运行相应的任务时间片,轮流执行,达到共享时间的效果,时间片调度的思想就是不再分优先级,所有任务按顺序,给定时间段切换任务,这种任务调度思想和Linux等大型操作系统调度思想很接近

二、设置时间片有关函数以及变量

任务TCB添加有关变量储存时间片大小

TimeQuanta 任务需要的时间片数量

uCOS-Ⅲ学习笔记:时间片

TimeQuantaCtr 任务还剩下的时间片数量

编写调度函数OS_SchedRoundRobin()(每个TICK时调用)

进入临界段

读取传入的就绪列表头指针任务(空闲任务退出)

任务TCB的时间片(TimeQuantaCtr)数量减少

减过之后剩余时间片不为0则退出临界段函数结束

自减之后时间片为0则继续执行

判断只有一个任务就退出

时间片为0了,所以这里执行把任务放到此处就绪列表的链表的最后节点

重新获取就绪列表头指针的任务

退出临界段,结束函数

三、调用流程

初始化

任务TCB、创建变量;任务TaskCreat传入时间片参数并初始化

调用

每一个Tick周期调用时间片调度函数

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:更换Jupyter Notebook 内核Python版本,解决 环境中安装的库 ImportError 问题
下一篇:成员变量和方法的区别?
相关文章