一、简介
- 时间片是实现同一优先级下有多任务的功能,在此优先级每个任务运行相应的任务时间片,轮流执行,达到共享时间的效果,时间片调度的思想就是不再分优先级,所有任务按顺序,给定时间段切换任务,这种任务调度思想和Linux等大型操作系统调度思想很接近
二、设置时间片有关函数以及变量
任务TCB添加有关变量储存时间片大小
- TimeQuanta 任务需要的时间片数量
- TimeQuantaCtr 任务还剩下的时间片数量
编写调度函数OS_SchedRoundRobin()(每个TICK时调用)
- 进入临界段
- 读取传入的就绪列表头指针任务(空闲任务退出)
- 任务TCB的时间片(TimeQuantaCtr)数量减少
- 减过之后剩余时间片不为0则退出临界段函数结束
- 自减之后时间片为0则继续执行
- 判断只有一个任务就退出
- 时间片为0了,所以这里执行把任务放到此处就绪列表的链表的最后节点
- 重新获取就绪列表头指针的任务
- 退出临界段,结束函数
三、调用流程
- 初始化
任务TCB、创建变量;任务TaskCreat传入时间片参数并初始化 - 调用
每一个Tick周期调用时间片调度函数
posted @
2020-11-06 15:37
JeckXu666
阅读(
86)
评论()
编辑
收藏
举报