操作系统课程设计——哲学家进餐问题.pdfVIP

  • 11
  • 0
  • 约8.54千字
  • 约 19页
  • 2024-04-23 发布于湖北
  • 举报

操作系统课程设计——哲学家进餐问题.pdf

操作系统课程设计报告

院(系):计算机科学学院

专业:计算机科学与技术专业

学生姓名:

题目模拟仿真"哲学家进餐"问题的解决过程及方

起讫日期:2010.6.302010.7.11

完成日期:2010年7月10日

1.设计题目与要求2

1.1实验目的2

1.3初始条件2

2总体设计思想及相关知识3

2.1总体设计思想3

2.2临界区互斥编程原理3

2.3开发环境与工具4

3数据结构与模块说明4

3.1数据结构4

3.2程序各模块流程图6

3.2.1主程序模块6

3.2.2状态改变模块7

3.2.3返回哲学家状态模块8

3.2.4返回餐具状态模块9

4.源程序代码10

5.测试及结果15

6.课设总结17

参考文献18

1

1.设计题目与要求

1.1实验目的

通过实现哲学家进餐问题的同步,深入了解和掌握进程同步和互斥的原理。

1.2设计要求

哲学家有N个,也定全体到达后开始讨论:在讨论的间隙哲学家进餐,每人进餐

时都需使用刀、叉各一把,所有哲学家刀和叉都拿到后才能进餐。哲学家的人数、

餐桌上的布置自行设定,实现刀和叉的互斥使用算法的程序实现。

1.3初始条件

(1)操作系统:windows

(2)程序设计语言:C++

(3)设定圆桌上有六个哲学家,三对刀叉,如下图摆放:

1-1哲学家进餐问题设定

2

2总体设计思想及相关知识

2.1总体设计思想

哲学家的生活就是思考和吃饭,即思考,就餐,再思考,往复循环。要求是:

每一个哲学家只有在拿到位于他左右的刀叉后,才能够就餐;哲学家只能先拿一

把刀或叉,再去拿另一把刀或叉,而不能同时去抓他旁边的两把餐具,也不能从

其他哲学家手中抢夺餐具;哲学家每次就餐后必须放下他手中的两把餐具后恢复

思考,不能强抓住餐具不放。

设计一个程序,能够显示当前各哲学家的状态和桌上餐具的使用情况,并能

无死锁的推算出下一状态各哲学家的状态和桌上餐具的使用情况。即设计一个能

安排哲学家正常生活的程序。

为哲学家设计3种状态,即“等待”“进餐”“思考”。每个哲学家重复进行

“等待”-“进餐”-“思考”的行动循环。其中:

“等待”-“进餐”:只有一个哲学家处于等待进餐状态,且左右手两边的

餐具都处于“空闲”状态时,可以发生这种状态改变。此状态改变发生后,哲学

家拿起左右手两边的餐具。

“进餐”-“思考”:此状态改变发生后,哲学家放下左右手上的餐具。餐

具状态由“使用中”转变为“空闲”。

“思考”-“等待”:哲学家思考结束后,无条件转入等待状态。

由上所述,程序中应设置6个元素的信号量数组,tools[6],用来保持哲学

家之间的同步。

2.2临界区互斥编程原理

不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访

问。每个进程中访问临界资源的那段代码称为临界区(CriticalSection)。

每个进程中访问临界资源的那段程序称为临界区(CriticalSection)(临界资

源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,

3

进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进

程必须互斥地对它进行访问。

本程序主要使用了EnterCritical

文档评论(0)

1亿VIP精品文档

相关文档