OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7374|回复: 7

UCOSIII中的任务调度和任务切换有什么区别?

[复制链接]

6

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-12-11
在线时间
53 小时
发表于 2016-8-15 20:36:43 | 显示全部楼层 |阅读模式
2金钱
疑惑:UCOSIII中的任务调度和任务切换有什么区别?
原子哥在PPT里面的解释是:任务调度就是中止当前正在运行的任务转而去执行其他的任务。
当UCOSIII需要切换到另外一个任务时,它将保存当前任务的现场到当前任务的堆栈中,主要是CPU寄存器值,然后恢复新的现场并且执行新的任务,这个过程就是任务切换。

问题:1.他们的区别是任务切换有保存现场,而任务调度没有保存现场吗?
2.中止当前运行的任务是完全结束当前任务吗?还是说转而执行其他任务,其他任务结束完成之后再回过头来继续之前没有完成的任务?
在学习UCOSIII有点困惑,希望大神指导一下。万分感激!

最佳答案

查看完整内容[请看2#楼]

任务级切换函数为:OSCtxSw(). 任务级调度器为:OSSched() 查阅了《STM32F1 UCOS开发手册》之后发现了这段,也就是说任务级调度器包含了任务切换函数。他们之间是包含与被包含的关系。大致也可以理解为同一个东西。楼上的解释也有一定道理。
Try again and there is nothing left to say.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-12-11
在线时间
53 小时
 楼主| 发表于 2016-8-15 20:36:44 | 显示全部楼层
任务级切换函数为:OSCtxSw().   任务级调度器为:OSSched()     查阅了《STM32F1 UCOS开发手册》之后发现了这段,也就是说任务级调度器包含了任务切换函数。他们之间是包含与被包含的关系。大致也可以理解为同一个东西。楼上的解释也有一定道理。
任务级调度.png
Try again and there is nothing left to say.
回复

使用道具 举报

8

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2016-7-16
在线时间
31 小时
发表于 2016-8-16 07:55:35 | 显示全部楼层
响应号召,顶起
回复

使用道具 举报

19

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1341
金钱
1341
注册时间
2016-4-22
在线时间
187 小时
发表于 2016-8-16 09:01:33 | 显示全部楼层
没深入学过ucos的概念的东西,但是我的理解就是同一个东西,ucos里面任务的切换离不开OSSched,不管你任务中delay或者是post之类引起调度,还是系统本身根据时间片轮转,最后都是要调用这个函数,都需要保存寄存器的。我感觉你理解错了,不过我只是字面理解,具体概念是否有区别我没学过。


另外就是OSSched中的保存寄存器的调用部分应该可以优化,我看着很明显,不过暂时没时间实验,等新项目完成了再实验下我我的想法。希望有研究过的高手可以说说。
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒摧肠三杯醉,寻香惊梦五更寒。
钗头凤斜卿有泪,荼蘼花了我无缘。
小楼寂寞新雨月,也难如钩也难圆。
回复

使用道具 举报

18

主题

422

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1139
金钱
1139
注册时间
2014-5-24
在线时间
116 小时
发表于 2016-8-16 11:03:04 | 显示全部楼层
我认为没区别,中文不同而已。但楼主如果问某俩API的区别,倒是可以说得清。
I See Fire.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.  只给方向,不妨碍思考
回复

使用道具 举报

6

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-12-11
在线时间
53 小时
 楼主| 发表于 2016-8-16 11:13:03 | 显示全部楼层
emWin 发表于 2016-8-16 11:03
我认为没区别,中文不同而已。但楼主如果问某俩API的区别,倒是可以说得清。

哦哦,多谢提醒,我找到答案了。
Try again and there is nothing left to say.
回复

使用道具 举报

6

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-12-11
在线时间
53 小时
 楼主| 发表于 2016-8-16 11:13:42 | 显示全部楼层
ysq7120 发表于 2016-8-16 09:01
没深入学过ucos的概念的东西,但是我的理解就是同一个东西,ucos里面任务的切换离不开OSSched,不管你任务 ...

嗯嗯,多谢点拨,我找到答案了。
Try again and there is nothing left to say.
回复

使用道具 举报

14

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
500
金钱
500
注册时间
2017-4-25
在线时间
110 小时
发表于 2017-9-11 12:09:41 | 显示全部楼层
任务调度是MCU响应优先级(高),之后才是任务切换,不知道对不对?
应该是这样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-2 04:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表