1 / 14
文档名称:

哲学家就餐(PPT).ppt

格式:ppt   页数:14页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

哲学家就餐(PPT).ppt

上传人:分享精品 2015/10/14 文件大小:0 KB

下载得到文件列表

哲学家就餐(PPT).ppt

文档介绍

文档介绍:哲学家用餐
问题:
哲学家就餐问题中,一组哲学家围坐在一个圆桌旁,每个哲学家的左边都只有一只筷子(当然他的右边也有一只筷子,但是这是他右边哲学家的左边的筷子),他们吃完了就思考,思考了一会就会饿,饿了就想吃,然而,为了吃饭,他们必须获得左边和右边的筷子进餐完毕,放下筷子继续思考。
五个人五只筷子该如何进行用餐啊
利用记录型信号量解决:
进分析可知,放在桌子上的筷子是临界资源,在一段时间内允许一位哲学家使用。为了实现对筷子的互斥使用,可以用一个信号量表示一只筷子,由这五个信号量构成信号量数组。其描述如下:
Var chopstick:array[0,…,4]of semaphore;
所有信号量均被初始化为1 ,第i位哲学家的活动课描述为:
repeat:
wait(chopstick[i]);
Wait(chopstick[(i+1)mod5);

eat;

signal(chopstick[i]);
signal(chopstick([i+1]mod5);

Think;
until false
但是这样有可能造成死锁,如何解决?
(1)至多只允许四个哲学家同时进餐,以保证至少有一个哲学
家能够进餐,最终总会释放出他所使用过的两支筷子,从而可
使更多的哲学家进餐. 其伪码是:
Semaphore chopstick[5]={1,1,1,1,1};
Semaphore room=4;
Void philosopher(int i)
{
while(true)
{
Think();
Wait(room); //请求进入房间进餐
wait(chopstick[i]);//请求左手边的筷子
wait(chopstick[(i+1)]%5); //请求右手边的筷子
eat();
signal(chopstick[(i+1)]%5);//释放右手边的筷子
singal(chopstick[i]);// 释放右手边的筷子
singal(room);
}
}
可采用以下几种解决方法来解决死锁:
(2)仅当哲学家的左右两支筷子都可用时,才允许他拿起筷子进餐. 其伪码:
Semaphore chopstick[5]={1,1,1,1,1};
Void philosopher(int I)
{
while(true)
{
Think();
Swait(chopstick[(I+1)]%5,chopstick[I]);
eat();
Ssignal(chopstick[(I+1)]%5,chopstick[I]);
}
}
(3)规定奇数号的哲学家先拿起他左边的筷子,然后再去拿他 右边的筷子;,将是1,2号哲 学家竞争1号筷子,3, 竞争奇数号筷子,获得后,再去竞争偶数号筷子,:
Semaphore chopstick[5]={1,1,1,1,1};
void philosopher(int i)
{
While(true)
{
Think();
If(i%2==0) //偶数号哲学家,先右后左
{
Wait(chopstick[i+1]mod5);
Wait(chopsticl[i]);
eat();
signal(chopstick[(i+1)]mod5);
singal(chopstick[i]);
}
else
{
Wait(chopsticl[i]);
Wait(chopstick[i+1]mod5);
eat();
singal(chopstick[i]);
signal(chopstick[(i+1)]mod5);
}
}
经过分析,我们决定采用第三种方法来解决死锁问题,其主函数如下:
void main()
{
int i,time;
//初始化
for( i=1 ; i <= people ; ++i )
{
Tman[i] = 0;
EatTime[i] = 0;
Eating[i] = 0;
Thinking[i] = 1;

}
time = 0;
for(;n<=meat;)
{
++time;
printf("=================这是第%d秒的开始==================\n",time);
eat();
thinking();

eatting();
printf("=================这是第%d秒的结束==================\n\n",time);
}
printf("哈哈,盘子里已经没有肉了.\n");
}

最近更新

全新顾问聘用协议书模板3篇 45页

避孕节育咨询要点 47页

充电桩项目招标详情3篇 61页

假离婚协议书的法律责任3篇 46页

借别人名购房协议书版3篇 37页

保证书格式技巧3篇 50页

住宅单元购买合同范例3篇 50页

企业运营管理全程服务3篇 43页

部编版七年级语文 《狼》PPT课件一等奖新名师.. 50页

代付款项让您轻松管理财务3篇 48页

京东购物合同协议指南3篇 49页

交通事故授权委托书如何写3篇 40页

二零二五版一手房买卖合同电子版房产托管服务.. 57页

二零二五年度食品总代与分销商质量监管协议2篇.. 34页

二零二五年度跨境电商平台委托经营合作协议书.. 17页

二零二五年度航空航天技术合作终止合同申请书.. 53页

常见症状的护理专家讲座 55页

自知力的临床意义及检测方法 16页

部编人教版历史八年级上册第7课 八国联军侵华.. 26页

班会-迎接期中考试PPT课件一等奖新名师优质课.. 39页

新苏教版四年级上册认识容量和升PPT课件一等奖.. 36页

数学基础1.3方向余弦阵PPT课件一等奖新名师优.. 33页

高中军训的总结报告范文5篇 8页

音乐教师工作总结10篇 16页

辞职申请书合集6篇 7页

读书个人心得体会1500字5篇 10页

药品销售心得体会精选范文5篇 8页

综合英语实训心得最新精选范文4篇 7页

端午节举办主题活动的总结范文4篇 5页

2025年年常用网络流行的语录32句 3页