打印
[uCOS/RTOS]

任务开始的时候有延时,怎么个执行法

[复制链接]
2103|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
华师单车汉|  楼主 | 2013-12-23 21:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家都有任哲那本书吧!第二版148面  的问题

这个是三个任务

开始的时候 MyTask()   进去就有一个延时200ms,这个时候任务发生调度,绝对是 YouTask执行,然后再HerTask()执行,到200ms到的时候再调度
还是直接返回Mytask呢,不管怎么样,都会有那个MyTask pend_semp吧  可是执行结果不是这样的??
求解死

相关帖子

沙发
craaazyfor| | 2013-12-24 13:48 | 只看该作者
没看过任哲那本,但道理都一样,你可以贴段代码

使用特权

评论回复
板凳
华师单车汉|  楼主 | 2013-12-24 15:21 | 只看该作者
craaazyfor 发表于 2013-12-24 13:48
没看过任哲那本,但道理都一样,你可以贴段代码

贴代码不好敲 反正就是那本书上的
我来一段汉字


任务1    优先级为1
{
  for{
     开始延时200ms
     检查信号量
     执行主要东西
     释放信号量
     再延时
     }
}

开始的时候信号量被其他任务独占,所以任务1不可能执行,   

那么就进入等待队列,它等待的时间到了之后是个怎么执行法,直接执行主要部分,不管信号量吗?      还是从新开头延时那里执行

还有,在时钟中断的时候,可以剥夺CPU,那么 还在延时里面写个调度有用吗,反正在时钟中断的时候还不是要调度?

使用特权

评论回复
地板
xuele700| | 2013-12-24 16:45 | 只看该作者
C语言代码是顺序执行的。

使用特权

评论回复
5
craaazyfor| | 2013-12-26 08:16 | 只看该作者
华师单车汉 发表于 2013-12-24 15:21
贴代码不好敲 反正就是那本书上的
我来一段汉字

你开始延时200ms是普通延时还是调用os的延时,如果是os延时,延时结束会调度,如果有更高优先级的在执行则继续等,如果没有则执行你的这个任务检查信号量,如果信号量来了执行,没有则继续等待。

使用特权

评论回复
6
华师单车汉|  楼主 | 2013-12-26 12:47 | 只看该作者
craaazyfor 发表于 2013-12-26 08:16
你开始延时200ms是普通延时还是调用os的延时,如果是os延时,延时结束会调度,如果有更高优先级的在执行 ...

调用的OS延时, 敢问一下OS延时和普通延时的区别,我菜鸟一枚, 还有那个OSTickISR的时候会有任务调度,那么这两个有什么区别?

使用特权

评论回复
7
craaazyfor| | 2013-12-27 18:38 | 只看该作者
华师单车汉 发表于 2013-12-26 12:47
调用的OS延时, 敢问一下OS延时和普通延时的区别,我菜鸟一枚, 还有那个OSTickISR的时候会有任务调度, ...

OS延时一定会被挂起,普通软件延时则不一定,tick中断肯定会进行调度的,当然未必切换

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
华师单车汉 + 2 给力 真不错
8
华师单车汉|  楼主 | 2013-12-27 22:44 | 只看该作者
craaazyfor 发表于 2013-12-27 18:38
OS延时一定会被挂起,普通软件延时则不一定,tick中断肯定会进行调度的,当然未必切换 ...

太有道理了 小菜鸟跪了

使用特权

评论回复
9
llpanda| | 2013-12-31 20:19 | 只看该作者
PEND也有有超时等待的和没有超时等待的,建议去读一下源码,很简单的
延时就更简单,延时后阻塞,延时时间到后就就绪了,但是会不会马上运行还有看时候有优先级更高的就绪任务
推荐《嵌入式实时操作系统μCOS原理与实践》,现在当当上很便宜,有代码解析有流程图

使用特权

评论回复
10
287651380| | 2014-1-23 13:30 | 只看该作者

使用特权

评论回复
11
mcjixiang| | 2014-4-7 18:59 | 只看该作者
楼主,有答案了吗,是否有输出MyTask pend_semp,我最近也遇到同样问题啊,求解

使用特权

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

本版积分规则

4

主题

38

帖子

0

粉丝