- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)