全球旧事资料 分类
红河学院
课程设计报告
课程名称:设计题目:院系:专业:班级:设计者:学号:指导教师:
操作系统6个哲学家进餐
工学院计算机科学与技术
11计科班曹永前
201101030466韦相
2013年5
月26

f1问题描述:
一个房间内有6个哲学家,他们的生活就是思考和进食。哲学家思考后,过一定的时间就会饥饿,饥饿之后就想吃饭,吃饭后再思考。房间里有一张圆桌,桌子周围放有五把椅子,分别属于五位哲学家每两位哲学家之间有一把叉子,哲学家进食时必须同时使用左右两把叉子。
10
1
20
2
3
5
54
3
4
2问题分析
1、写出哲学家进餐的算法描述。
用六只筷子解决需要用两双筷子来进餐的六个哲学家由于每个哲学家都需要其周围的两只筷子所以筷子是公用信号量这久需要设置一个互斥信号量来使六个哲学家互斥的进餐具体做法将六个信号量设置为05用pv源于来控制信号量并将六个哲学家分别编号为05经过仔细分析我们会发现有这样一个问题存在就是当每个哲学家都申请到他周围的一只筷子时由于他们每人都只有一只筷子无法进餐没有进餐他们就无法释放他们已经得得到的筷子这样是进餐出于一种僵局无法继续下去这就是死锁问题
2、死锁问题的分析与具体的解决方法。
死锁问题就是当每个哲学家都拿到且只拿到一只筷子这样每个哲学家都无
f法进餐也无法释放所得到的筷子所以解决死锁我们就要从这入手就是怎样去预防使所有哲学家不要同时去申请他们同一方向的筷子根据这解决死锁的方法有以下几种a每一次最多只能有五个哲学家申请进餐这样其中的一个哲学家就能申请到两只筷子就能够进餐再将筷子释放给其他哲学家进餐b用AND信号量就是哲学家需同时申请其左右两边的筷子两边都有资源的时候才能让这个哲学家得到资源这样哲学家只要申请到筷子就能进餐再将筷子释放给其他哲学家进餐c用管程机制来实现。d我们前面已经将每个哲学家都分配了一个编号我们可以编号为奇数的哲学家首先去申请其左边的筷子再去申请其右手边的筷子让编号为偶数的哲学家先去申请其右边的筷子再去申请其左边的筷子我们可以看出编号为奇数的哲学家左边与编号为偶数的哲学家的右边为同一只筷子当其中一个哲学家拿到此筷子后他另一边的筷子也是空闲的这样就能避免死锁主程序中我使用的是最后一种避免死锁的方法
3、用C程序实现哲学家进餐。(注:可以使用共享变量的方式,也可以使用信号量的方式或其他方法来实现)
3程序清单
i
cludesystypeshi
cludesysipchr
好听全球资料 返回顶部