打印

终于清楚Hot大叔是如何“雷翻”洋鬼子的。

[复制链接]
4276|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冷漠|  楼主 | 2010-8-10 19:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 冷漠 于 2010-8-11 15:40 编辑

对HOT大叔的《裸奔嵌入式实时操作系统HotTask51》大作甚感兴趣,一下就把世界上操作系统漫长的发展历史和那些因此而留名史册的研究者都“雷翻”了。——他们老外研究那么多年都没想到如此简单的方法,还是咱们中国人聪明。
        如果大叔能早生20年,可能像信号量这样历经多人一生心血研究,最终以DiJkstra 命名的方法,就能以中国人HotPower 的名字命名而扬名世界了。可惜出生晚了,现在还是要向国外学习,然后改进。
        文中随手拈来个例子:大叔说:

4. 零死锁
    RTOS有个固有的问题,因为级别高的任务不主动放权,则低级别任务永远无法执行。
…………


          冷漠的疑问,上面的定义在标准教材中应该叫饥饿(starvation) 吧。

当更高优先权任务占用所有的CPU执行时间,导致较低优先权任务不能运行时,低优先权任务发生CPU饥饿
        摘自——    ……
   

          死锁(deadlock)问题可要比饥饿问题复杂多了。而且据说解决死锁问题的代价很大。——至今世界上还没有一个有效的解决死锁方法——只有以DiJkstra(还是这个荷兰人)提出的预防死锁的银行家算法——只能预防,无法检测。
         那么设想,如果HOT大叔拿着解决饥饿(大叔称为“零死锁”)的方法和吴旭光教授深刻讨论自己于世界上第一个提出了解决死锁的有效方法——因此而雷翻洋鬼子的银行家算法的时候,吴旭光教授该如何参与讨论?

    呵,优先权可以倒置,把解决饥饿问题的简单方法说成是解决死锁世界难题,这恐怕不能随便概念倒置

相关帖子

沙发
highgear| | 2010-8-10 21:42 | 只看该作者
你发表论断前应该先搞明白别人是怎么做的。
老hot 用的是亚历山大的办法,而不是费力的去解绳结。mcu上就那么几个简单的任务, 竟然也要出现死锁, 还想指望用软件能自动解决, 这样的程序员该打pigu。

使用特权

评论回复
板凳
xlsbz| | 2010-8-10 23:22 | 只看该作者
本帖最后由 xlsbz 于 2010-8-11 19:51 编辑

冷漠大侠,天天泡坛子啊  
有时间的话,可以考虑写个简单的操作系统啊.....

要简单容易理解的 最好所有代码越短越容易理解越好 最好有详细的说明文档 图形文档

最好代码短(比如小于800行)

不用太全面
写个内核 就行

不用搞什么按键什么的  什么这个那个的
甚至也没有必要太过于要求实时性 ,但是稳定性一定要好

可读性要好........

写好了 大家跟着学学啊.....

这个事我觉得比较有意义...

使用特权

评论回复
地板
程序匠人| | 2010-8-10 23:26 | 只看该作者
hot大叔的书在哪里? :lol

使用特权

评论回复
5
xlsbz| | 2010-8-10 23:38 | 只看该作者
俺也想知道书在哪里啊?

http://blog.**/hotpower/202050/message.aspx 这个网页说:

设计被赋予不管采取任何手段,只要结果不要过程,不追求完美,只要满足现实。

hotpower的这个观点我坚决不同意啊...
这种思想不利于普及啊
除非这个操作系统写的及其完美,否则没人敢用啊,因为“不管采取任何手段,只要结果不要过程”。
而话说回来,想写的完美不是那么容易的,估计也是不可能的....

使用特权

评论回复
6
hotpower| | 2010-8-11 05:45 | 只看该作者
晕,有人说俺玩51太低下,俺放置以后玩,先玩他推荐的M0~~~

使用特权

评论回复
7
123jj| | 2010-8-11 07:32 | 只看该作者
跟着大叔玩M0~~~

使用特权

评论回复
8
冷漠|  楼主 | 2010-8-11 15:58 | 只看该作者

要给人一杯水,自己先要有一桶水。

本帖最后由 冷漠 于 2010-8-11 16:13 编辑

