打印

谁说mcu上不可能发生死锁?

[复制链接]
6581|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冷漠|  楼主 | 2010-8-11 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 冷漠 于 2010-8-11 11:14 编辑
……mcu上就那么几个简单的任务, 竟然也要出现死锁, 还想指望用软件能自动解决, 这样的程序员该打pigu。

                                                       —— 引用自所长言论



呵呵,无知。看看下面的程序(要不要冷漠写成51程序?)



               图2    含有竞争条件的生产者-消费者问题。



       ……现在回到竞争条件的问题。这里有可能会出现竞争条件,其原因是对count的访问未加
限制。有可能出现以下情况:
        缓冲区为空,消费者刚刚读取count的值发现它为0。此时调度程序决定暂停消费者并启动运行生产者。生产者向缓冲区中加入一个数据项,将count加1。现在count的值变成了1。它推断认为由于count刚才为0,所以消费者此时很可能在睡眠,于是生产者调用wakeup来唤醒消费者。
        不幸的是,消费者此时在逻辑上并未睡眠,所以唤醒信号丢失。当消费者下次运行时,它将测试先前读到的count值,发现它为0,于是去睡眠。这样生产者迟早会添满整个缓冲区,然后睡眠。这样一来两个进程都将永远睡眠下去。
                                        ——摘自 ……

               死锁就这样发生了。


    上面2个生产者 / 消费者mcu 任务,用HOT大叔的裸奔嵌入式操作系统HotTask51写也行,让冷漠用RTX51_FULL写也行也行,哪个不是51mcu上发生的死锁?



所长是玩PC机软件的,以为51mcu做不了什么?
——怕是自己不会做吧。


看看 Intel 和 Keil 写的51_RTOS:邮箱、队列、链表,IPC,DiJkstra信号量,Token……内存管理,时钟管理,I/O管理……一个都不少。( 所长该不会说
它没有文件管理——我服。)



      


相关帖子

沙发
yewuyi| | 2010-8-11 11:09 | 只看该作者
想故意搞出来肯定是能的啦。。。

使用特权

评论回复
板凳
冷漠|  楼主 | 2010-8-11 11:28 | 只看该作者

所有的假设都是故意弄出来的,所有的创新都源自假设。

本帖最后由 冷漠 于 2010-8-11 15:36 编辑

下面举一个大道至简《感悟设计》中所举的实际OS死锁的例子,是大道至简亲临现场亲手解决的:

请查阅《感悟设计》P41 第4.4章 宽容包纳,和而不同

呵呵,多个任务因公共共享内存分配不足而造成的死锁。大道至简的解决方案是最简单有效的:
      “  我不用多任务共享,我有足够的内存32M,每个任务在编译阶段就分配各自的私有内存空间。” (因为以前的技术使mcu 内存容量有限。所以有多任务共享技术研究。)

      于是,ucLinux 阳春白雪的内存管理被称为“操作系统固有的毛病”垃圾般弃之不用,绕道而行了。我们大道至简老师成了能够发现和修改ucLinux操作系统问题,敢于在ucLinux 操作系统核心层动刀子的高手。

        依照冷漠的看法,如果大道至简老师具有在ucLinux核心层动刀子的能力,他怎么至今还在那种小地方呆着玩电路设计?电阻电容三极管,辅导一帮初入门者;太屈才了吧。

        如果能把一个ucLinux 的内存管理“固有的问题”——如果真有问题的话——分析出来,修改完善,——涉及解决死锁研究课题。那才是一个人超级才智发挥,做为国人争气的顶级智举。
         如此人才,怎么不到中科院来应聘?还整天热衷于为小老板搞产品设计。
         另外至少我们单位软件专业的博士,研究员什么的,还没有谁发现ucLinux 有内存管理方面的固有毛病,——他们还想研究死锁问题呢……北京的研究单位、大学里都是草包?!

使用特权

评论回复
地板
xuyiyi| | 2010-8-11 12:32 | 只看该作者
搬个板凳坐着听课

使用特权

评论回复
5
流行音乐| | 2010-8-11 15:37 | 只看该作者
死锁与硬件无关,这是逻辑问题。

使用特权

评论回复
6
yewuyi| | 2010-8-11 15:42 | 只看该作者
呵呵,冷漠本是和H掐上的,怎么掐着掐着又和大道至简掐起来了呢?

使用特权

评论回复
7
highgear| | 2010-8-11 22:31 | 只看该作者
顶流行音乐。

冷漠, 你的脑袋怎么了?
死锁是一个程序员的 bug, 不是不可能发生, 而是不可以有。就 51 那么一点东西, 程序竟然也要出现死锁, 你说这样的程序员该不该打 pigu?  指望能自动被解决, 更该被打。

