嵌入式学习小组
直播中

王晋

7年用户 178经验值
私信 关注

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

疑惑:UCOSIII中的任务调度和任务切换有什么区别?
原子哥在PPT里面的解释是:任务调度就是中止当前正在运行的任务转而去执行其他的任务。
当UCOSIII需要切换到另外一个任务时,它将保存当前任务的现场到当前任务的堆栈中,主要是CPU寄存器值,然后恢复新的现场并且执行新的任务,这个过程就是任务切换。
问题:1.他们的区别是任务切换有保存现场,而任务调度没有保存现场吗?
2.中止当前运行的任务是完全结束当前任务吗?还是说转而执行其他任务,其他任务结束完成之后再回过头来继续之前没有完成的任务?
在学习UCOSIII有点困惑,希望大神指导一下。万分感激!

回帖(4)

李丹丹

2020-5-25 15:25:54
任务级切换函数为:OSCtxSw().   任务级调度器为:OSSched()     查阅了《STM32F1 UCOS开发手册》之后发现了这段,也就是说任务级调度器包含了任务切换函数。他们之间是包含与被包含的关系。大致也可以理解为同一个东西。楼上的解释也有一定道理。
举报

李韵

2020-5-25 15:45:44
没深入学过ucos的概念的东西,但是我的理解就是同一个东西,ucos里面任务的切换离不开OSSched,不管你任务中delay或者是post之类引起调度,还是系统本身根据时间片轮转,最后都是要调用这个函数,都需要保存寄存器的。我感觉你理解错了,不过我只是字面理解,具体概念是否有区别我没学过。
另外就是OSSched中的保存寄存器的调用部分应该可以优化,我看着很明显,不过暂时没时间实验,等新项目完成了再实验下我我的想法。希望有研究过的高手可以说说。
举报

江皎

2020-5-25 16:04:31
我认为没区别,中文不同而已。但楼主如果问某俩API的区别,倒是可以说得清。
举报

马丽

2020-5-25 16:19:59
哦哦,多谢提醒,我找到答案了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分