硬汉嵌入式论坛

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

[FreeRTOS] 关于时间片调度被阻塞的问题

[复制链接]

2

主题

1

回帖

7

积分

新手上路

积分
7
发表于 2025-2-9 21:39:22 | 显示全部楼层 |阅读模式
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-2-10 06:28:58 | 显示全部楼层
楼主的图片没有贴出来,这个需要单独粘贴下才行

论坛bug不支持图片复制粘贴
https://www.armbbs.cn/forum.php? ... 6432&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

2

主题

1

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2025-2-10 15:06:27 | 显示全部楼层
对于绿色部分,我的理解是task3阻塞后立即执行task4,并且task4会执行一个完整时间片,但我测试发现阻塞后下一个任务并不会执行完整时间片。
时间片大小为100ms,两个任务分别是拉高与拉低,在任务2中调用vTaskDelay(1)后切换到任务1,任务1只会执行任务2剩下的那部分时间,然后就切换到任务2。
QQ图片20250210145312.png
QQ截图20250210145740.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-2-11 07:09:57 | 显示全部楼层
理堂丁真 发表于 2025-2-10 15:06
对于绿色部分,我的理解是task3阻塞后立即执行task4,并且task4会执行一个完整时间片,但我测试发现阻塞后 ...

注意一点,截图的理论介绍不太适用于FreeRTOS

因为FreeRTOS时间片支持非常简陋,仅支持固定的1个时间片大小,且这个时间片大小等于1个系统时钟节拍。

比如你的系统时钟节拍是1ms,那么这个时间片大小就是1ms。
==================================

正式因为这个原因,导致比如当前时刻是123456ms,那么时间片切换获取时间的时候,还是这个时间,1个时间片大小后的时间123457ms就无法做到足够1ms。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 02:58 , Processed in 0.924959 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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