经典进程同步问题3:哲学家进餐问题 - 范文中心

经典进程同步问题3:哲学家进餐问题

12/27

from http://c.biancheng.net/cpp/html/2602.html

问题描述

一张圆桌上坐着5名哲学家,每两个哲学家之间的桌上摆一根筷子,桌子的中间是一碗米饭,如图2-10所示。哲学家们倾注毕生精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿的时候,才试图拿起左、 右两根筷子(一根一根地拿起)。如果筷子已在他人手上,则需等待。饥饿的哲学家只有同时拿到了两根筷子才可以开始进餐,当进餐完毕后,放下筷子继续思考。 问题分析

1) 关系分析。5名哲学家与左右邻居对其中间筷子的访问是互斥关系。

2) 整理思路。显然这里有五个进程。本题的关键是如何让一个哲学家拿到左右两个筷子而不造成死锁或者饥饿现象。那么解决方法有两个,一个是让他们同时拿两个筷子;二是对每个哲学家的动作制定规则,避免饥饿或者死锁现象的发生。

图2-10 5名哲学家进餐

3) 信号量设置。定义互斥信号量数组Ch0PstiCk[5] = {l, 1, 1, 1, 1}用于对5个筷子的互斥访问。

对哲学家按顺序从0~4编号,哲学家i左边的筷子的编号为i,哲学家右边的筷子的编号为(i+l)%5。semaphore chopstick[5] = {1,1,1,1,1}; //定义信号量数组chopstick[5],并初始化

Pi(){ //i号哲学家的进程

do{

P (chopstick[i] ) ; //取左边筷子

P (chopstick[(i+1) %5] ) ; //取右边篌子

eat; //进餐

V(chopstick[i]) ; //放回左边筷子

V(chopstick[(i+l)%5]); //放回右边筷子

think; //思考

} while (1);

}

该算法存在以下问题:当五个哲学家都想要进餐,分别拿起他们左边筷子的时候(都恰好执行完wait(chopstick[i]);)筷子已经被拿光了,等到他们再想拿右边的筷子的时候(执行 wait(chopstick[(i+l)%5]);)就全被阻塞了,这就出现了死锁。

为了防止死锁的发生,可以对哲学家进程施加一些限制条件,比如至多允许四个哲学家同时进餐;仅当一个哲学家左右两边的筷子都可用时才允许他抓起筷子;对哲学家顺序编号,要求奇数号哲学家先抓左边的筷子,然后再转他右边的筷子,而偶数号哲学家刚好相反。正解制定规则如下:假设釆用第二种方法,当一个哲学家左右两边的筷子都可用时,才允许他抓起筷子。semaphore chopstick[5] = {1,1,1,1,1}; //初始化信号量

semaphore mutex=l; //设置取筷子的信号量

Pi(){ //i号哲学家的进程

do{

P (mutex) ; //在取筷子前获得互斥量

P (chopstick [i]) ; //取左边筷子

P (chopstick[ (i+1) %5]) ; //取右边筷子

V (mutex) ; //释放取筷子的信号量

eat; //进餐

V(chopstick[i] ) ; //放回左边筷子

V(chopstick[ (i+l)%5]) ; //放回右边筷子

think; // 思考

}while(1);

}

此外还可以釆用AND型信号量机制来解决哲学家进餐问题,有兴趣的读者可以查阅相关资料,自行思考。


相关内容

  • 健身需要吃什么?最佳减脂增肌食谱推荐
    健身需要吃什么?最佳减脂增肌食谱推荐 1.限制膳食热量:900-1800Kcal 减肥最重要的是通过减少热量摄入,来造成机体能量不平衡,迫使身体消耗体内脂肪.但限制膳食不等于节食,每天一定要吃够最低值,一般低能量膳食为:女性每天摄入1000 ...
  • 进程间通信方式比较
    进程间的通信方式: 1.管道(pipe)及有名管道(named pipe): 管道可用于具有亲缘关系进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信. 2.信号(signal): 信号是在软件层次上对中断机制 ...
  • 当代中国乡村文化转型的启示
    2010年1月第31卷 第1期 内蒙古社会科学(汉文版)INNER MONGOLIA SOCIAL SCIENCES Jan. 2010Vol. 31 №.1 当代中国乡村文化转型的启示 李先明 (曲阜师范大学 历史文化学院,山东 曲阜27 ...
  • 小学阶段中华经典诵读教育价值研究
    青少年中华经典诵读教育研究 内容提要 几年来的教育改革,让更多的人开始深层次的对教育进行了思考.偏重于知识技能的传授而缺乏文化的熏陶与人格的培养,是中国文化的传承出现了断层,是国民素质下降心胸不广.涵养不深,是一代少年儿童成了挣分的机器.家 ...
  • 20**年-04-16申论经典原创文章解读
    申论经典原创文章解读 主讲教师:张小龙 授课时间:2016.04.16 粉笔公考·官方微信 申论经典原创文章解读 (一) "给定资料"结尾写道:"我们或许应该如作家米兰·昆德拉所言,要'慢下来',因为自在有为的 ...
  • 西方时尚的起源
    作者:吉勒斯·利浦斯基 翻译:杨道圣 杨道圣,北京服装学院教授,博士. 艺术设计研究:艺术版 2012年08期 一.个体主义的美学 王侯的宫廷,以及后来的大专制君主辉煌的宫廷生活特别依赖于华美与壮丽的展示.在那里,贵族要炫耀自己,引人注目: ...
  • 中国餐桌礼仪
    一.饮食礼仪内容 餐桌礼仪在中国人的完整生活秩序中占有一个非常重要的地位,他们认为,用餐不单是满足基本生理需要的方法---也是头等重要的社交经验.为此,掌握某些中式餐饮规则的知识便显得特别重要了,无论你是主人,抑或只是一位客人,都必须掌握一 ...
  • 习近平:领导干部读书应有三种境界
    习近平:领导干部读书应有三种境界 我讲三个观点:一是领导干部要爱读书,二是领导干部要读好书,三是领导干部要善读书.围绕这三个观点,我谈一些自己的认识和体会,和同志们交流. 一.领导干部要爱读书 当前领导干部读书的状况不容乐观,归结起来主要是 ...
  • 高中物理万有引力经典习题30道 带答案
    一.选择题(共30小题) 1.(2014•浙江)长期以来"卡戎星(Charon )"被认为是冥王星唯一的卫星,它的公转轨道半径r 1=19600km,公转周期T 1=6.39天.2006年3月,天文学家发现两颗冥王星的小 ...
  • 20XX年成人[专升本政治]复习题
    (一) 简述马克思主义哲学与具体科学的关系. (1)马克思主义哲学和具体科学之间是有区别的,它们研究的对象是不同的.马克思主义哲学研究的对象是整个物质世界,具体科学的研究对象是物质世界的一个部分,一个过程.马克思主义哲学揭示的是物质世界的普 ...