使用特权

评论回复
8
祥帆电子| | 2010-8-11 22:47 | 只看该作者
菜鸟一如既往的围观表演

使用特权

评论回复
9
踢球老越位| | 2010-8-11 22:57 | 只看该作者
呵呵,冷漠本是和H掐上的,怎么掐着掐着又和大道至简掐起来了呢?
yewuyi 发表于 2010-8-11 15:42

战线太长了,属于战略失误

使用特权

评论回复
10
huangqi412| | 2010-8-11 23:20 | 只看该作者
呵呵, 继续掐,洽洽更健康。

使用特权

评论回复
11
原野之狼| | 2010-8-11 23:52 | 只看该作者
冷漠大侠,这个程序片段只是说明了死锁是咋回事,作者特意搞了这么一个例子来说明问题。
而实际上这么写程序会死得很惨,多任务间如此共享变量本来就是个严重错误,而且这种情况下也不宜采用wakeup的方式,OS已经有很多机制来解决此问题,比如这个问题可以利用消息队列来处理啊,再高级点可以采用管道来处理啊。
任何法宝都不是万能的,并且法宝本身也会要求使用者按照它的规则来使用。

使用特权

评论回复
12
ocon| | 2010-8-12 06:17 | 只看该作者
先有结论,再去找论据。。。

使用特权

评论回复
13
ddtx| | 2010-8-12 08:55 | 只看该作者
消息机制,PV法则

使用特权

评论回复
14
ylsiw| | 2010-8-12 09:01 | 只看该作者
技术高低和学历什么的没有太大的关系吧,小公司也出好产品的,然后慢慢成长成大公司,楼主说中科院,现在中国搞研究很少专注技术了,只是在紧跟着政策做课题。

使用特权

评论回复
15
冷漠|  楼主 | 2010-8-12 09:30 | 只看该作者
本帖最后由 冷漠 于 2010-8-12 09:42 编辑

简单回11楼原野之狼版主:
任何技术都是有代价的。刚看电视,农村各户装了电灯,但农民头上挂着电灯,下面还是点着煤油灯,停电?——他付不起电费!推广概念:高技术是要花钱的;低级通信(简单OS系统调用)是免费的。

高级通信是不错,一般人,绝大多数人写不出来,只能借助高级OS系统函数调用。OS软件代价多少?

一个51RTOS是15 吨银子;比微软的Windos 气粗多了。我们公司如果拿不到300吨以上的项目,经理是绝对不会批准买51RTOS的。
    没有电灯,只好由我们这些程序员点煤油灯没有阳春白雪,只好做下里巴人,——临界、互斥、信号量;反正中国代价最低的就是人。(哈哈,经理不批,我已经个人买了。)
    什么?自己写消息队列?忘了冷漠是菜鸟,还真希望各位高手能借助论坛在此露一手,教咱初学者写一个能用的邮箱或者消息队列学习学习, 冷漠一定照规矩付学费,先承诺预付1吨……谁来?

——就是别像所长那样,书上抄一个PC机上 X语言消息队列,还说是自己写的;写出来51上不能用。(所长自己写的就不能修改成51上能用的?一来真格的就露馅。支支吾吾至今也没有一个51上能用的。)PC机上的东东咱冷漠水平低看不懂。——如若看得懂,早就自己写了。
      
         冷漠一定照规矩付学费,先预付1吨……谁先来?

使用特权

评论回复
16
mxh0506| | 2010-8-12 09:41 | 只看该作者
硬件有硬件的死锁,软件有软件的死锁。
想要搞都能搞出来的……:sleepy:

使用特权

评论回复
17
冷漠|  楼主 | 2010-8-12 09:45 | 只看该作者
想写本世界著名OS 教材肯定都能写出来的,就是冷漠不想写罢了。

使用特权

评论回复
18
ayb_ice| | 2010-8-12 09:47 | 只看该作者
又掐上了
...

使用特权

评论回复
19
yewuyi| | 2010-8-12 09:55 | 只看该作者
晕,1吨银子是多少R MB啊?!

使用特权

评论回复
20
highgear| | 2010-8-12 09:58 | 只看该作者
消息队列何难之有, highgear 就足够了,不用劳动原野之狼大驾。

如果冷漠你有银子,愿意付学费, 可以给 21icbbs 捐 10 吨银子。21ic 确认收到后, 我给你做一个 51 下能用的 通用的消息队列, 你不但可以指定队列的形式(动态还是静态), 也可以指定消息处理机制(dispatch 还是注册回叫事件)。

这算是我给 21icbbs 的一点贡献吧。

使用特权

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

本版积分规则

个人签名:要想让别人关照自己的自尊,首先自己先要有所成就才行。

17

主题

921

帖子

4

粉丝