资源描述:
《1407070225--郭飞--(三)进程互斥实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验二进程管理(三)进程互斥实验一、实验目的1、进一步认识并发执行的实质2、分析进程竞争资源的现象,学习解决进程互斥的方法二.实验内容1、修改实验(一)中的程序2,用lockf()来给每一个进程加锁,以实现进程之间的互斥2、观察并分析出现的现象三、实验过程1.进入LINUX系统。打开虚拟机,在vi中编写程序,在终端输入文件名(以xx.c命名),执行指令,得岀运行结果。2•程序执行之后,发现执行结果于未上锁之前大致相同,只是结果顺序与实验一稍有差异,最终明口不同进程之间并不存在共享临界资源的问题,所以加锁与不加锁效果相同。3•程序运行结果如2[root@linuxServerroot]#Ir
2、oot@linuxServerrootJ#gccgf.c[root@linuxServerroot]#./a.outdaughterOdaughter1daughter2daughter3daughter4daughter5daughter6daughter7daughter8daughter9sonOsonlson2son3son4son5son6son?son8son9parentOparent1四、回答问题1・分析以下程序的输出结果:#include#includemain(){intpl,p2,i;int*fp;fp=fopen(/zto_be
3、_locked.txtz/,w+);if(fp二二NULL){printf(z,Fai1tocreatefile");exit(-1);}wh订e((pl=fork())==-1);/*创建子进程pl*/if(pl==0){lockf(*fp,1,0);/*加锁*/for(i=0;i<10;i++)fprintf(fp,"daughter%d〃,i);lockf(^fp,0,0);/*解锁*/}else{wh订e((p2=fork())二二T);/*创建子进程p2*/if(p2==0){lockf(*fp,1,0);/*加锁*/for(i=0;i<10;i++)fprintf(fp,"
4、son%d〃,i);lockf(*fp,0,0);/*解锁*/}else/*加锁*/wait(NULL);lockf(*fp,1,0);for(i=0;i<10;i++)fprintf(邙,z,parent%d〃,i);lockf(*fp,0,0);/*解锁*/}}fclose(fp);cattobelocked,txt查看输出结果2•预期实验:son••-son…daughter..daughter..或daughtcf-daughter…son•••son•••3.输出实验结果:root^kKallx>sl:文件(£)编俅(旦)查看Q9终端(I)转到(Q柄助(旦)[root<^
5、locaIhostroot]#gccgf・cgf.c:1nfunctionnnin':gf・c:7:rning:assignirenlfrominconpaIiblepointertypegf.c:18:uorning:passingarg1offprintf'frominconpatiblepointcrlypegf・c:28:ua「ning:passingarg1offprintf'frominconpatiblepointertypegf.c:35:rning:passingarg1offprintf'nukespointerfromintegeiwithouacastgf.c:39
6、:\orning:passingarg1offclose•frominconpatiblepointertype[root^locaIhostroot]#cato^_bc.locked.txtdaughter0daughter1daughter2daughter3daughter4daughter5daughter6daughter7daughter8daughter9son0son1son2son3[son4son4son5son6son7son8son9[root@locaIhostroot]#五、实验总结1•并发性是指两个或多少个事件在同一吋间间隔内发生。从程序的活动方面看,若干个
7、作业程序同时或者相互穿插在系统中并发执行。这时,计算机不再是简单的顺序执行一•道程序。也就是说,一道程序的前一操作结束后,系统不一定立即执行其后续的操作,而可能转而执行其他程序的某一操作,但是并发性虽然能有效改善系统资源的利用率,但却会引发一系列的问题,使操作系统的设计和实现变得复杂化。1.所谓的进程互斥,是指两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,也就是说,一个进程止在访问临界资源,另一个要访问