硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1836|回复: 8
收起左侧

[FreeRTOS] Freertos的时间片轮询调度问题

[复制链接]

7

主题

53

回帖

74

积分

初级会员

积分
74
发表于 2024-9-6 09:55:14 | 显示全部楼层 |阅读模式
本帖最后由 dc7170 于 2024-9-6 09:58 编辑

请教一下,如果A,B,C任务的优先级相同,A先执行,执行时间不足一个时间片,此时A主动释放CPU,此时一个时间片的时间快用完了,然后B被选择,但是B在A的这个剩余时间片内不能被执行完,那么在A的这个时间片被执行完之后,系统会如何调度,新的时间片执行时是继续执行完B,还是挂起B转向执行C。另外,这个地方我是否理解的有问题。任务主动放弃CPU后,新任务是否获得是一个新的完整时间片,还是继续使用之前任务未使用完的时间片时间。如果A,B,C任务的优先级相同,A先执行,执行时间不足一个时间片,但是快接近一个时间片的结束,此时A主动释放CPU,然后B被选择,但是B在A的这个剩余时间片内不能被执行完,此时系统如何处理果A,B,C任务的优先级相同,A先执行,执行时间不足一个时间片,但是快接近一个时间片的结束,此时A释放CPU,然后B被选择,但是B在A的这个剩余时间片内不能被执行完,此时系统如何处理如果A,B,C任务的优先级相同,A先执行,执行时间不足一个时间片,但是快接近一个时间片的结束,此时A主动释放CPU,然后B被选择,但是B在A的这个剩余时间片内不能被执行完,此时系统如何处理
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-9-6 11:04:15 | 显示全部楼层
1、时间片的理解有误,首先FreeRTOS仅支持1个时间,A执行不完,跟B没关系,A释放后,B是执行自己的1个时间片。
2、新的时间片。
回复

使用道具 举报

7

主题

53

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2024-9-6 11:19:12 | 显示全部楼层
eric2013 发表于 2024-9-6 11:04
1、时间片的理解有误,首先FreeRTOS仅支持1个时间,A执行不完,跟B没关系,A释放后,B是执行自己的1个时间 ...

谢谢,感谢回复
回复

使用道具 举报

7

主题

53

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2024-9-6 11:33:32 | 显示全部楼层
eric2013 发表于 2024-9-6 11:04
1、时间片的理解有误,首先FreeRTOS仅支持1个时间,A执行不完,跟B没关系,A释放后,B是执行自己的1个时间 ...

还有个疑问,在使用时间片的情况下,如果A,B,C优先级相同,如果A的时间片快用完时,主动释放了CPU进行了任务调度,此时系统开始执行任务B,在B还未执行完的时候,系统中断到了,此时是不是就会通过任务调度执行任务C而挂起B了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-9-6 11:54:05 | 显示全部楼层
dc7170 发表于 2024-9-6 11:33
还有个疑问,在使用时间片的情况下,如果A,B,C优先级相同,如果A的时间片快用完时,主动释放了CPU进行了 ...

回复

使用道具 举报

7

主题

53

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2024-10-15 09:52:10 | 显示全部楼层

接之前问题。如果A的时间片还没有执行完,主动切出了任务。此时系统选择了一个相同优先级的任务B,但是如果紧接着发生了系统时钟中断,实际上此时B的时间片还未执行完,在这次的系统时钟中断中,任务调度器会停止B,转而执行相同优先级的C吗?还是不进行切换。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-10-15 10:30:06 | 显示全部楼层
dc7170 发表于 2024-10-15 09:52
接之前问题。如果A的时间片还没有执行完,主动切出了任务。此时系统选择了一个相同优先级的任务B,但是如 ...

这种情况下,应该切换到C。因为FreeRTOS仅支持一个时间片,切换到B后,给的时间还是当前时间点内。没法执行够一个时间片了。

建议实测下
回复

使用道具 举报

7

主题

53

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2024-10-15 18:56:28 | 显示全部楼层
eric2013 发表于 2024-10-15 10:30
这种情况下,应该切换到C。因为FreeRTOS仅支持一个时间片,切换到B后,给的时间还是当前时间点内。没法执 ...

“因为FreeRTOS仅支持一个时间片,切换到B后,给的时间还是当前时间点内。没法执行够一个时间片了。”这个回答好像和上面2楼给我的回答想矛盾。二楼回答说是B用的也是一个属于自己的新的时间片。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-10-15 19:39:52 | 显示全部楼层
dc7170 发表于 2024-10-15 18:56
“因为FreeRTOS仅支持一个时间片,切换到B后,给的时间还是当前时间点内。没法执行够一个时间片了。”这 ...

不矛盾,A释放后,B一定是获得一个自己的完整时间片,但是FreeRTOS仅支持1个时间片,必须扣下细节了,这个时间片的统计就有将近1个时间片的抖动误差。比如A在第1个时间片(从1ms开始),时间单位1ms,那么1.8ms的切换到B,此时时间计数还是1,到第2个时间片得释放了。

这个算是一个细节的计算问题,具体你可以实测下。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 16:17 , Processed in 0.045212 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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