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

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

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13 13 潍坊学院计算机工程学院 课程设计说明书 课程名称: 操作系统课程设计 设计项目: 一哲学家就餐问题— 一 学生姓名: —XXXXXX — 学 号: 1302 门 400XX 专 业: —计算机科学与技术_ 班 级: 一班 指导教师: 王红一 2016年 3 月 一、 任务与具体要求 哲学家有N个,规定全体到齐后开始讨论,在讨论的间隙哲学 家进餐,每人进餐时都需使用刀、叉合一把,所有哲学家刀和 叉都拿到后才能进餐。哲学家的人数、餐桌上的布置自行设定, 实现刀和叉的互斥使用算法的程序实现。 二、 设计说明书包括的内容 1.需求分析2.系统概要设计3.系统详细设计4.系统的主要源代码 5.系统测试及调试6.总结7.主要参考文献 三、 应完成的图纸 四、评语及成绩 指导教师(签字) 年—月—日 目录 TOC \o "1-5" \h \z \o "Current Document" 一、 需求分析 1 \o "Current Document" 二、 系统概要设计 2 三、 系统详细设计 3 \o "Current Document" 四、 系统的主要源代码 4 \o "Current Document" 五、 系统测试及调试 9 \o "Current Document" 六、 总结 13 \o "Current Document" 七、 主要参考文献 13 13 13 一、需求分析 有一个故事是这样的:假设有五位哲学家用坐在一张圆形餐桌旁,做以下两 件事情之一:吃饭,或者思考。吃东西的时候,他们就停止思考,思考的时候也 停止吃东西。餐桌中间有一大碗意大利面,每两个哲学家之间有一只餐义。因为 用一只餐义很难吃到意大利面,所以假设哲学家必须用两只餐义吃东西。他们只 能使用自己左右手边的那两只餐义。 上边的故事里有五个哲学家(不过我们写的程序可以有N个哲学家),这些哲 学家们只思考或吃饭,他们思考的时候不需要任何共享资源,但是吃饭的时候就 必须使用餐具,而餐桌上的餐具是有限的,故事里,餐具是叉子,吃饭的时候要 用两把义子把面条从碗里捞出来。很显然把义子换成筷子会更合理,因为一个哲 学家需要两根筷子才能吃饭。 现在引入问题:有六个哲学家很穷,只买得起六根筷子。他们坐成一圈,两 个人的中间放一根筷子。哲学家吃饭的时候必须同时得到左手边和右手边的筷 子。如果他身边的任何一位正在使用筷子,那他只有等着。如下图: A 4 A 1> 2、3> 4、5、6为哲学家 A为一根筷子 以上就为我们要处理的哲学家就餐问题,接下来将编写程疗:模拟解决这个问 题。 二、系统概要设计 2.1设汁一个程序,能够显示当前各哲学家的状态和桌上餐具的使用情况, 并能无死锁的推算岀一状态各哲学家的状态和桌上餐具的使用情况。即设计一个 能安排哲学家正常生活的程序。 为哲学家设计3种状态,即“等待” “进餐”“思考”。每个哲学家重复进行 “等待”-> “进餐”-> “思考”的行动循环。其中:“等待”-> “进餐”:只有一 个哲学家处于等待进餐状态,且左右手两边的餐具都处于“空闲”状态时,可以 发生这种状态改变。此状态改变发生后,哲学家拿起左右手两边的餐具。“进餐” -> “思考”:此状态改变发生后,哲学家放下左右手上的餐具。餐具状态由“使 用中”转变为“空闲”。“思考”-> “等待”:哲学家思考结束后,无条件转入等 待状态。山上所述,程序中应设置6个元素的信号量数组用来保持哲学家之间的 同步。 2.2系统平台、语言及工具 操作系统:Windows 程序设计语言:C++ 工具:VC++6.0 2.3不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进 行访问。每个进程中访问临界资源的那段代码称为临界区(Critical Section)o每 个进程中访问临界资源的那段程序称为临界区(Critical Section)(临界资源是一 次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后 不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须 互斥地对它进行访问。 三、系统详细设计 bool tools[6]; bool tools[6]; 〃全局变量,用餐工具 bool tools[6]; bool tools[6]; 〃全局变量,用餐工具 程序中定义一个哲学家类, Number 对象: Status 对象: 包含两个私有对象和四个公有对象。 哲学家的编号。 用于保存当前该哲学家的状态,0表示正在等待(即 处于饥饿状态)1表示得到筷子正在吃饭,2表示正 在思考 Philosopher(int num)方法: find() const 方法: getinfo() const 方法: Cha

文档评论(0)

laugh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档