只有多任务共享资源时的抢夺式调度器(包括时间片调度)才会发生死锁。HotTask51是任务级调度,非抢夺式调度器——零切换——根本不会产生死锁问题!所以,Hot大叔的4、零死锁  应该标题“零饥饿”。否则让人一看就是概念混淆。——自己先要有一桶水,不是关于51(玩51大叔是顶级),而是关于嵌入式RTOS概念。

使用特权

评论回复
9
冷漠|  楼主 | 2010-8-11 16:29 | 只看该作者
本帖最后由 冷漠 于 2010-8-11 16:32 编辑
……mcu上就那么几个简单的任务, 竟然也要出现死锁, 还想指望用软件能自动解决, 这样的程序员该打pigu。


记得前几个月,2楼 所长教大家51_mcu串口通信收发计数的技术,2个任务,一收一发,各自缓冲器buff[8],设置一个公共变量count,防止死锁 ……
     呵呵,典型的生产者/ 消费者模型;两 任务共享资源count,抢夺式调度环境下,死锁条件具备。

     怎么今天冷漠所举所长所授秘笈,就该打PP?——那岂不等于是说几个月前所长给咱菜鸟讲课时,就该打自己的pigu ?

asd

使用特权

评论回复
10
john_light| | 2010-8-11 19:27 | 只看该作者
部分支持“冷漠”,每个人都较真,技术有更多机会提高。

使用特权

评论回复
11
lw2008| | 2010-8-11 21:38 | 只看该作者
实践中信号量超时等待可降低发生死锁的可能。

使用特权

评论回复
12
highgear| | 2010-8-11 22:00 | 只看该作者
首先, highgear 不是所长。

51资源少, 使用 os 非常勉强(说实话, 不建议51使用os), 出现死锁的情况不如windows常见(我在这上面花费了无数脑筋). 死锁问题也本来应该由程序员自己解决, 而不是交给 os 或者一个自动机制去解决。任何指望mcu os 能解决自己的死锁问题的程序员, 都该打 pigu.  

避免出现死锁(所长的做法),  同时即使死锁了, 通过 watchdog 可以退出, 这是hot的做法。 我认为退出没有必要。出现死锁是程序员的 bug, 应当用适当的逻辑去解决, 而不是把头埋进沙子里。


至于什么是 starvation 的概念, 自己去看吧。
http://en.wikipedia.org/wiki/Resource_starvation

第七届(1972年)图灵奖得主, 提出信号量和PV原语,goto有害论, Dijkstra最短路径算法的创造者的 Dijkstra 的哲学家聚餐:
http://en.wikipedia.org/wiki/Dining_philosophers_problem

使用特权

评论回复
13
香水城| | 2010-8-11 22:25 | 只看该作者
哈哈,有意思,把Dijkstra都搬出来了,这里有人玩过荷兰国旗的题目吗?

说正经的,我知道哲学家的问题,但不知道银行家算法是指什么,想请教一下楼主,谢谢!

使用特权

评论回复
14
highgear| | 2010-8-11 22:45 | 只看该作者
银行家算法的原理来源于银行系统的存贷款发放管理:
http://en.wikipedia.org/wiki/Banker's_algorithm

使用特权

评论回复
15
香水城| | 2010-8-12 09:51 | 只看该作者
银行家算法的原理来源于银行系统的存贷款发放管理:
http://en.wikipedia.org/wiki/Banker's_algorithm
highgear 发表于 2010-8-11 22:45


谢谢!

回顾以前学过的,发现学过这个方法,只是不知道它叫银行家算法,:P 。

个人意见:这个方法的局限性是要求所有的进程都是“好公民”,所以不太实用。

为了方便大家,我把主要部分抄录与此。

Algorithm
The Banker's algorithm is run by the operating system whenever a process requests resources. The algorithm prevents deadlock by denying or postponing the request if it determines that accepting the request could put the system in an unsafe state (one where deadlock could occur). When a new process enters a system, it must declare the maximum number of instances of each resource type that may not exceed the total number of resources in the system. Also, when a process gets all its requested resources it must return them in a finite amount of time.

