族谱网 头条 人物百科

哲学家就餐问题

2017-10-16
出处:族谱网
作者:阿族小谱
浏览:523
转发:0
评论:0
问题描述哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两只餐叉。哲学家就餐问题有时也用米饭和筷子而不是意大利面和餐叉来描述,因为很明显,吃米饭必须用两根筷子。哲学家就餐问题的演示哲学家从来不交谈,这就很危险,可能产生死锁,每个哲学家都拿着左手的餐叉,永远都在等右边的餐叉(或者相反)。即使没有死锁,也有可能发生资源耗尽。例如,假设规定当哲学家等待另一只餐叉超过五分钟后就放下自己手里的那一只餐叉,并且再等五分钟后进行下一次尝试。这个策略消除了死锁(系统总会进入到下一个状态),但仍然有可能发生“活锁”。如果五位哲学家在完全相同的时刻进入餐厅...

问题描述

哲学家就餐问题可以这样表述,假设有五位哲学家围坐在一张圆形餐桌旁,做以下两件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐叉。因为用一只餐叉很难吃到意大利面,所以假设哲学家必须用两只餐叉吃东西。他们只能使用自己左右手边的那两只餐叉。哲学家就餐问题有时也用米饭和筷子而不是意大利面和餐叉来描述,因为很明显,吃米饭必须用两根筷子。

哲学家就餐问题

哲学家就餐问题的演示

哲学家从来不交谈,这就很危险,可能产生死锁,每个哲学家都拿着左手的餐叉,永远都在等右边的餐叉(或者相反)。

即使没有死锁,也有可能发生资源耗尽。例如,假设规定当哲学家等待另一只餐叉超过五分钟后就放下自己手里的那一只餐叉,并且再等五分钟后进行下一次尝试。这个策略消除了死锁(系统总会进入到下一个状态),但仍然有可能发生“活锁”。如果五位哲学家在完全相同的时刻进入餐厅,并同时拿起左边的餐叉,那么这些哲学家就会等待五分钟,同时放下手中的餐叉,再等五分钟,又同时拿起这些餐叉。

在实际的计算机问题中,缺乏餐叉可以类比为缺乏共享资源。一种常用的计算机技术是资源加锁,用来保证在某个时刻,资源只能被一个程序或一段代码访问。当一个程序想要使用的资源已经被另一个程序锁定,它就等待资源解锁。当多个程序涉及到加锁的资源时,在某些情况下就有可能发生死锁。例如,某个程序需要访问两个文件,当两个这样的程序各锁了一个文件,那它们都在等待对方解锁另一个文件,而这永远不会发生。

解法

服务生解法

一个简单的解法是引入一个餐厅服务生,哲学家必须经过他的允许才能拿起餐叉。因为服务生知道哪只餐叉正在使用,所以他能够作出判断避免死锁。

为了演示这种解法,假设哲学家依次标号为A至E。如果A和C在吃东西,则有四只餐叉在使用中。B坐在A和C之间,所以两只餐叉都无法使用,而D和E之间有一只空余的餐叉。假设这时D想要吃东西。如果他拿起了第五只餐叉,就有可能发生死锁。相反,如果他征求服务生同意,服务生会让他等待。这样,我们就能保证下次当两把餐叉空余出来时,一定有一位哲学家可以成功的得到一对餐叉,从而避免了死锁。

资源分级解法

另一个简单的解法是为资源(这里是餐叉)分配一个偏序或者分级的关系,并约定所有资源都按照这种顺序获取,按相反顺序释放,而且保证不会有两个无关资源同时被同一项工作所需要。在哲学家就餐问题中,资源(餐叉)按照某种规则编号为1至5,每一个工作单元(哲学家)总是先拿起左右两边编号较低的餐叉,再拿编号较高的。用完餐叉后,他总是先放下编号较高的餐叉,再放下编号较低的。在这种情况下,当四位哲学家同时拿起他们手边编号较低的餐叉时,只有编号最高的餐叉留在桌上,从而第五位哲学家就不能使用任何一只餐叉了。而且,只有一位哲学家能使用最高编号的餐叉,所以他能使用两只餐叉用餐。当他吃完后,他会先放下编号最高的餐叉,再放下编号较低的餐叉,从而让另一位哲学家拿起后边的这只开始吃东西。

