• 祝贺 李*达 入职华*科技 学历:专科 岗位:Java工程师 薪资:10000
  • 祝贺 刘* 入职深圳市前海云*包互联网有限公司 学历:本科 岗位:web前端工程师 薪资:13500
  • 祝贺 张*同学 入职软*动力 学历:专科 岗位:Java工程师 薪资:10000
  • 祝贺 吴*丹 入职招*基金管理有限公司 学历:专科 岗位:Java工程师 薪资:15000
  • 祝贺 王*凡 入职广州*鲤科技有限公司 学历:专科 岗位:Java工程师 薪资:13000
  • 祝贺 罗*杰 入职斯*顿科技有限公司 学历:本科 岗位:java工程师 薪资:15000
  • 祝贺 魏*同学 入职飞* 学历:本科 岗位:java工程师 薪资:13000
  • 祝贺 吴*同学 入职拓*软件 学历:本科 岗位:java工程师 薪资:10000
  • 祝贺 潘*青 入职领*空间 学历:专科 岗位:java工程师 薪资:10000
  • 祝贺 聂*同学 入职深圳市拓*软件有限公司 学历:本科 岗位:Java工程师 薪资:11000
  • 祝贺 冼*生 入职深圳市*易云科技有限公司 学历:本科 岗位:linux运维工程师 薪资:13000
  • 祝贺 黄*磊 入职深圳古*瓦特有限公司 学历:专科 岗位:Java工程师 薪资:12000
  • 祝贺 舒*流-不负青春,活出精彩 入职深圳市*政软件有限公司 学历:本科 岗位:JAVA开发工程师 薪资:9000+
移动端网站
我的位置: 首页 > 学习专区 > .NET技术 > 用C语言实现哲学家进餐的问题

用C语言实现哲学家进餐的问题

2013-06-24 08:50:10
来源:
人参与 评论
[导读] 设有5个哲学家,共享一张放油把椅子的桌子,每人分得一吧椅子 但是桌子上总共执友支筷子,在每个人两边分开各放一支 哲学家只有在肚子饥饿时才

设有5个哲学家,共享一张放油把椅子的桌子,每人分得一吧椅子.但是桌子上总共执友支筷子,在每个人两边分开各放一支.哲学家只有在肚子饥饿时才试图分两次从两边拾起筷子就餐.

就餐条件是:

1)哲学家想吃饭时,先提出吃饭的要求;

2)提出吃饭要求,并拿到支筷子后,方可吃饭;

3)如果筷子已被他人获得,则必须等待该人吃完饭之后才能获取该筷子;

4)任一哲学家在自己未拿到2支筷子吃饭之前,决不放下手中的筷子;

5)刚开始就餐时,只允许2个哲学家请求吃饭.

试问:

1)描述一个保证不会出现两个邻座同时要求吃饭的算法;

2)描述一个既没有两邻座同时吃饭,又没有人饿死的算法;

3)在什么情况下,5个哲学家全都吃不上饭?

哲学家进餐问题是典型的同步问题.它是由Dijkstra提出并解决的.该问题是描述有五个哲学家,他们的生活方式是交替地进行思考和进餐.哲学家们共用一张圆桌,分别坐在周围的五张椅子上.在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左右岁靠近他的筷子,只有在他拿到两支筷子时才能进餐.进餐完毕,放下筷子继续思考.

利用记录型信号量解决哲学家进餐问题

经分析可知,筷子是临界资源,在一段时间只允许一个哲学家使用.因此,可以用一个信号量表示一支筷子,由这五个信号量构成信号量数组.其描述如下:

var chopstick:array[0,...,4]of semaphore;

所有信号量被初始化为1,第i个哲学家的活动可描述为:

repeat

wait(chopstick);

wait(chopstick[(i+1) mod 5]);

...

eat;

...

signal(chopstick);

signal(chopstick[(i+1) mod 5]);

...

think;

until false;

在以上描述中,哲学家饥饿时,总是先去拿他左边的筷子,即执行wait(chopstick);成功后,再去拿他右边的筷子,即执行wait(chopstick[(i+1) mod 5]);,再成功后便可进餐.进餐完毕,又先放下他左边的筷子,然后放下他右边的筷子.虽然,上述解法可保证不会有两个相临的哲学家同时进餐,但引起死锁是可能的.假如五个哲学家同时饥饿而各自拿起右边的筷子时,就会使五个信号量chopstick均为0;当他们试图去拿右边的筷子时,都将因无筷子可拿而无限期地等待.对于这样的死锁问题可采用以下集中解决方法:

(1)至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐.

(2)仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐.

(3)规定奇数号的哲学家先拿起他左边的筷子,然后再去拿他右边的筷子;而偶数号的哲学家则相反.按此规定,将是1,2号哲学家竞争1号筷子,3,4号哲学家竞争3号筷子.即五个哲学家都竞争奇数号筷子,获得后,再去竞争偶数号筷子,最后总会有一个哲学家能获得两支筷子而进餐.

看了整整一个上午的操作系统,看得头都大了。

我们老师的算法的大意好像是用一个总的信号量,只有获得信号量的哲学家才可以拿筷子。

具体算法如下(用类c描述):

#include "所有头文件"

#define N 5

#define left (i-1)%N //i的左邻号码

#define right (i+1)%N //i的右邻号码

#define think 0

#define hungry 1

#define eating 2

typedef int semaphore //信号量是一个特殊的整型变量

int state[N] //记录每个人的状态

semaphore mutex=1; //设置信号量

semaphore s[N]; //每个哲学家一个信号量

void philosopher(int i)