Resources
For the Banker's algorithm to work, it needs to know three things:
How much of each resource each process could possibly request
How much of each resource each process is currently holding
How much of each resource the system currently has available
Resources may be allocated to a process only if it satisfies the following conditions:
1. request ≤ max, else set error condition as process has crossed maximum claim made by it.
2. request ≤ available, else process waits until resources are available.
Some of the resources that are tracked in real systems are memory, semaphores and interface access.

使用特权

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

十分顶 10楼john_light :
每个人都较真,技术有更多机会提高。


冷漠到论坛上上来就是希望看看别人如何对待如此问题,他人的不同视角的思考对冷漠来说都是弥足珍贵的,有时是无价的。
     有时候看书,很简单的结论:“呀!我怎么那么多年都没想到……”所以,单花时间想,还不如看看别人看看书,别人怎么想的,所谓“三人之行……”,不是因为别人水平高,而是因为自己没想到,——一个人不可能想到三个人都想到的问题。所谓教授,就是因为他看的书多,视角开阔,能把所有人想到的问题都想到,总结出来而已。

再例如:通过LZ冷漠,香水城加深了银行家算法的理解;如果不是冷漠先提出问题,H也绝对不会上互联网去查什么starvation ,然后出来卖弄一把。

使用特权

评论回复
17
冷漠|  楼主 | 2010-8-12 11:22 | 只看该作者

宠物得宠诀窍。

本帖最后由 冷漠 于 2010-8-12 11:35 编辑

2楼 / 12楼 H有个非常明显的特点,就是总跟在冷漠后面发帖,一老一少,一个所长,一个徒弟;
    冷漠先发制人创新思想,H跟在后面后发制人查互联网,然后卖弄。
     哈,冷漠醒悟到这一点以后窃喜,难怪让H先发制人他一个也提不出问题,原来只能等冷漠先创新,然后跟在冷漠后面装大牛?“啊,俺早就想到了,懒得说罢了,不就是3个555嘛。……”
    冷漠休息了一星期,H也消失了一星期;冷漠这几天复出,H也跟着出山,异常活跃,兴奋无比,——真像冷漠养的宠物:主人走到哪,它跟到哪;——摇尾的时机和嚎叫的火候掌握的特别好。

       只是2楼把LZ的意思曲解了,不合时机瞎吼了。12楼又参与了LZ的讨论,让冷漠获益匪浅。多谢啦。只是忽左忽右的心理障碍让冷漠还得捉摸、猜。——得宠的时机和火候把握的不好。

使用特权

评论回复
18
accrazy1| | 2010-9-26 15:52 | 只看该作者
1# 冷漠
"死锁(deadlock)问题可要比饥饿问题复杂多了。而且据说解决死锁问题的代价很大。——至今世界上还没有一个有效的解决死锁方法——只有以DiJkstra(还是这个荷兰人)提出的预防死锁的银行家算法——只能预防,无法检测。"

痛快痛快,听了大牛的介绍,我才知道原来操作系统书上写的用有向图子回路方法,和资源分配图法检测原来全都是放屁,自己写的上机程序原来都是被老师做了手脚了呢,还是坛子里能学到真东西啊.
理论上(译为非实践上讲)死锁可以避免(单/多银行家算法),预防,检测,但是确实要耗费大量的系统资源,最有效的应该是从死锁中打破."RTOS有个固有的问题,因为级别高的任务不主动放权,则低级别任务永远无法执行。"当然这句话我觉得不知所云了,好像既扯到了死锁又扯到了饥饿但是又绝对不符合任何一个的定义.死锁不注重高低之分,在于各自把持住对方的要害不肯松手,饥饿嘛,其实就是饿得慌,饿死不饿死那是体质问题,"永远"二字似乎只有用在死锁身上才恰当.

最后,都不要拿哲学家问题说事情了,当真知道哲学家问题吗?根据规定的不同,哲学家就餐可能出现死锁也可能出现饥饿问题

使用特权

评论回复
19
hotpower| | 2010-9-26 19:29 | 只看该作者
近日俺要创业了,先把这些技术问题搁置。俺要先解决温饱问题。

使用特权

评论回复
20
cll| | 2010-9-26 21:07 | 只看该作者
瞧不惯有些人,有才无徳啊,就算你全会,也无非学老外的,半桶水

使用特权

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

本版积分规则

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

17

主题

921

帖子

4

粉丝