UCOSIII任务调度和任务切换
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任务调度和任务切换相关推荐
- ucos-ii嵌入式操作系统任务调度(二)----任务切换瞬间cpu做了什么以及任务任务切换函数OS_TASK_SW
先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题,二维码如下: 一 ...
- FreeRTOS任务调度与任务切换 | FreeRTOS八
目录 说明: 一.任务调度器 1.1.开启任务调度器函数 1.2.任务调度器实现步骤 1.3.xPortStartScheduler()函数 二.启动一个任务 2.1.prvStartFirstTas ...
- 【UCOSIII操作系统】系统初始化篇(1)系统初始化
UCOSIII操作系统 UCOSIII操作系统--系统初始化篇(1)系统内部任务 系统初始化函数 UCOSIII默认有5个系统任务: 空闲任务 时钟节拍任务 统计任务 定时任务 中断服务管理任务 UC ...
- UCOSIII系统任务
1.1.空闲任务: 空闲任务特点: 空闲任务是UCOSIII创建的第一个任务 空闲任务是UCOSIII必须创建的 空闲任务优先级总是为 OS_CFG_PRIO_MAK-1 空闲任务中不能调用任何可使空 ...
- UCOSIII 系统内部任务
在 UCOSII 中有两个系统任务:统计任务和空闲任务,在但是UCOSIII中系统内部任务扩展到了5 个 . 空闲任务.时钟节拍任务.统计任务.定时任务.中断服务管理任务.钩子函数 . 1.空闲任务: ...
- 基于UCOS-III的雷电传奇自制小游戏————秉火STM32F103-指南者;PS2手柄
应实验课程要求,基于UCOS-III开发一款小游戏--雷电传奇.在此分享源代码,有相关注释,有些看不懂的欢迎随时交流. 硬件平台:秉火STM32F103-指南者,PS2手柄. 涉及内容:基于LCD屏幕 ...
- 【STM32H7】第13章 任务调度—抢占式,时间片和合作式
论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514 第13章 任务调度-抢占式,时间片和合作式 ...
- 【STM32F429】第13章 任务调度—抢占式,时间片和合作式
论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99514 第13章 任务调度-抢占式,时间片和合作式 ...
- UCOSiii 杂谈【1】
[UCOSIII内核学习] UCOSIII中将已经就绪的任务放到任务就绪表里:优先级映射表和就绪任务列表 在优先级映射表中,bit31代表优先级0,因为这样通过计算前导零CLZ来找到最高优 先级任务. ...
最新文章
- Linux内核OOM机制的浅析
- dreamweaver翻译器没有被装载由于错误coldfusion.htm有不正确的设置信息
- android调节音量——AudioManager的应用
- 用GDB排查Python程序故障
- 作者:夏帆(1988-),男,华东师范大学计算机科学与软件工程学院博士后。...
- pythongui做计算器_python GUI之简易计算器
- 重拾阅读--朝花夕拾啊
- jsp 访问mysql数据库_如何使用JSP访问MySQL数据库
- 1003 我要通过! (20 分)—PAT (Basic Level) Practice (中文)
- (转)Linux中的screen命令使用
- 有趣 的java代码_[分享]几段有趣的JAVA代码
- 前端需要了解的色彩知识
- 【Flink】(03)Apache Flink 漫谈系列 —— Flink 1.11 Unaligned Checkpoint 解析
- python-文件读写-OS-窗口控制
- Android高德地图导航or语音播报
- android电池容量查看器,Android AccuBattery(电池损耗检测软件)V1.2.5 安卓专业版
- 实验2:结构建型模式应用实验(1)
- 一加9 Pro和小米11 Pro哪个好?做了超多功课最终选择了它
- Attacking Black-box Recommendations viaCopying Cross-domain User Profiles
- react路由传参的几种方式