如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
沈阳理工大学课程设计专用纸沈阳理工大学目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc282594505"1.设计题目与要求PAGEREF_Toc282594505\h1HYPERLINK\l"_Toc282594506"1.1实验目的与设计要求PAGEREF_Toc282594506\h1HYPERLINK\l"_Toc282594507"1.2初始条件PAGEREF_Toc282594507\h1HYPERLINK\l"_Toc282594508"2总体设计思想及相关知识PAGEREF_Toc282594508\h2HYPERLINK\l"_Toc282594509"2.1总体设计思想PAGEREF_Toc282594509\h2HYPERLINK\l"_Toc282594510"2.2临界区互斥编程原理PAGEREF_Toc282594510\h3HYPERLINK\l"_Toc282594511"2.3开发环境与工具PAGEREF_Toc282594511\h3HYPERLINK\l"_Toc282594512"3数据结构与模块说明PAGEREF_Toc282594512\h4HYPERLINK\l"_Toc282594513"3.1数据结构PAGEREF_Toc282594513\h4HYPERLINK\l"_Toc282594514"3.2程序各模块流程图PAGEREF_Toc282594514\h5HYPERLINK\l"_Toc282594515"3.2.1主程序模块PAGEREF_Toc282594515\h5HYPERLINK\l"_Toc282594516"3.2.2状态改变模块PAGEREF_Toc282594516\h6HYPERLINK\l"_Toc282594517"3.2.3返回哲学家状态模块PAGEREF_Toc282594517\h7HYPERLINK\l"_Toc282594518"3.2.4返回餐具状态模块PAGEREF_Toc282594518\h8HYPERLINK\l"_Toc282594519"4.源程序代码PAGEREF_Toc282594519\h9HYPERLINK\l"_Toc282594520"5.测试及结果PAGEREF_Toc282594520\h14HYPERLINK\l"_Toc282594521"6.课设总结PAGEREF_Toc282594521\h16HYPERLINK\l"_Toc282594522"参考文献PAGEREF_Toc282594522\h171.设计题目与要求1.1实验目的与设计要求实验目的:通过实现哲学家进餐问题的同步深入了解和掌握进程同步和互斥的原理。设计要求:哲学家有N个,也定全体到齐后开始讨论:在讨论的间隙哲学家进餐,每人进餐时都需使用刀、叉各一把,所有哲学家刀和叉都拿到后才能进餐。哲学家的人数、餐桌上的布置自行设定,实现刀和叉的互斥使用算法的程序实现。1.2初始条件(1)操作系统:windows(2)程序设计语言:C++(3)设定圆桌上有六个哲学家,三对刀叉,如下图摆放:图1-1哲学家进餐问题设定图2总体设计思想及相关知识2.1总体设计思想哲学家的生活就是思考和吃饭,即思考,饿了就餐,再思考,循环往复。要求是:每一个哲学家只有在拿到位于他左右的刀叉后,才能够就餐;哲学家只能先拿一把刀或叉,再去拿另一把刀或叉,而不能同时去抓他旁边的两把餐具,也不能从其他哲学家手中抢夺餐具;哲学家每次就餐后必须放下他手中的两把餐具后恢复思考,不能强抓住餐具不放。设计一个程序,能够显示当前各哲学家的状态和桌上餐具的使用情况,并能无死锁的推算出下一状态各哲学家的状态和桌上餐具的使用情况。即设计一个能安排哲学家正常生活的程序。为哲学家设计3种状态,即“等待”“进餐”“思考”。每个哲学家重复进行“等待”->“进餐”->“思考”的行动循环。其中:“等待”->“进餐”:只有一个哲学家处于等待进餐状态,且左右手两边的餐具都处于“空闲”状态时,可以发生这种状态改变。此状态改变发生后,哲学家拿起左右手两边的餐具。“进餐”->“思考”:此状态改变发生后,哲学家放下左右手上的餐具。餐具状态由“使用中”转变为“空闲”。“思考”->“等待”:哲学家思考结束后,无条件转入等待状态。由上所述,程序中应设置6个元素的信号量数组