2023年操作系统实验报告9_第1页
2023年操作系统实验报告9_第2页
2023年操作系统实验报告9_第3页
2023年操作系统实验报告9_第4页
2023年操作系统实验报告9_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

甘肃政法学院本科生实验报告(五)姓名:杨青虎学院:计算机科学学院专业:计算机科学与技术班级:2023级计本班实验课程名称:操作系统实验实验日期:2023年6月20日指导教师及职称:何珍祥实验成绩:开课时间:2023-2023学年第二学期甘肃政法学院实验管理中心印制

实验题目进程间的共享存贮和信号量通信小组合作否姓名杨青虎班级2023级计本学号一、实验目的⑴理解和掌握使用信号量机制来实现进程之间的同步和互斥。(2)理解共享主存段机制由通信双方直接访问某些共享虚拟存储空间。(3)理解一个共享主存段一旦被附加到自己的虚拟存储空间后,对它的访问与具他虚拟地址的访问完全相同。二.实验环境WindowsXP+Linux虚拟机三、实验内容与环节1.信号量机制在UNIX系统V中,一个或多个信号量构成一个信号量集合。使用信号量机制用来实现进程间的同步和互斥,允许并发进程一次对一组信号量进行相同或不同的操作。每个P,V操作不限于减1或加1,而是可以加减任何整数。在进程终止时,系统可以根据需要自动消除所有被进程操作过的信号量的影响。进入VM虚拟机中,右击屏幕,选择“新建终端”,打开终端,输入命令”vi16.6.c”,新建一个名为“16.6.c”的用信号量机制进行进程间通信的C语言程序,其程序代码如下图1所示:winciuucvsiaio.n?"「^include<sidlib.h>,include<unisld.h>finclude<tint.h>include<sys/typcs.h>findude<sys/wail.h>lindudeOinux/semh>K加fineNUM_PROCS5IdefineSEMID250^defineFILE.N^E*inp/scm^ErIdefineDELAY400000Voidupdatefile(inisemseiid,char*fiIenamepath.ininunber)1I--1stru-Iscnt)ufscm_op:FILE*filc:scm_op.scm_numc0;scm_op.scm_op="I:scm_op.sem_flg=0:$cgp(scm_$clid,&scm_op.1):file=fopen(fiIjnanrpalh,”/’):if(file)((printf(fiIe.">(i\nM.nunber):图116.6.c代码用“Esc+:wq",退出并保存程序“16.6.c”,在终端输入“gee16.6.c-o16.6”对程序进行编译,假如编译没有错误,继续在终端输入”./16.6”,运营信号量机制进行进程间通信的程序“16.6.c”,即可看到程序结果淇运营截图如下图2所示:[root^locaIhostroot]#cd/mit/usb/Linux[root@locaIhostLinux]#Is15.115.315.516.116.4abc,clest15.1.c15.3.c155c16.8c.txtles1115.215.415.616.316.6p34tesll.c16.6.cabcp34.clesI.c[root@locaIhostLinux]#./!6.6435443544354435543554355435643564356Y4357143574357435843584358nilinisdone[root^locaIhostLinux]#|图2程序运营截图分析:本程序中创建了5个并发子进程,互斥地对文献进行写操作,将自己的进程号写到文献中去,信号量的初值为1,本地一个进程执行叩date.fi1e函数时一方面将信号量值-1,(相称于P操作)致使其它进程等待无法操作文献,直到其结束后,将其值变为1后(相称于V操作),其它进程并发竞争对文献的写操作,并将自己的pid写入文献中。2.共享主存段机制共享主存段为进程提供了直接通过主存进行通信的有效手段,不像消息缓存机制那样需要系统提供缓存,也不像pipe机制那样需要事先建立一个特殊文献,而是有通信双方直接访问某些共享虚拟存储器空间。在系统V中,系统管理一组共享主存段控制块。通信进程在使用共享主存段以前,一方面提出申请,系统为止分派存储空间并返回共享主存段标记号。一个共享段建立后,进程把它被附加到自己的虚拟存储空间中。一个进程可以附加多个共享主存段。一个主存段一旦被附加到进程的虚拟机空间后,对它的访问以其他虚拟机的访问完全相同。但为了保证共享主存段数据完整性,通信的进程之间要互斥的进行访问。当通信进程不再需要该共享主存段时,可使用命令将其与进程分离,从而使其进程的虚空间删除。进入VM虚拟机中,右击屏幕,选择“新建终端”,打开终端,输入命令、i16.7.c”和“vi16.8.c”,新建两个用共享主存段机制进行进程间通信的C语言程序,其程序代码如下图3和4所示:iQincludc<sys/1ypcs.h>#includc<sys/ipc.h>#include<sys/shm.h>#includc<sIdio.h>^defineSIIXKEY75^defineK1024intshmid:nuin()(inIi.*pint:char*addr:externchar♦shnut():shmid=shnKe((SH\KEY.I6*KJ)777|IPCCREAT):addr-shrm((shmid.0.0):printf("addrox%x\n".addr):pint=(int*)addr:for(i=0:i<256:i1)pint=(int*)addr:♦pint=256:pausc():图3代码|include<sys/types.h>^includc<sys/ipc.h>includc<sys/shm.h>^defineSI^KEY75#defineK1024intshmid:miin()(inti.*pint:char*addr:externchar*shrrut():shmid=shnKC((S»\KEY.8*K,0777):addrsshmit(shmid.0.0):pint=(int*)addr:iIc(*pint==0):for(i«0:i<256:i++)printf("%d\n",♦pint**):}图416.8.c代码用“Esc+:wq",分别退出并保存程序“167c”和“16.8.C”,在终端输入“gcc16.7.c-o16.7”和“gcc16.8.c-o16.8”对程序进行编译,假如编译没有错误,继续在终端输入“・/16.7&”和“./I6.8”,运营程序,即可看到程序结果,其运营截图如下图5所示:

.rool^locaIhostrootJffvi16.7.c;rootHocaIhostroot]#gcc16.7.c-o16.7;root^locaIhostroot]#./167&:1]10754iddrox40017000;root^locaIhostroot]#vi168.c:root^locaIhostroot]#gcc168.c-o168;roo1^*1ocaIhostroot]#./16.8>561>5I)ri10H12131415图5程序运营截图分析:一方面进程向共享段写信息。该进程创建了长度为16K的共享主存段,并将共享段附加到了地址空间为Addr的地址上。然后从共享段的起始单元开始写入0〜255个自然数。等待接受进程读。然后进程从共享段读信息的例子,该进程一方面将进程写信息共享段的共享段连接到自己的地址空间,之后,判断共享段是否有信息,若无则等待,否则,读信息并显示。write进程创建了长度16k的共享主存段,并将共享段附加到了地址空间为addr的地址上,也显示了addr的值,然后从共享段的起始单元开始写入0—255个自然数,然后将首地址赋值为256,故读进程read运营后,第一个数显示256,后面是1-255o这个程序最佳在ro。t下运营,在一般用户下运营不出结果。四、实验过程与分析在做实验的过程中,我了解到了信号量机制和共享主存段机制进行通信。使用信号量机制用来实现进程之间的同步和互斥,允许并发进程一次对一组信号量进行相同或不同的操作。每个P、V操作不限于减1或加1,而是可以加减任何整数。在进程终止时,系统可根据需要自动消除所有被进程操作过的信号量的影响。共享主存段为进程提供了直接通过主存进行通信的有效手段,不像消息缓冲机制那样需要系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论