{

while(true) //无限循环

{

think;

take_chopstick(i);

eat;

put_chopstick(i);

}

}

void take_chopstick(int i)

{

p(& mutex); //对信号量的p操作

state=hungry;

test(i); //试图得到两支筷子

v(&mutex); //v操作

p(&s); //得不到筷子则阻塞

}

void put_chopstick(int i)

{

p(& mutex);

state=think; //进餐结束

test(left); //看左邻是否进餐

test(right); //再看右邻

v(&mutex);

}

void test(int i)

{

if(state==hungry&&左邻没进餐&&右邻没进餐)

{

state=eating;

v(&s);

}

}

  • 上一篇: 用C语言开发FastCGI应用程序
  • 下一篇: 用C语言实现在桌面上画图
猜你喜欢
初中毕业没技术怎么办?
高中生没学历怎么办
网络安全
工程师课程
我还有疑问要咨询
网络营销师课程
我英语不好能学IT吗
北大青鸟学费多少钱?
软件工程师课程
Android
开发课程
大学生没经验如何高工资?
Java开发课程
已经工作没
发展想换行
学完后工资怎么样?
评论
安卓技术 .NET技术 JAVA技术 PHP技术 网络工程 整合营销 SEO/SEM 数据库技术
热点专题
>>
  • 1北大青鸟学费一览表
    北大青鸟学费一览表
  • 2北大青鸟哪个学校好
    北大青鸟哪个学校好
  • 3北大青鸟官网是哪个
    北大青鸟官网是哪个
  • 4北大青鸟特色专业共建-2023招生简章
    北大青鸟特色专业共建-2023招生简章
  • 52024高中生学什么
    2024高中生学什么
  • 62024初中生学什么
    2024初中生学什么
  • 72024年女生学什么好
    2024年女生学什么好
  • 8我想学没有钱怎么办
    我想学没有钱怎么办
  • 9对未来很迷茫怎么办
    对未来很迷茫怎么办
  • 10男生学什么好
    男生学什么好
相关文章推荐
>>
  • 1选择坑梓北大青鸟学IT,人生从此改变
      高考挫败后,我选择了梦想之旅    我叫林远*,高考挫败以后,本来以为自己的人生就此完...
  • 2韶关北大青鸟:2017热门专业有哪些?北大青鸟来支招
    受就业环境影响,考生不仅仅选择一所好的院校,更加注重对所学专业的选择。在众多考生和家长看来...
  • 3高中毕业如何才能高薪就业
    高中毕业进入社会,无论在就业优势还是职场发展,都无法与具有大学文凭的人相比,缺的是什么?不...
  • 4罗湖北大青鸟:初中生不进工厂还可以做什么?
    初中生无学历无技能,不进工厂上班还可以做什么呢?这是很多低学历人群想要提升自己,却又找到出...
  • 5中山有北大青鸟吗?中山北大青鸟在哪里?中山北大青鸟官网
    中山有北大青鸟吗?中山北大青鸟在哪里?你好,我是北大青鸟嘉华学校老师,从北大青鸟官网数...
  • 6沙井北大青鸟 web前端培训学费
    web前端培训 web前端培训学费在很多人眼里,大学生就是天之骄子,但是却不知道,在大学扩招的今...
  • 7恩平北大青鸟:大学生学什么专业好就业?
    随着it互联网的发展,全世界对人才的需求大幅增加,人才缺口已经高达数百万。毕业即失业成了普遍...
  • 8罗湖北大青鸟:2017 年关于大数据方面的 6 个预测
    1 人工智能(AI)重新流行在上世纪60年代,Ray Solomonoff奠定了人工智能的数学理论基础,介...
  • 9石岩北大青鸟:it培训机构排名情况
    从我们的书桌上出现了那台大大的四方的脑袋,用这个可以远程视频聊天,可以查询资料,可以玩各种...
  • 10福田北大青鸟:你与“被相中”只隔了一个北大青鸟
    越长大越逃不了的相亲命运,很多人希望天赐好女友,但前提是怎样把自己变成最受欢迎的男士呢?据...
一族 本科 求职:什么工作才算是好工作 错过 资源 窗体 鼠标 功能 警报 人中 厚生 前海 人教 安卓Y01班 安卓Y01班模拟面试活动 高中生 研究生 社交 技能 媒体 交流会 深圳嘉华,深圳北大青鸟 北大青鸟嘉华 嘉华学校 北大深圳嘉华 高中毕业干什么好 北大青鸟梁飞华 v 深圳北大青鸟v 学历快报 年度教育品牌榜 最值得信赖教育品牌 卓越教育风云人物奖 三好单位奖 谢维信 深圳大学授牌 嘉华荣誉 聚英奖 学员风采 学术活动 媒体关注 三好单位 精彩年会 校园文化 教学环境

代做工资流水公司福州工作收入证明代开邯郸工作收入证明代开廊坊工资代付流水公司蚌埠代做银行流水单南宁企业对公流水多少钱昆明企业对公流水公司烟台背调流水办理南昌公司流水代做北京车贷流水开具宿迁流水账单图片肇庆个人工资流水 样本岳阳签证银行流水 公司株洲工资流水查询临沂银行对公流水公司曲靖银行流水账单图片武汉转账银行流水打印长沙做入职银行流水北京代办房贷银行流水苏州查贷款银行流水上饶制作企业银行流水温州办流水单天津车贷流水办理许昌工作收入证明图片无锡离职证明价格哈尔滨银行流水单公司汕头工资流水单打印杭州打印签证工资流水徐州查询转账流水大连工资代付流水费用沈阳做个人工资流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化