操作系统实验报告进程通信.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  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文档。上传文档
查看更多
实验题目 进程的共享存贮区及信号量通信 小组合作 否 姓名 班级 学 号 一、实验目的 1、理解进程通信的原理,掌握信号量通信机制,熟悉信号量的构造、信号量的通信。 2、理解进程通信的原理,掌握共享存储区通信机制,熟悉共享区的连接与断开,数据的发送与获取。 二.实验环境 Windows xp、VMware、Linux系统 三、实验内容与步骤 实验内容: ⑴分别调用semget()、semop()、semctl()实现多个进程间的通信。编写一程序实现进程互斥共享文件的信号量的使用。 ⑵调试并分析结果。 实验要求: 对观察到的内容做详细记录分析,并写出实验报告。 ⑴分别调用shmget()、shmat()、shmctl()实现多个进程间的通信。编写两程序,一个向共享段写信息,一个从共享段读信息。 ⑵调试并分析结果。 实验要求: 对观察到的内容做详细记录分析,并写出实验报告。 实验过程与分析 1.信号量机制 在UNIX系统V中,一个或多个信号量构成一个信号量集合。使用信号量机制用来实现进程间的同步和互斥,允许并发进程一次对一组信号量进行相同或不同的操作。每个P,V操作不限于减1或加1,而是可以加减任何整数。在进程终止时,系统可以根据需要自动消除所有被进程操作过的信号量的影响。 16.6.用于进程互斥共享文件的信号量的使用。 编写的程序如下: 运行结果如下: 结果分析:本程序中创建了5个并发子进程,互斥地对文件进行写操作,将自己的进程号写到文件中去,信号量的初值为1,当地一个进程执行update_file函数时首先将信号量值-1,(相当于P操作)致使其它进程等待无法操作文件,直到其结束后,将其值变为1后(相当于V操作),其它进程并发竞争对文件的写操作,并将自己的pid写入文件中。 2.共享主存段机制 共享主存段为进程提供了直接通过主存进行通信的有效手段,不像消息缓存机制那样需要系统提供缓存,也不像pipe机制那样需要事先建立一个特殊文件,而是有通信双方直接访问某些共享虚拟存储器空间。在系统V中,系统管理一组共享主存段控制块。通信进程在使用共享主存段以前,首先提出申请,系统为止分配存储空间并返回共享主存段标识号。一个共享段建立后,进程把它被附加到自己的虚拟存储空间中。一个进程可以附加多个共享主存段。一个主存段一旦被附加到进程的虚拟机空间后,对它的访问以其他虚拟机的访问完全相同。但为了保证共享主存段数据完整性,通信的进程之间要互斥的进行访问。当通信进程不再需要该共享主存段时,可使用命令将其与进程分离,从而使其进程的虚空间删除。 16.7.进程向共享段写信息。 编写的程序如下: 运行结果是: 结果分析: 在本程序中定义的“SHMKEY”和16.8中的一样,是为了保证16.7和16.8能共享同一存储空间,此程序中“IPC_CREAT”是创建了长度为16K的共享存储空间,并且将共享段附加到了地址空间为addr的地址上,然后从共享段的其实单元开始写入0-255个自然数,等待接收进程读。而16.8,则只是连接上去,共享此空间,而不在创建存储空间。 16.8.进程从共享段读信息。 编写的程序如下: 运行结果是: ……(部分截图被省略) 结果分析:16.7的进程创建了长度为16K的共享主存段,并将共享段附加到了地址空间为Addr的地址上。然后从共享段的起始单元开始写入0~255个自然数。等待接收进程读。然后进程从共享段读信息的例子,该进程首先将进程写信息共享段的共享段连接到自己的地址空间,之后,判断共享段是否有信息,若无,则等待,否则,读信息并显示。write进程创建了长度16k的共享主存段,并将共享段附加到了地址空间为addr的地址上,也显示了addr的值,然后从共享段的起始单元开始写入0-255个自然数,然后将首地址赋值为256,故读进程read运行后,第一个数显示256,后面是1-255。 五、实验总结 通过这次实验,我理解了进程通信的原理,掌握信号量通信机制,熟悉信号量的构造、信号量的通信。我了解到了信号量机制和共享主存段机制进行通信的方法,理解了如何通过信号量的加减,来进行进程间的通信,实现进程之间的同步和互斥,同时也掌握了共享存储区通信机制,熟悉共享区的连接与断开,数据的发送与获取。

文档评论(0)

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

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

1亿VIP精品文档

相关文档