任务调度器

可剥夺型调度

ucosIII有两种不同的处理中断服务程序发布事件的方法:直接发布和延迟发布

  • 直接发布图:在这里插入图片描述
    代码:(红色框的函数:告诉ucosIII进/出中断函数,实质就是开/关中断)
    在这里插入图片描述

  • 延迟发布图在这里插入图片描述
    二者区别就是:前者进入中断服务函数后关掉了中断,执行完相应的操作后再开中断,后者是进入中断后释放信号量,触发相应事件执行,就不需要关中断了。

调度点

下列调度点,会自行启动调度器

  • 任务释放信号量给另一个任务或者向另外一个任务发消息
  • 任务调用延时函数
  • 任务等待事件而事件还没发生
  • 任务取消等待
  • 创建任务
  • 删除任务
  • 删除一个内核对象
  • 改变自身的优先级或者其他任务的优先级
  • 任务调用OSTaskSuspend()将自身挂起
  • 任务解除挂起
  • 退出所有中断嵌套
  • 调用OSScheUnclock()给调度上锁
  • 调用OSScheRoundRobinYield()放弃执行时间片
  • 调用OSSche()启动调度器
时间片轮转调度

时间片就是这个任务执行的时钟节拍
多个任务在同一优先级下运行,若某任务执行完时间片还没有用完,可以放弃CPU的控制权,把控制权交给下一个任务。或者任务执行完,等待时间片用完就会把CPU的控制权交给下个任务。要是在时间片内该任务没有执行完也会把CPU的控制权交给下一个任务

调度的实现细节

ucosIII有两个调度器:任务级使用OSSched() 中断服务程序结束调用OSIntExit()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值