打印
[新手园地]

《嵌入式系统的实时概念》手机学习笔记1

[复制链接]
4577|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2011-6-1 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
hotpower|  楼主 | 2011-6-1 10:32 | 只看该作者
《第五章  任务》
俺学习的方法是从自己最需要的章节入手。
看到“任务”两字,总联想到进程,线程,回调函数,事件处理,消息处理等术语。可能是理解和叫法及应用不同吧。
书中对任务的定义是可调度的独立执行的线程。
俺目前只对空闲谈任务感兴趣。它本是一个级别最低的系统任务,用户可以用自己的空闲任务替代。一般用于做低功耗处理。
用裸奔的思维看空闲任务,它实际就是一个死循环或或后台全部无用轮询时间的集合。

使用特权

评论回复
板凳
hotpower|  楼主 | 2011-6-1 10:51 | 只看该作者
任务状态
每个任务都有最基本的三态:就绪,运行和阻塞。
从字面上看,:
就绪就是准备好了,等待出击,等待领导的指令。
运行就是在跑,这个好理解。
阻塞这个有些怪异,有些人说应该是挂起。但有些rtos有专门的挂起状态处理异常任务的。
从裸奔的思维无法理解这个阻塞,因为这是rtos与裸奔最大的差异。
裸奔中除中断能打断程序的正常运行必须外,无法踏步在原地让其他程序运行。
而rtos最大的特点就是高级别任务阻塞,将控制权交给低级别的任务运行。
裸奔只能通过协作,经过特殊处理分隔程序,以便其他程序能得到运行的机会。

使用特权

评论回复
地板
hotpower|  楼主 | 2011-6-2 08:31 | 只看该作者
就绪状态
要战斗,必须有预备役部队的支持,否则后劲不足。
它和阻塞的共同特点都是等待,但后者是等待阻击。前者是等待出击。
每个任务在建立时都被初始化为就绪状态,由内核根据优先级别调度某个任务最先运行。
就绪状态可以被迁移到运行状态,但一般不能不能被迁移到阻塞状态。
在运行状态的任务可以被迁移为就绪状态,此时肯定有比该任务级别更高的任务从就绪进入运行。
这个可以从有限状态机图示5.2看出的。

使用特权

评论回复
5
hotpower|  楼主 | 2011-6-2 11:23 | 只看该作者
运行状态
运行时就得到了控制权,它可以回到就绪状态,
因为可能有更高级别的任务获取了控制权,使
当前任务被迫交出控制权。
任务也可主动放弃控制权利。例如需要等待一个同步对象的到来,使自己主动迁移到阻塞状态。
高级别的任务必须设计有阻塞,否则低级别的任务就无法获取运行的权利。这个很重要!
除非你的任务级别最低,如覆盖了系统的空闲任务。

使用特权

评论回复
6
hotpower|  楼主 | 2011-6-2 14:25 | 只看该作者
阻塞状态
这个状态最精彩。有了它,原本看着连续工作的任务被悄悄地让给了其他任务工作。
我们可以在任务里专心的工作,而不太关心他人。
但是也要注意谦让,照顾比自己级别低的任务。如同我们编写中断服务程序一样,不能在中断里停留时间过长。
如果你不想照顾他人,那就把自己的级别定义为最低。
总之,独占cpu时间的习惯是不好的,正确地应该在高级别任务里设计阻塞,这样低级别任务才有机会运行。
要被迁移到阻塞状态必须要调用可以阻塞的内核函数。
如任务等待一个信号灯令牌的释放,等待消息的到来,节拍延时或任务阻塞超时等等。
俺理解阻塞像战场上的主动防御,阻塞是有任务主动完成的,而就绪可能是被迫的,如高级别的任务。

使用特权

评论回复
7
hotpower|  楼主 | 2011-6-2 15:04 | 只看该作者
无限循环任务
每个任务实例函数内主要由两部分组成,
一个是该任务的初始化代码,即局部变量
的初始化居多,在cpp的rtos如look可以在
其任务类的构造函数内执行。
其次也是最重要的是用while(1)﹛﹜,做成死循环,即无限循环,具体任务填写在无限循环中。
任务你可以写成流水账,随你如何发挥,但还是
那句注意谦让,一定要做阻塞架构,任务里一定
要调用一个或多个阻塞。否则低级别的任务就无法得到运行的机会了。
当然也要和调度算法结合了。

使用特权

评论回复
8
murex| | 2011-6-2 15:12 | 只看该作者
本帖最后由 murex 于 2011-6-2 15:14 编辑

这回可以顶了,哈哈
菜农的比喻形象生动,继续写笔记,俺们看着就是

使用特权

评论回复
9
hotpower|  楼主 | 2011-6-2 15:17 | 只看该作者
第五章的学习心得写完了,不喀嚓了

使用特权

评论回复
10
电子write_cai| | 2011-8-8 00:10 | 只看该作者
顶起来。有机会学学。

使用特权

评论回复
11
hotpower|  楼主 | 2011-12-3 12:57 | 只看该作者
顶起来学习

使用特权

评论回复
12
zjsyjbb| | 2011-12-3 18:05 | 只看该作者
学习菜叔的思想..

使用特权

评论回复
13
zzyaizll| | 2011-12-5 10:38 | 只看该作者
DINGiiiiiiiiiiiiiiiiii

使用特权

评论回复
14
呆板书生| | 2012-1-16 06:45 | 只看该作者
阻塞状态
这个状态最精彩。有了它,原本看着连续工作的任务被悄悄地让给了其他任务工作。
我们可以在任务里专心的工作,而不太关心他人。
但是也要注意谦让,照顾比自己级别低的任务。如同我们编写中断服务程序一样 ...
hotpower 发表于 2011-6-2 14:25

这个妙,但还要慢慢理解

使用特权

评论回复
15
hotpower|  楼主 | 2012-1-16 08:27 | 只看该作者
学习必须要有自己的理解和想像。

使用特权

评论回复
16
abin0415| | 2012-4-29 02:18 | 只看该作者
看了菜叔的笔记后,更能理解阻塞的含义了。在此,感谢菜叔的无私奉献。

使用特权

评论回复
17
ahljj| | 2013-1-1 21:24 | 只看该作者

使用特权

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

本版积分规则

1460

主题

21619

帖子

506

粉丝