欢迎来到天天文库
浏览记录
ID:44499742
大小:82.00 KB
页数:8页
时间:2019-10-22
《操作系统第六次试验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、甘肃政法学院本科生实验报告(六)姓名:胡靖然学院:网络空间安全学院专业:信息管理与信息系统班级:2015级信息管理与信息系统本科班实验课程名称:操作系统基础实验实验日期:2018年月日开课时间:2017-2018学年第二学期甘肃政法学院实验管理中心印制实验题目进程的共享存储区及信号量通信小组合作否姓名胡靖然班级2015信管学号201581170107一、实验目的1.掌握信号最通信的程序设计方法。2.了解共享内存通信的程序设计方法。3.了解和熟悉Linux支持的共享存储区机制。二.实验环境Windows7操作系统Vmware软件Redhatlinux
2、操作系统三、实验内容与步骤1、编程实现一个是进程向共享段写信息的例子。2、编程实现从共享段读信息的例子3、利用系统提供的主存操作函数进行的申请、调整、使用和释放。4、编程实现多个进程对同一文件的互斥写入。四、实验过程与分析1、代码如下::#include#include#include#defineSlfvKEY75"defineK1024intshinid;rrain()inti,*pint:char*addr;:externchar*shnut();shmid=shi^et(
3、SHvKEYJ6*K,077711PC_CREAT):I'•addr=shnnt(shmid.0»0);printf(*addr0x%x*»addr):pint=(int*)addr:for(i=0;i<256;i”)♦pint^+=i;pint=(int*)addr:♦pint=256;pause();[root@locaIhostroot]#cdhjr[root@locaIhosthjr]#gcchjr5.c-ohjr5[root@IocaIhosthjr]#
4、,并将共享段附加到了地址空间为addr的地址上。然后从共享段的起始单元写入0-255个自然数,等待接收进程读。2、代码如下:#include#include#include:#defineSkhKEY75^defineK1024■;intshmid:nilin()char*addr:externchar*shnBt();shmid=shnget(SFM5、=0):for(i=0;i<256;i")printf(<%d<.*pin:a_结果如下:[root^locaIhosthjr]#gcchjr6.c-ohjr6[root@locaIhosthjr]#./hjr625612345891011121314151617181920分析:该进程先将所示进程创建的共享段连接到白己的地址空问(这里只共享其中的81<空间)。之后,判断共享段是否有信息,若无,则等待,否则,读信息并进行显示。3、代码如下:#include#include#includedIloc.h>in6、train(void){char*str;if((str=(char*)nBIloc(IO))==NLLL){printf(*notenoughnvnrryloaIlocatebuffer*):exit(1);Istrcpy(str/lfello*):printf(vstringis%saddressis%p*.str,str):if((str=(char*)reaIloc(strt20))==NLLL){printf(*notenoughnrircrvloallocatebufferw):1结果如下:root^locaIhosth7、jr]#./hjr7slringisH?Iloaddressis0x80497b0sIringisFbIlonewaddressis0x80497b0系统申请10个字节的内存空间,申请成功则将heUo复制输出后,输出它的地址,同样的申请20个字节的内存空间,申请成功则将hello复制输出后,输出它的新地址。代码如下:#includedinux/sem.h>#defineNIALPROCS5#defineSEM.ID250#defineF1LE_NNE•/1叩/seirtM^TEX*★defineDELAY400000voidupdate_file8、(intseirtsel_id•char*file_nanr_path,intnunber){'~structsenbuf
5、=0):for(i=0;i<256;i")printf(<%d<.*pin:a_结果如下:[root^locaIhosthjr]#gcchjr6.c-ohjr6[root@locaIhosthjr]#./hjr625612345891011121314151617181920分析:该进程先将所示进程创建的共享段连接到白己的地址空问(这里只共享其中的81<空间)。之后,判断共享段是否有信息,若无,则等待,否则,读信息并进行显示。3、代码如下:#include#include#includedIloc.h>in
6、train(void){char*str;if((str=(char*)nBIloc(IO))==NLLL){printf(*notenoughnvnrryloaIlocatebuffer*):exit(1);Istrcpy(str/lfello*):printf(vstringis%saddressis%p*.str,str):if((str=(char*)reaIloc(strt20))==NLLL){printf(*notenoughnrircrvloallocatebufferw):1结果如下:root^locaIhosth
7、jr]#./hjr7slringisH?Iloaddressis0x80497b0sIringisFbIlonewaddressis0x80497b0系统申请10个字节的内存空间,申请成功则将heUo复制输出后,输出它的地址,同样的申请20个字节的内存空间,申请成功则将hello复制输出后,输出它的新地址。代码如下:#includedinux/sem.h>#defineNIALPROCS5#defineSEM.ID250#defineF1LE_NNE•/1叩/seirtM^TEX*★defineDELAY400000voidupdate_file
8、(intseirtsel_id•char*file_nanr_path,intnunber){'~structsenbuf
此文档下载收益归作者所有