操作系统课程设计报告之和尚喝水.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程设计扌艮告 课程名称:操作系统课程设计 设计题目:进程同步P、V操作模拟一和尚喝水 学 院: 管理工程学院 专 业: 信息管理与信息系统 组 别: 第组 学生姓名: 孟衡 学 号:1141807103 指导教师: 张正伟 目录 TOC \o 1-5 \h \z \o Current Document 1需求分析 3 \o Current Document 1.1需求概述 3 \o Current Document 1.2需求设计 3 \o Current Document 2功能设计 4 \o Current Document 2.1实现方案 4 \o Current Document 2模块说明 5 \o Current Document 3操作的流程图 6 3开发环境及源程序的主要部分 7 \o Current Document 1开发环境 8 2源程序 9 \o Current Document 4测试用例,测试过程及情况分析 10 \o Current Document 4.1测试用例 13 \o Current Document 2测试过程及情况分析 14 5心得体会 15 进程P、V操作模拟设计 和尚喝水 1需求分析 1.1需求概述 一个寺庙里有小老和尚若干,有一口水井由小和尚挑水入缸给老和尚饮用。 水缸可以装10桶水,水取自同一口井,水井口较窄,每次只可容纳一只桶取 水,寺庙里一共有3只水桶,每次倒入取用缸中水的量均为1桶,且二者不 可同时进行。用P, V操作实现老和尚、小和尚、取水、用水喝水的同步进程 控制,水缸水量用semaphore表示,水桶用pail表示,水缸容量用empty表 zj\ O 1.2需求设计 以上问题是进程同步的模拟,可以把井中取水、倒水入缸、用水喝水的 过程可以看作是一个个进程的操作,这些进程是互斥的,同时也存在一定的 同步关系。通过实际编程时来看,就是随机调用其中一个进程的操作,而这 些进程的操作相当于程序中的函数调用。而计算机在执行的每一个时刻只能 执行一个操作,这就默认了互斥。还有同步模拟是实现函数调用的前提关系, 即先决条件。所以这样进程同步模拟就完全能够通过函数的调用来实现。 具体每一个操作对应的函数变量关系: 水井取水:semaphore 小和尚准备取水:mutexl = l 水缸喝水:empty 老和尚用桶喝水mutex2=l 水缸初始量:full=0 (最大值10) 水桶数量:pail=3 2功能设计 2. 1实现方案 用一个变量full表示没水,初始值为0,当取水时full加1,用水时full 减1。变量full=10是最大值,当值为10时表示水缸已经满,此时若进行装水 操作,则将处于等待状态;为0 13寸表示水缸无水,此口寸若进行用水喝水操作, 则操作将处于等待状态。 变量mutex 1和mutex2分别表示小和尚取水和老和尚喝水,初始都为1, semaphore= mutex 1 + mutex2o 用 6 个 bool 型的变量 full_lag, semaphore_lagmutex 1mutex2 empty Jag, psiljag表示六个进程是否处于等待状态。处于等待吋,变量值为 true。 若取水、喝水的进程同时处于等待状态时,用水的操作将自动执行等待取 水的操作,执行按等待的先后顺序;若水缸满了、桶全用去喝水了的进程同时 候处于等待状态时,取水的操作将自动执行等待喝水的操作,按等待的先后顺 序进行。 用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用。 2. 2模块说明 2.2.1 main 函数 用一个随机的函数产生0—5的6个整数,分别对应六个进程的调用,调用 时程序自动输入,本程序共产生了 10次随机的调用进程。 ?222 6个进程函数 水井取水:semaphore 小和尚准备取水:mutexl = l 水缸喝水:empty 老和尚用桶喝水mutex2=l 水缸初始量:full=O (最大值10) 水桶数量:pail=3 ? 2.2.3 Print 函数 用于输出取水用水的情况和有哪些进程处于等待状态。 2. 3操作的流程图 2. 3. 1取水操作 小和尚水井取水进稈的操作流稈图: 2. 3. 2用水操作 老和尚用水喝水操作流程图: 3开发环境及p、v操作语句的主要部分 3. 1开发环境 使用系统:Windows 7 使用语言:C + + 开发工具:VC 6.0 3?2进程卩、v操作原语 MainO {cobegin get(); use(); coend } Get () //小和尚取水 {while (true) { p (empty) p (count) P (mutexl)

文档评论(0)

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

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

1亿VIP精品文档

相关文档