操作系统课程设计哲学家进餐问题报告 课程设计报告(本科)课程:操作系统课程设计学号:姓名:班级:老师:时间:20_ 1.2 1.27-20_ 1. 1.7 计算机科学与技术系;设计名称:哲学家进餐问题设计内容、目的与要求:实验目的:通过实现哲学家进餐问题的同步深化了解和掌握进程同步和互斥的原理。内容和要求:哲学家有 N 个,也定全体到达后开始讨论:在讨论的间隙哲学家进餐,每人进餐时都需使用刀、叉各一把,所有哲学家刀和叉都拿到后才能进餐。哲学家的人数 、餐桌上的布置自行设定,实现刀和叉的互斥使用算法的程序实现。计划与进度安排:1:设置初始条件(12 月 17 号) (1)操作系统:wndows (2)程序设计语言:C (3)设定圆桌上有六个哲学家,三对刀叉。2:详细设计:(12 月 18 号至 1 月 6 号) (1):设计一个程序,能够显示当前各哲学家的状态和桌上餐具的使用情况,并能无死锁的推算出下一状态各哲学家的状态和桌上餐具的使用情况。即设计一个能安排哲学家正常生活的程序。 (2):为哲学家设计 3 种状态,即“等待”“进餐”“思考”。每个哲学家重复进行“等待”-“进餐”-“思考”的行动循环。 (3):确定程序模块。 (4):编写程序。 (5):调试修改。 (6):结果分析。设计过程、步骤(可加页): 1.分工:汤正愿:课题分析,模块设计,主函数的编写;洪 XX:课题分析,模块设计,子函数的编写。 2. 确 定 数 据 结 构 Phlosopher-number:nt-status:nt Phlosopher(nnum:nt) fndconst:nt getnfoconst:nt Change:vod 图 3-1 哲学家类的 UML 图程序中定义一个哲学家类,包含两个私有对象和四个公有对象。 Number 对象:报讯哲学家的编号。Status 对象:用于保存当前该哲学家的状态,0 表示正在等待(即处于饥饿状态)1 表示得到餐具正在吃饭,2 表示正在思考 Phlosopher(ntnum)方法:哲学家类构造函数,参数 num 表示哲学家编号 fndconst 方法:返回该哲学家编号 getnfoconst 方法:返回哲学家当前状态 Change 方法:根据题目要求改变哲学家的状态(等待-进餐-思考-等待)另外,程序中包含一个公有对象,bool 类型数组 tools6,用来保存 6 把餐当前状态:true 表示该餐具当前空闲,false 表示该餐具当前正被使用。程序中还包含两个公有函数:prnt 和 toolstatus。Prnt 用来返回一个哲学家的状态,toolstatus 用来返回一个餐具的状态。 3.模块分析。 (1)主程序模块:(...