ucos iii如何使用时间片轮转调度算法

第一步:在mian()函数中打开条件编译#if OS_CFG_SCHED_ROUND_ROBIN_EN  

OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);  

       #endif

         其中OSSchedRoundRobinCfg(DEF_ENABLED,1,&err); 

 函数参数一:DEF_ENABLED使能调度轮转法,DEF_DISBLED失能调轮转法。

        参数二:用来设置时间片长度。时间长度 = 参数值*时间节拍。其中时间节拍与系统时间频率OS_CFG_TICK_RATE_HZ,互为倒数。

第二步:创建任务时,通过设置(OS_TICK  )参数,来设置任务拥有几个时间片。

时间片轮转调度算法的作用及原理:

作用:用于相同优先级任务的切换。

原理:在ucos iii中任务优先级是依靠一个数组变量来实现的,数组变量的每一位代表一个优先级。当某一位为1时,代表当前优先级有任务已经处于就绪状态。等待CPU分配。当两个处于同一优先级的任务同时就绪时,则取任务链表中的第一个任务执行(每个优先级都拥有一个任务链表,该链表中任务的优先级均相同)。当该任务时间片用完时,将该任务插入任务链表尾部。由此就能完成时间片轮转调度了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值