smartrtos单片机多任务操作系统发布,资源已可以下载

[复制链接]
11413|50
 楼主| singleywy 发表于 2011-3-14 17:18 | 显示全部楼层
还有就是,您理解的是对的,分别设置了5个信号量,代表了5个资源,由于发表仓促,一些细节的东西还没有介绍,
PS:OsSemV(0),当信号量0释放的时候,如果有更高优先级的任务在等待信号量,则立即进行任务切换;
刘前辈 发表于 2011-3-14 17:45 | 显示全部楼层
40楼说的没错。所以我说你把程序写成了5个人轮流吃饭,那就成了:

“哲学家A想吃饭的时候,谁都不许跟我抢,直至现在正在吃饭的人放下筷子。”

那这还算是世界经典问题么?裸奔就做了:
while (第一只筷子);
while( 第二只筷子)
{开吃;}

PS:OsSemP(0,255)表示,获取信号量0,如果不能获取,则插入等待列表,直至信号到来


说的正是这个问题,“直至信号到来”。没错的。但是:
1、这里你不可能关中断!对吧?关了中断,信号来了你也不知道,
2、既然不能关中断,也就是说5个任务并发执行——5个哲学家的脑子是同时工作的,没有先趋后继顺序。
3、所以,“直至信号到来”。它就是不来!它已经被哲学家D或者B拿走了!而且其他哲学家也在等着A信号到来,A却拿着一只筷子不释放。
4、结果大家互相等待。

5、这里是在编写并发程序,没有顺序1、2、3、4、5;“直至信号到来”。对5个哲学家来说都是一样的。所以谁也等不来。很简单的理论——“我凭什么把筷子(信号)让给你?我还饿着呢。”





 楼主| singleywy 发表于 2011-3-14 17:52 | 显示全部楼层
42# 刘前辈
回复您,您可以看一下,计算机操作系统相关数据,涉及到信号量,同时也提到了这个问题,解决方式也是这样,这不是轮流吃饭的问题,系统启动的顺序,只是相当于一个冲击量,完成一个周期后,就有任务咎由自取了,而不轮流来,不知刘前辈,懂我的意思,您可以看一下相关教材,或者自己亲自实现一下
刘前辈 发表于 2011-3-14 17:55 | 显示全部楼层
   OsSemP(0,255);   
     //  这2条语句中间会有其他任务并发执行的机会,所以下面等待1信号可能永远等不来。
   OsSemP(1,255);   
  
    LED2_ON;
   ……


上面2条语句中间会有其他任务并发执行的机会,所以下面那条等待1信号
语句OsSemP(1,255); 可能永远等不来。

“直至信号到来”。正是造成死锁的语句。


 楼主| singleywy 发表于 2011-3-14 17:59 | 显示全部楼层
其次,我说错了一点就是,不同的申请方式,赋予系统的冲击量不同,即LED灯显示的方式也不同;
还有一点,即使随意改变申请顺序,只是影响显示的方式,(所以开始说“请注意我的申请方式...”,是我自己说错了,导致您认为我在使任务轮流运行的假象)
刘前辈 发表于 2011-3-14 18:22 | 显示全部楼层
本帖最后由 刘前辈 于 2011-3-14 18:40 编辑

呵呵,咱也建议一下:大家都好好看看Dijkstra 为什么了不起,他发明了信号量,在他之前那么多人都在研究这一问题,就是没人想到;所以荷兰人为什么了不起。小小的荷兰怎么就是OS创始的国家。不是美国。

“直至信号到来”。并不是说某个哲学家A一直占有CPU 踏步循环等待那一只筷子,它一样要释放CPU让给其他任务。——这一释放,A所等待的那只筷子就被别人拿走了。——这就是多任务并发执行面临的经典问题。

所以“金龙鱼”说的“学会释放CPU”不是一般人能理解的。“踏步循环”——自旋锁,只能用在多处理器分布式系统。单处理器不可能的,你在这自旋,别人怎么办?


中国有些热门餐馆,顾客排着队吃饭,——这桌人还没吃完,旁边就有人等,看着这桌人吃?Dijkstra 教人大概就是别站在桌子傍边看着别人吃饭,——直到别人吃完,立即抢占桌子。他告诉人们另一种方法,不用那么紧张一直盯着桌子,……全世界就Dijkstra 首先想到了的方法。——没LZ说得那么简单吧?




//
RyanHsuing 发表于 2011-3-15 19:37 | 显示全部楼层
我收到我BAIDU空间里去了。
sysdriver 发表于 2011-3-18 23:40 | 显示全部楼层
晕,我才发现啊,哈哈,真是好东西。
顶了,先去研究一下先
nqbmylove 发表于 2012-5-21 20:29 | 显示全部楼层
panchaoran 发表于 2013-3-4 22:15 | 显示全部楼层
LZ非常强大
gcsdream 发表于 2013-6-1 14:39 | 显示全部楼层
这才是精华,收下了……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部