1、UCOSIII任务调度

1.1、可剥夺型任务调度:

任务调度就是中止当前正在运行的任务转而去执行其他的任务。

UCOSIII是可剥夺型内核,因此当一个高优先级的任务准备就绪,并且此时发生了任务调度,那么这个高优先级的任务就会获得CPU的使用权。

UCOSIII中的任务调度是由任务调度器来完成的,任务调度器有2种:任务级调度器和中断级调度器。

任务级调度器为函数OSSched()。

中断级调度器为函数OSIntExit(),当退出外部中断服务函数的时候使用中断级任务调度。

1.2、任务调度点:

1、释放信号量或者发送消息,也可通过配置相应的参数不发生任务调度。

2、使用延时函数OSTimeDly()或者OSTimeDlyHMSM()。

3、任务等待的事情还没发生(等待信号量,消息队列等)。

4、任务取消等待。

5、创建任务。

6、删除任务。

7、删除一个内核对象。

8、任务改变自身的优先级或者其他任务的优先级。

9、任务通过调用OSTaskSuspend()将自身挂起。

10、任务解挂某个挂起的任务。

11、退出所有的嵌套中断。

12、通过OSSchedUnlock()给调度器解锁。

13、任务调用OSSchedRoundRobinYield()放弃其执行时间片。

14、用户调用OSSched()。

1.3、调度器上锁和解锁:

有时候我们并不希望发生任务调度,因为始终有一些代码的执行过程是不能被打断的。此时我们就可以使用函数OSSchedLock()对调度器加锁,当我们想要恢复任务调度的时候就可以使用函数OSSchedUnlock()给已经上锁的任务调度器解锁

1.4、时间片轮转调度

UCOSIII允许一个优先级下有多个任务,每个任务可以执行指定的时间(时间片),然后轮到下一个任务,这个过程就是时间片轮转调度,当一个任务不想在运行的时候就可以放弃其时间片。

时间片轮转调度器为:OS_SchedRoundRobin()。

2、UCOSIII任务切换

当UCOSIII需要切换到另外一个任务时,它将保存当前任务的现场到当前任务的堆栈中,主要是CPU寄存器值,然后恢复新的现场并且执行新的任务,这个过程就是任务切换。

任务切换分为两种:任务级切换和中断级切换。

任务级切换函数为:OSCtxSw()。

中断级切换函数为:OSIntCtxSw()。

UCOSIII任务调度和任务切换相关推荐

  1. ucos-ii嵌入式操作系统任务调度(二)----任务切换瞬间cpu做了什么以及任务任务切换函数OS_TASK_SW

    先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题,二维码如下: 一 ...

  2. FreeRTOS任务调度与任务切换 | FreeRTOS八

    目录 说明: 一.任务调度器 1.1.开启任务调度器函数 1.2.任务调度器实现步骤 1.3.xPortStartScheduler()函数 二.启动一个任务 2.1.prvStartFirstTas ...

  3. 【UCOSIII操作系统】系统初始化篇(1)系统初始化

    UCOSIII操作系统 UCOSIII操作系统--系统初始化篇(1)系统内部任务 系统初始化函数 UCOSIII默认有5个系统任务: 空闲任务 时钟节拍任务 统计任务 定时任务 中断服务管理任务 UC ...

  4. UCOSIII系统任务

    1.1.空闲任务: 空闲任务特点: 空闲任务是UCOSIII创建的第一个任务 空闲任务是UCOSIII必须创建的 空闲任务优先级总是为 OS_CFG_PRIO_MAK-1 空闲任务中不能调用任何可使空 ...

  5. UCOSIII 系统内部任务

    在 UCOSII 中有两个系统任务:统计任务和空闲任务,在但是UCOSIII中系统内部任务扩展到了5 个 . 空闲任务.时钟节拍任务.统计任务.定时任务.中断服务管理任务.钩子函数 . 1.空闲任务: ...

  6. 基于UCOS-III的雷电传奇自制小游戏————秉火STM32F103-指南者;PS2手柄

    应实验课程要求,基于UCOS-III开发一款小游戏--雷电传奇.在此分享源代码,有相关注释,有些看不懂的欢迎随时交流. 硬件平台:秉火STM32F103-指南者,PS2手柄. 涉及内容:基于LCD屏幕 ...

  7. 【STM32H7】第13章 任务调度—抢占式,时间片和合作式

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514 第13章       任务调度-抢占式,时间片和合作式 ...

  8. 【STM32F429】第13章 任务调度—抢占式,时间片和合作式

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514 第13章       任务调度-抢占式,时间片和合作式 ...

  9. UCOSiii 杂谈【1】

    [UCOSIII内核学习] UCOSIII中将已经就绪的任务放到任务就绪表里:优先级映射表和就绪任务列表 在优先级映射表中,bit31代表优先级0,因为这样通过计算前导零CLZ来找到最高优 先级任务. ...

最新文章

  1. Linux内核OOM机制的浅析
  2. dreamweaver翻译器没有被装载由于错误coldfusion.htm有不正确的设置信息
  3. android调节音量——AudioManager的应用
  4. 用GDB排查Python程序故障
  5. 作者:夏帆(1988-),男,华东师范大学计算机科学与软件工程学院博士后。...
  6. pythongui做计算器_python GUI之简易计算器
  7. 重拾阅读--朝花夕拾啊
  8. jsp 访问mysql数据库_如何使用JSP访问MySQL数据库
  9. 1003 我要通过! (20 分)—PAT (Basic Level) Practice (中文)
  10. (转)Linux中的screen命令使用
  11. 有趣 的java代码_[分享]几段有趣的JAVA代码
  12. 前端需要了解的色彩知识
  13. 【Flink】(03)Apache Flink 漫谈系列 —— Flink 1.11 Unaligned Checkpoint 解析
  14. python-文件读写-OS-窗口控制
  15. Android高德地图导航or语音播报
  16. android电池容量查看器,Android AccuBattery(电池损耗检测软件)V1.2.5 安卓专业版
  17. 实验2:结构建型模式应用实验(1)
  18. 一加9 Pro和小米11 Pro哪个好?做了超多功课最终选择了它
  19. Attacking Black-box Recommendations viaCopying Cross-domain User Profiles
  20. react路由传参的几种方式

热门文章

  1. nodejs中cmd命令大全
  2. 电影评分预测系统分析
  3. 支付宝官方支付接口申请配置教程(如何开通支付宝支付接口)
  4. 多路复用——频分、时分、波分
  5. 金蝶eas系统服务器连接,金蝶eas服务器连接设置
  6. 51单片机入门——STC89C52RC控制步进电机进行转动、调速
  7. 十大高颜值蓝牙耳机排行榜,最受欢迎的真无线蓝牙耳机前十名
  8. Rstudio必用快捷键
  9. js导出变量 vue_js文件中怎么引用vue实例?
  10. cropper截图插件(自定义像素的图片并保存本地)