小狐狸 发表于 2018-8-16 12:56:41

RTX使能了时间片轮转调度,但是实际各个任务的优先级不同,各个任务按照什么原则来切换呢?


如题,RTX在配置文件中使能了:Round-Robin Task switching,但是实际建立的5个任务,各个任务的优先级不同。
1、此时os是以时间片轮转调度的方式切换各个任务呢还是按照优先级顺序来切换呢?
2、如果这5个任务的优先级相同,又使能了Round-Robin,这时肯定是时间片方式切换的任务吧?
3、如果这5个任务的优先级相同,但是没有使能Round-Robin,这时任务的切换方式是什么呢?
4、时间片、抢占调度在一个工程中只能使用一种吗?两种中的一种可以配合合作模式工作,我觉得可以实现,是不是这样呢?




eric2013 发表于 2018-8-17 11:08:51

1、同优先级任务才有时间片调度,你这个只有抢占式。
2、对的。
3、只有一个任务跑
4、可以同时用的。

小狐狸 发表于 2018-8-17 13:17:09

eric2013 发表于 2018-8-17 11:08
1、同优先级任务才有时间片调度,你这个只有抢占式。
2、对的。
3、只有一个任务跑


谢谢硬汉哥,我再好好体会下

yexiangru 发表于 2018-10-24 09:59:46

eric2013 发表于 2018-8-17 11:08
1、同优先级任务才有时间片调度,你这个只有抢占式。
2、对的。
3、只有一个任务跑


优先级相同,但是没有使能Round-Robin这时不应该是合作式调度吗?

myxiaonia 发表于 2018-10-24 10:47:48

yexiangru 发表于 2018-10-24 09:59
优先级相同,但是没有使能Round-Robin这时不应该是合作式调度吗?

这时确实是合作式的,如果不主动调用让出执行权的api,只有一个任务能跑
每个任务都主动让出,就是合作式的

yexiangru 发表于 2018-10-24 11:15:11

myxiaonia 发表于 2018-10-24 10:47
这时确实是合作式的,如果不主动调用让出执行权的api,只有一个任务能跑
每个任务都主动让出,就是合作 ...

原来如此。

wdliming 发表于 2020-4-11 14:41:35

eric2013 发表于 2018-8-17 11:08
1、同优先级任务才有时间片调度,你这个只有抢占式。
2、对的。
3、只有一个任务跑


如果使能了抢占式,而5个任务的优先级是相同的,那么这5个任务其实还是时间片算法吧。

emwin 发表于 2020-4-12 21:56:22

楼主的第3点的情况,文档里是这么说的:
The osThreadYield provides co-operative thread switching and passes execution to
another thread of the same priority.

清风徐来 发表于 2020-9-25 15:02:52

有个疑问?   RTX 基于时间片调度 ,三个优先级相同的任务都处于就绪态,系统到底会执行哪个呢?      

清风徐来 发表于 2020-9-25 15:06:35

有个疑问 ?   RTX使能了时间片,如果当前只有 3个优先级相同的任务,同时就绪。到底会首先执行哪个?难道是随机的?

myxiaonia 发表于 2020-9-25 15:39:06

清风徐来 发表于 2020-9-25 15:02
有个疑问?   RTX 基于时间片调度 ,三个优先级相同的任务都处于就绪态,系统到底会执行哪个呢?

好像是最后一个放在队列头部,因此是最后一个就绪的会先执行,看rtx代码即可

清风徐来 发表于 2020-9-25 17:09:50

myxiaonia 发表于 2020-9-25 15:39
好像是最后一个放在队列头部,因此是最后一个就绪的会先执行,看rtx代码即可

好的 。还有个疑问,RTX源码中不存在临界区。但是用户在写应用程序的时候 还要考虑临界区吗?

myxiaonia 发表于 2020-9-26 22:01:50

清风徐来 发表于 2020-9-25 17:09
好的 。还有个疑问,RTX源码中不存在临界区。但是用户在写应用程序的时候 还要考虑临界区吗?

当然不需要,唯一要注意是任务内和中断内使用的API是不一样的
页: [1]
查看完整版本: RTX使能了时间片轮转调度,但是实际各个任务的优先级不同,各个任务按照什么原则来切换呢?