尽管资源分级能避免死锁,但这种策略并不总是实用的,特别是当所需资源的列表并不是事先知道的时候。例如,假设一个工作单元拿着资源3和5,并决定需要资源2,则必须先要释放5,之后释放3,才能得到2,之后必须重新按顺序获取3和5。对需要访问大量数据库记录的计算机程序来说,如果需要先释放高编号的记录才能访问新的记录,那么运行效率就不会高,因此这种方法在这里并不实用。

这种方法经常是实际计算机科学问题中最实用的解法,通过为分级锁指定常量,强制获得锁的顺序,就可以解决这个问题。

Chandy/Misra解法

1984年,K. Mani Chandy和J. Misra提出了哲学家就餐问题的另一个解法,允许任意的用户(编号P1, ..., Pn)争用任意数量的资源。与资源分级解法不同的是,这里编号可以是任意的。

把筷子凑成对,让要吃的人先吃,没筷子的人得到一张换筷子券。

饿了,把换筷子券交给有筷子的人,有筷子的人吃饱了会把筷子交给给券的人。有了券的人不会再得到第二张券。

保证有筷子的都有得吃。

这个解法允许很大的并行性,适用于任意大的问题。

延伸阅读

哲学家就餐问题演示(Java applet)

Silberschatz, Abraham; Peterson, James L. Operating Systems Concepts. Addison-Wesley. 1988. ISBN 0-201-18760-4. 

Chandy, K.M.; Misra, J.(1984).The Drinking Philosophers Problem. ACM Transactions on Programming Languages and Systems.

Dijkstra, E. W.(1971, June).Hierarchical ordering of sequential processes. Acta Informatica 1 (2): 115-138.

