全球旧事资料 分类
衡阳师范学院
操作系统
课程设计报告
题目哲学家就餐问题
学生姓名文润
学号专业班级计算机科学与技术1402班
指导教师王玉奇
完成时间20161129
f目录
一、设计要求2
实验目的2
设计要求2
二、运行环境2
三、设计思想及流程2
设计思想2
流程图4
主要数据结构5
四、运行结果5
五、设计心得6
六、参考资料6
七、程序清单7
f一、设计要求
1实验目的
通过实现哲学家就餐问题的互步深入了解和掌握进程互斥的原理。
2设计要求
哲学家有N个规定全体到齐后开始讨论在讨论的间隙哲学家就餐每人进餐时都需使用刀、叉合一把所有哲学家刀和叉都拿到后猜能进餐。哲学家的人数、餐桌上的布置自行设定实现刀和叉的互斥使用算法的程序实现。
二、运行环境
操作系统Wi
dows系统
编程语言Java语言
编译软件Eclipse
三、设计思想及流程
1设计思想
对问题分析可知目前问题的瓶颈在于死锁。死锁的发生必须满足以下四个必要条件
f①互斥至少有一个资源每次只能被一个进程使用即非共享模式。这里指每只刀叉只能被一个哲学家持有。②占有并等待。一个进程因请求资源而阻塞时对已获得的资源保持不放。③不剥夺条件进程已获得的资源在末使用完之前不能强行剥夺。这里指哲学家不能去抢别人的刀叉。④循环等待条件若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件只要系统发生死锁这些条件必然成立而只要上述条件之一不满足就不会发生死锁。
在系统设计、进程调度等方面注意避免让这四个必要条件成立如何确定资源的合理分配算法避免进程永久占据系统资源。此外也要防止进程在处于等待状态的情况下占用资源。经分析可知放在桌子上的刀叉是临界资源在一段时间内只允许一位哲学家使用为了实现对刀叉的互斥使用可以用一个信号量表示一只刀叉由这N个信号量组成信号量数组。当哲学家饥饿时总是先拿其右边的刀叉成功后再去拿左边的刀叉又成功后方可就餐。进餐完擦干净并放下刀叉。这个算法可以保证不会有两个相邻的哲学家同时就餐但有可能引起死锁。假如五个哲学家同时饥饿拿起各自右边的刀叉当他们再试图去拿左边的刀叉时就会无限等待。如何保证哲学家们的动作有序进行如每个哲学家取到手边的两个刀叉才就餐即仅当一个哲学家左右两边的刀叉都可用时才允许他拿刀叉否则一个也不取。
f2流程图开始
输入哲学家人

哲学家是
否饥饿
哲学家左手边的
刀叉是否干净
哲学家右手边的刀叉是否干r
好听全球资料 返回顶部