uCOS-Ⅲ学习笔记:时间片

举报
JeckXu666 发表于 2022/01/18 00:24:01 2022/01/18
【摘要】 时间片轮转 一、简介二、设置时间片有关函数以及变量任务TCB添加有关变量储存时间片大小编写调度函数OS_SchedRoundRobin()(每个TICK时调用) 三、调用流程 一、简介 ...

一、简介

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

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

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

  1. TimeQuanta 任务需要的时间片数量
  2. TimeQuantaCtr 任务还剩下的时间片数量

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

  1. 进入临界段
  2. 读取传入的就绪列表头指针任务(空闲任务退出)
  3. 任务TCB的时间片(TimeQuantaCtr)数量减少
    • 减过之后剩余时间片不为0则退出临界段函数结束
    • 自减之后时间片为0则继续执行
  4. 判断只有一个任务就退出
  5. 时间片为0了,所以这里执行把任务放到此处就绪列表的链表的最后节点
  6. 重新获取就绪列表头指针的任务
  7. 退出临界段,结束函数

三、调用流程

  1. 初始化
    任务TCB、创建变量;任务TaskCreat传入时间片参数并初始化
  2. 调用
    每一个Tick周期调用时间片调度函数

文章来源: blog.csdn.net,作者:JeckXu666,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_45396672/article/details/109473281

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。