硬汉嵌入式论坛

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

[μCOS-III] 关于OSTimeDlyHMSM的一些疑问

[复制链接]

28

主题

130

回帖

214

积分

高级会员

积分
214
发表于 2023-8-7 15:22:19 | 显示全部楼层 |阅读模式
OSTimeDlyHMSM这个函数我知道使用了以后会引发一次任务调度,但我有两个疑问:
1,比如程序中有A、B、C三个不同优先级的任务。当正在运行的A任务执行OSTimeDlyHMSM(这里延时时间假设设置的是20ms) 以后,A任务放弃CPU使用权,系统会进行一次任务调度切换到其他已经准备就绪的最高优先级的任务。我想知道的是20ms延时时间到了以后会发生什么。是操作系统会强制把任务切换到任务A吗。假如其他任务正在运行还没有主动放弃CPU使用权,这个时候系统会强制切换到任务A吗。
2,不同任务中的OSTimeDlyHMSM这个函数的延时时间以及任务的优先级设置有什么规律吗。


目前自己对这个函数的特性还有些迷糊。


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-8-7 16:28:01 | 显示全部楼层
1  如果B或者C在运行。且优先级低于A,会抢占他们的运行。
2、会有任务延迟抖动,高优先级任务实时性好,抖动小,仅受中断抢占影响。
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2023-8-23 16:55:45 | 显示全部楼层
eric2013 发表于 2023-8-7 16:28
1  如果B或者C在运行。且优先级低于A,会抢占他们的运行。
2、会有任务延迟抖动,高优先级任务实时性好, ...

1,假如B或C运行一次的时间比A的OSTimeDlyHMSM 20毫秒的延时时间要长(也就是说A任务延时时间不够B或者C运行一遍),在B或者C还没有主动引发任务调度的时候如果A任务的优先级比B、C高,即使B或者C没有主动引发任务调度,系统也会强制性的把任务切换到A任务吗?还是说要等B或者C任务运行到最后主动引发任务调度A才会继续运行。




2,假如B或C运行一次的时间比A的OSTimeDlyHMSM 20毫秒的延时时间要长(也就是说A任务延时时间不够B或者C运行一遍),在B或者C还没有主动引发任务调度的时候如果A任务的优先级比B、C低,A任务OSTimeDlyHMSM 20毫秒延时时间到了以后应该并不会立马执行,而仅仅只是变为就绪状态,等待B或者C运行到最后主动引发任务调度这样才会重新切换到A,不知道我的理解对不对。

回复

使用道具 举报

19

主题

234

回帖

291

积分

高级会员

积分
291
发表于 2023-8-23 17:21:43 | 显示全部楼层
systick中断里面也会进行任务调度,20个tick之后,在调度的时候发现A处于就绪态并且优先级BC高,就会切换到A
回复

使用道具 举报

28

主题

130

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2023-8-23 17:29:59 | 显示全部楼层
tovinz 发表于 2023-8-23 17:21
systick中断里面也会进行任务调度,20个tick之后,在调度的时候发现A处于就绪态并且优先级BC高,就会切换到 ...

这个其实应该就是系统在不断扫描各个就绪任务的优先级,然后系统把任务强制切换到最高优先级那个任务,这个就属于所谓的抢占式吧。
回复

使用道具 举报

19

主题

234

回帖

291

积分

高级会员

积分
291
发表于 2023-8-24 09:00:18 | 显示全部楼层
logo 发表于 2023-8-23 17:29
这个其实应该就是系统在不断扫描各个就绪任务的优先级,然后系统把任务强制切换到最高优先级那个任务,这 ...

我的理解是
想要任务调度就必须让调度器获取到CPU的执行权(CPU执行调度器代码),调用操作系统接口就可以让调度器工作。1. 在systick中断里会调用,2. 用户自己调用各种操作系统接口
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 13:16 , Processed in 0.308938 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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