打印

求解一个ucos 问题

[复制链接]
2262|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hnylcxq|  楼主 | 2011-12-12 17:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问一下,ucos中得统计任务最后是有一个OSTimeDly(OS_TICKS_PER_SEC)函数,但是我有个疑问,统计任务的优先级倒数第二低,那么怎么能保证一秒之后统计任务一定能够运行呢?如果系统有很多任务在运行,会不会使得统计任务过了两三秒才运行一次呢???

相关帖子

沙发
hnylcxq|  楼主 | 2011-12-12 20:40 | 只看该作者
追问:如果两三秒才允许一次,那么它统计的cpu利用率会不是有问题呢?

使用特权

评论回复
板凳
hnylcxq|  楼主 | 2012-1-5 16:55 | 只看该作者
困扰,求解答,谢谢了

使用特权

评论回复
地板
hotyong| | 2012-1-5 17:06 | 只看该作者
本帖最后由 hotyong 于 2012-1-5 17:08 编辑

统计任务是统计占用了多少CPU,如果统计任务得不到运行,那空闲任务肯定也是得不到运行的,那这种情况下只有CPU占用率为100%的情况下才有。如果长时间CPU占用100%的话,这样的任务设计应该是有问题的。

使用特权

评论回复
5
fe07fe| | 2012-1-5 19:28 | 只看该作者
空闲任务不是那个系统的最高优先级的那个系统任务吗,怎不能运行呢,CPU占用率为100%又不是说一个任务全部占用CPU,而是多个,OSTimeDly(OS_TICKS_PER_SEC)这个不是延时函数吗?好像延时函数还有释放cpu的功能,我也不很是了解。

使用特权

评论回复
6
lty8433| | 2012-1-5 19:47 | 只看该作者
期待详细解答

使用特权

评论回复
7
chenjinst| | 2013-10-24 09:50 | 只看该作者
空闲任务是UCOS优先级最低的任务,如果它得不到运行,则CPU一直被占用着,一直被占用着,那还用说吗CPU利用率100%还多。

使用特权

评论回复
8
JasonWangSE| | 2013-10-24 19:01 | 只看该作者
应该在每个任务的TCB中都有一个用来做统计的tick计数变量,统计开启时会向时钟中断处理函数中挂一个接口,这个接口负责在时钟中断或者辅助时钟中断中,对当前被中断的任务的tick计数变量+1。统计任务是一个长时间运行的任务,比如时钟是每秒100个tick,配置统计任务每5s运行一次,则每次统计的时候总共过去500个tick,统计任务会查看个任务TCB中的tick计数,处以500就是这个任务的CPU占用率,然后再将tick清0,准备下一次统计。需要长时间运行统计任务来查看系统的运行情况。真正干活的是时钟中断,统计任务只是起个汇总上报的作用,所以多久运行一次其实关系不大。

使用特权

评论回复
9
zdhlixiang2006| | 2013-10-25 20:40 | 只看该作者
统计任务是系统优先级次低的任务,仅仅高于空闲任务,如果它都得不到执行,这个系统肯定出问题了

使用特权

评论回复
10
西门看雪| | 2013-10-26 01:28 | 只看该作者
JasonWangSE 发表于 2013-10-24 19:01
应该在每个任务的TCB中都有一个用来做统计的tick计数变量,统计开启时会向时钟中断处理函数中挂一个接口, ...

只能说你没有看过UCOS II的源代码。

计算CPU占用率的原理不是这样的。

使用特权

评论回复
11
JasonWangSE| | 2013-10-26 21:50 | 只看该作者
西门看雪 发表于 2013-10-26 01:28
只能说你没有看过UCOS II的源代码。

计算CPU占用率的原理不是这样的。

您是说总的CPU占用率是通过100%减去idle任务的CPU占用率来统计的吗?那您能帮忙介绍一下各个任务的CPU占用率统计原理吗?

使用特权

评论回复
12
西门看雪| | 2013-10-26 22:33 | 只看该作者
JasonWangSE 发表于 2013-10-26 21:50
您是说总的CPU占用率是通过100%减去idle任务的CPU占用率来统计的吗?那您能帮忙介绍一下各个任务的CPU占 ...

UCOS II 没有统计每一个任务的CPU占用率这个功能,只有统计总的CPU占用率,别扯太远!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

24

帖子

1

粉丝