操作系统专业课程设计哲学家进餐问题目录1 .设计题目与要求 .................................1.............................................1 初始条件 ....................................12 总体设计思想及相关知识 ..........................2.............................................2 临界区互斥编程原理 ..........................3.............................................33 数据结构与模块说明 ...............................4 数据结构 ....................................4.............................................5 主程序模块 .............................5 状态改变模块 ...........................6 返回哲学家状态模块 .....................7 返回餐具状态模块 .......................84. 源程序代码 ....................................95. 测试及结果 ....................................146. 课设总结 ......................................16参考文献.........................................171.设计题目与要求实验目的:通过实现哲学家进餐问题的同步深化了解和掌握进程同步和互斥的原理。设计要求:哲学家有 N 个,也定全体到齐后开始讨论:在讨论的间隙哲学家进餐,每人进餐时都需使用刀、叉各一把,所有哲学家刀和叉都拿到后才能进餐。哲学家的人数、餐桌上的布置自行设定,实现刀和叉的互斥使用算法的程序实现。 初始条件(1)操作系统:windows(2)程序设计语言:C++(3)设定圆桌上有六个哲学家,三对刀叉,如下图摆放:图 1-1 哲学家进餐问题设定图2 总体设计思想及相关知识哲学家的生活就是思考和吃饭,即思考,饿了就餐,再思考,循环往复。要求是:每一个哲学家只有在拿到位于他左右的刀叉后,才能够就餐;哲学家只能先拿一把刀或叉,再去拿另一把刀或叉,而不能同时去抓他旁边的两把餐具,也不能从其他哲学家手中抢夺餐具;哲学家每次就餐后必须放下他手中的两把餐具后恢复思考,不能强抓住餐具不放。设计一个程序,能够显示当前各哲学家的状态和桌上餐具的使用情况,并能无死锁的推算出下一状态各哲学家的状态和桌上餐具的使用情况。即设计一个能安排哲学家正常生活的程序。为哲学家设计 3 种状态,即“等待”“进餐”“思考”。每个哲学家重复进行“等待”->“进餐”->“思考”的行动循环。其中:“等待”->“进餐”:只有一个...