操作系统实验报告.pdfVIP

  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文档。上传文档
查看更多

实验一模拟生产者-消费者问题和读者-写者问题

生产者-消费者问题

一组生产者进程生产产品给一组消费者进程消费。一个有n个缓冲区的缓冲池,生产者

一次向一个缓冲区中投入消息,消费者从一个缓冲区中取得。生产者——消费者问题实际上

是相互合作进程关系的一种抽象。该类问题不允许消费者进程到一个空缓冲区中取产品,同

时也不允许生产者进程到一个已满且还没被取走的缓冲区中投放产品。

使用一个数组来表示具有n个(0,1,…,n-1)缓冲区的缓冲池。用输入指针in来指示

下一个可投放产品的缓冲区,每当生产者进程生产并投放一个产品后,in加1;用一个输出

指针out来指示下一个可从中获取产品的缓冲区,每当消费者进程取走一个产品后,out加1。

缓冲池是循环数组。

可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用;利用信号量empty和full

分别表示缓冲池中空缓冲区和满缓冲区的数量。

本实验模拟了生产者——消费者问题。

实验内容与步骤

清单1模拟了生产者——消费者问题。

步骤1:登录进入Windows系统。

步骤2:在―开始‖菜单中单击―程序-MicrosoftVisualStudio6.0–MicrosoftVisualC++6.0‖命

令,进入VisualC++窗口。

步骤3:在工具栏单击―打开‖按钮,在―打开‖对话框中找到并打开实验源程序1.cpp。

步骤4:单击―Build‖菜单中的―Compile1.cpp‖命令,并单击―是‖按钮确认。系统对1.cpp进

行编译。

步骤5:编译完成后,单击―Build‖菜单中的―Build1.exe‖命令,建立1.exe可执行文件。

操作能否正常进行?如果不行,则可能的原因是什么?运行结果(记录第一个消费者以及其

执行前的记录):

1

读者-写者问题

一个数据文件或者记录可被多个进程(或线程)共享。其中,有些进程(或线程)要求

读;而另一些进程(或线程)要求能写或者修改。只要求读的进程(或线程)称为―Reader

进程‖,其他进程(或线程)称为―Witer进程(或线程)‖。允许多个Reader进程(或线程)

同时读一个共享对象,不允许一个Writer进程(或线程)和其他Reader进程(或线程)或

者Writer进程(或线程)同时访问共享对象。所谓读者—写者问题是指保证一个Writer(或

线程)进程必须与其他进程(或线程)互斥地访问共享对象的同步问题。

本实验模拟了读者-写着问题。

实验内容与步骤

清单2模拟了读者——写者问题。

步骤1:登录进入Windows系统。

步骤2:在―开始‖菜单中单击―程序-MicrosoftVisualStudio6.0–MicrosoftVisualC++6.0‖命

令,进入VisualC++窗口。

步骤3:在工具栏单击―打开‖按钮,在―打开‖对话框中找到并打开实验源程序2.cpp。

步骤4:新建一个“input.txt”文件,存放与源程序在同一目录下。“input.txt”文件内容为:

1R35

2W45

3R52

4R65

5W5.13

步骤5:单击―Build‖菜单中的―Compile2.cpp‖命令,并单击―是‖按钮确认。系统对2.cpp进

行编译。

步骤6:编译完成后,单击―Build‖菜单中的―Build2.exe‖命令,建立2.exe可执行文件。

操作能否正常进行?如果不行,则可能的原因是什么?运行结果:

2

步骤7:修改“input.txt”文件内容为

1W33

2R42

3R55

4W5.13

5R35

步骤8:编译完成后,单击―Build‖菜单中的―Build2.exe‖命令,建立2.exe可执行文件。

操作能否正常进行?如果不行,则可能的原因是什么?运行结果:

步骤9:根据步骤6和步骤8,简单叙述一下读者——写者问题的同步和互斥关系:

文档评论(0)

181****4290 + 关注
实名认证
文档贡献者

硕士研究生

1亿VIP精品文档

相关文档