打印
[新手园地]

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

[复制链接]
3170|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2011-6-2 15:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
hotpower|  楼主 | 2011-6-2 16:05 | 只看该作者
《第六章 信号灯》
看到了这一章节的标题,俺就想起了两部电影,《**毛信》和地道战。
前者是用山上的小树作为传递消息的载体,后者是放鬼子进村关门打狗。
前者用于对任务的同步运行,后者协调对共享资源的互斥访问。
在老师的look里,就是同步对象中的“计数信号量类”的look::sem_t
有两个最重要的有两个成员函数:
wait()和post()

使用特权

评论回复
板凳
hotpower|  楼主 | 2011-6-2 16:49 | 只看该作者
获取和释放信号灯
获取有等待和接收的含义,但释放有些难以理解。
真不如叫做接收和发送更好理解些。特别在消息的传递上面。
在共享资源应用中,获取和释放就理解正确了。
它们对应的函数在look里就是wait()和post()

使用特权

评论回复
地板
hotpower|  楼主 | 2011-6-2 17:10 | 只看该作者
等待和信号同步
在rtos里面,存在着中断和任务,任务和任务之间的通讯问题。
运行中的任务主动阻塞,等待一个命令即同步信号的到来。
阻塞不想裸奔那样傻等,一直while那个信号,其他程序别玩了。
阻塞是将控制权交还给rtos,等信号发送源发送消息后再被唤醒。
有点回调函数的意思和事件驱动的味道。
即有事件发生才被唤醒干活,其他时间休息。
信号源可以是中断服务程序,也可以是其他任务。
但要特别注意,中断服务程序不要阻塞发送!

使用特权

评论回复
5
hotpower|  楼主 | 2011-6-2 18:02 | 只看该作者
look实现等待和信号同步
在作为中断和任务,任务和任务之间的信号传递应用中,一定要初始化sem为0。
那么wait()和post()的规则如下:
1.由于sem=0,故wait()认为信号灯不可使用,进入阻塞等待。
2.发送源,如中断服务程序或其他任务post(),此时sem=1,即信号灯可以使用,任务迁移到就绪,再从就绪到运行。
3.接收任务运行后,sem=0,即信号灯又不可使用了。由于任务的无限循环,所以必然回到(1)

以此规律循环往复,用不消失。

我们可以比较裸奔和rtos在这上面的最大区别,裸奔靠瞎忙,任务靠阻塞。

使用特权

评论回复
6
hotpower|  楼主 | 2011-6-3 08:54 | 只看该作者
单一共享资源访问同步
在多任务系统中,最需注意的就是对共享资源的互斥访问。
最经典的案例就是打印机的共享问题,即使级别最低的文件,也不应该被高级别任务强行终止。至少应该等待当前页打印完。
再者文件不可能高低级别的打印在一页上。
故多个打印任务必须串行化方向。
信号灯的规则是sem=0时不可用,任务被阻塞,非零可用,任务获取对资源的独占。
这个规则如同关门打狗,放鬼子进村。
sem=1,一股鬼子进村,sem=0,关门打狗!
由于sem=0,其他鬼子不能进村增援!
战斗结束,再开门sem=1,继续放鬼子进村!

使用特权

评论回复
7
hotpower|  楼主 | 2011-6-3 09:30 | 只看该作者
look实现共享资源的互斥访问
与中断和任务,任务和任务之间的消息传递不同,
sem要初始化为1,在任务里面,最先运行wait()的任务look将sem变为0,它会使企图
访问共享资源的任务阻塞。当本任务对共享资源的访问结束后,执行post()释放信号灯,look会将sem=1。
这样其他运行wait()的任务就有机会独自占用共享资源。

使用特权

评论回复
8
hotpower|  楼主 | 2011-6-3 11:28 | 只看该作者
信号灯笔记总结
1.信号灯可用,sem非0,任务继续运行,
  不可用,sem为0,任务阻塞等待。
2.在中断与任务,任务与任务之间的同步时,
   sem应该初始化为0,运行的任务wait()阻塞,中断或任务post()唤醒那个被阻塞的任务,
特别注意中断中不能阻塞post(),在look中,
应该在dsr()内,do_post()。
3.为共享资源的互斥访问时,sem应该初始化为非0,任务是先用wait()独占,再post()释放。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
电子write_cai + 1
9
电子write_cai| | 2011-8-8 00:12 | 只看该作者
写完我顶

使用特权

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

使用特权

评论回复
11
abin0415| | 2012-4-29 02:26 | 只看该作者
菜叔比喻的真形象。

使用特权

评论回复
12
wendaogo| | 2012-4-29 08:53 | 只看该作者
顶起来

使用特权

评论回复
13
klarke23| | 2012-4-29 09:06 | 只看该作者
顶起来。。:)

使用特权

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

本版积分规则

1460

主题

21619

帖子

506

粉丝