Lehmann, D. J., Rabin M. O,(1981). On the Advantages of Free Choice: A Symmetric and Fully Distributed Solution to the Dining Philosophers Problem. Principles Of Programming Languages 1981(POPL"81), pages 133-138.


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱

更多文章

更多精彩文章
评论 {{commentTotal}} 文明上网理性发言,请遵守《新闻评论服务协议》
游客
发表评论
  • {{item.userName}} 举报

    {{item.content}}

    {{item.time}} {{item.replyListShow ? '收起' : '展开'}}评论 {{curReplyId == item.id ? '取消回复' : '回复'}}

    回复评论
加载更多评论
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回
打赏
私信

推荐阅读

· 就餐必看的相关知识
一:相克的食物(两小时内不可同吃)1、鸡蛋忌糖精——同食中毒,多食死亡2、豆腐忌蜂蜜——同食耳聋3、葱类忌蜂蜜——同食伤眼睛4、土豆忌香蕉——同食生雀斑5、牛肉忌红糖——同食胀死人6、黄鳝忌狗肉——同食伤肝7、芹菜忌兔肉——同食脱头发8、狗肉忌绿豆——同食伤元气9、螃蟹忌柿子——同食腹泻,多食死亡10、鹅肉忌鸭梨——同食伤肾脏11、黄瓜忌生花生米——同食伤脾12、甲鱼忌苋菜——同食中毒13、皮蛋忌红糖——同食呕吐14、人参忌萝卜——同食伤元气15、白酒忌柿子——同食心闷,多食亡16、豆腐忌菠菜——同食生结石17、鸡肉忌菊花——多食死亡18、鲤鱼忌甘草——同食死亡19、羊肉忌南瓜——同食腹胀难忍20、栗子忌牛肉——同食麻木21、鸭肉忌梅子——多食发老病22、山芋忌白酒——同食生胃病23、梨子忌开水——同食泄泻24、蛇肉忌萝卜——同食则亡25、田螺忌蚕豆——多食肠绞痛26、羊肉忌西瓜——多食肝...
· 哲学家
参见哲学家列表
· 哲学家―荀杨
杨雄西汉蜀郡成都人,西汉后期哲学家、文学家、语言学家。杨雄认为“经莫大于《易》,传莫大于《论语》”。模仿《周易》著书《太玄》,模仿《论语》著书《法言》。由于文章写得好被汉成帝招来做官,恰与王莽同殿称臣。王莽篡权之后,杨雄依然做官,但是实际上不是趋炎附势之人,只是在读书写书。受他人牵累,杨雄由于害怕便跳楼打算自杀,可惜楼不高并未丧命,人们便怀疑杨雄心中有鬼,由于这点关系杨雄的才气被一抹殆尽,杨雄的命运非常悲惨。中文名:杨雄别名:荀杨国籍:西汉蜀郡成都人民族:汉族出生地:西汉蜀郡成都出生日期:公元前53逝世日期:公元18代表作品:《太玄》《法言》《方言》《广骚》《畔牢愁》荀子(约公元前313-前238)名况,字卿,后避汉宣帝讳,改称孙卿。战国时期赵国猗氏(今山西新绛)人,著名思想家、文学家、政治家,时人尊称“荀卿”。曾三次出齐国稷下学宫的祭酒,后为楚兰陵(今山东兰陵)令。《史记・荀卿列传》记录...
· 哲学家湛若水
湛若水(1466~1560)明代哲学家、教育家、书法家。字元明,号甘泉,增城(今广东省广州市增城市)人[1]。孝宗弘治间进士,选庶吉士擢编修。世宗嘉靖初,官南京祭酒、礼部侍郎。后历南京礼、吏、兵三部尚书。少师事陈献章,后与王守仁同时讲学,各立门户。王主讲“致良知”。湛主讲“随处体认天理”,认为:“吾之所谓心者、体万物而不遗者也,故无内外;阳明之所谓心者,指腔子里而为言者也,故以吾之说为外”(《答扬少默》)。强调以主敬为格物功夫;说:“故善学者,必另动静一于敬。”(答于督学》),著有《湛甘泉集》。生平介绍]编辑湛若水湛若水,明成化二年丙戌十月十三日(11月20日)巳时出生于增城县甘泉都沙贝村(今广州市增城区新塘镇)[2]。父湛瑛早丧,由母陈氏抚养成长。若水自幼聪敏,因故14岁始入学,16岁往广州府庠就读,明弘治五年(1492),他27岁(弘治五年)中举人[1],29岁往江门就学于陈献章(号白...
· 哲学家-皮浪
皮浪(ΠύρρωνPyrrōn,前365或360年――前275或270年),希腊古典时期的哲学家,被认为是怀疑论的鼻祖,埃奈西德穆的怀疑论学派―皮浪主义‎,受此启发并因此得名。[1]中文名皮浪外文名ΠύρρωνPyrrōn国籍希腊出生地希腊爱利斯出生日期约公元前360逝世日期约公元前270主要成就怀疑论目录1简介▪生平▪学生2悬搁判断3不动心4理论主张▪独断的威胁▪保持沉默▪生活方式5学说地位6趣事简介]编辑皮浪(Pyrrho,前365或360年――前275或270年),又译为毕洛或皮罗,被称为“爱里斯的皮浪”。古希腊怀疑派哲学家,怀疑主义创始人,早期怀疑主义代表人物。生平古希腊怀疑论的主要代表。出生于希腊城邦爱利斯,早年做过画匠,后改学哲学,追随德谟克利特的继承者阿那克萨库(Anaxarchus)多年。曾参加亚历山大东征军队的远征到过印度。生前无著述,以独特的生活方式赢得同时代人的尊重。...

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信