- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统实验4-4实验报告
操作系统实验报告实验4-4: Linux共享存储通信实验目的(1) 掌握Linux提供的共享存储区通信方式的使用方法。(2) 了解共享存储区通信方法的特点。(3) 了解实现进程间通信的不同方法之间的区别、特点和适用情况。实验内容(1)编写发送信息程序shmsnd.c和接受信息程序shmrcv.c,其功能分别为: //shmsnd.c//创建一个共享存储区间;将它附接到自己的地址空间;循环写入若干信息,以“end”结束(提示:信息以追加方式存放到共享区中,可以用strcat()函数实现追加);断开共享区;结束。 //shmrcv.c//创建/获取同一个共享存储区;将它附接到自己的地址空间;输入其中已经由发送地方输入的内容;断开共享区删除共享区结束。 采用先执行发送进程、后执行接受进程来实现同步。 (2) 父进程创建一个共享存储区,然后创建子进程;采用终端实现父进程发送信息和子进程接受信息的同步;信息以“end”作为结束标志。实验思考共享存储区间通信有哪些优点?使用上有哪些限制?适用于哪种场合?答:优点:这种通讯方式允许多个进程共享同一块物理内存空间来实现进程之间的信息交换,取消了中间环节是同一个计算机系统中多个进程间实现通讯的最快捷的方法。限制:共享内存必须共处同一个计算机系统,有物理内存可以共享才行。适用:同一台电脑。总结共享存储区通信与消息缓冲通信、管理通信方式各有哪些特点?答:共享存储区通信:快捷、信息量大,但是不带同步工具,同步和互斥问题需要各进程利用其他同步工具解决,而且要求这些进程都在同一存储介质上运行,不方便网络通信。消息缓冲通信:可以在任意进程之间通信,并且自带同步工具,使用方便,但是信息复制消耗CPU的时间,不适宜信息量大或操作频繁的场合。管理通信:方便简单,但工作在单项通信方式,且只能在创建它的进程及其子孙进程之间共享。实验代码4-4-1:①#includestdio.h#includestdlib.h#includestring.h#includeunistd.h#includesys/types.h#includesys/ipc.h#includesys/shm.hmain(){int shmid,running=1;char *viraddr;char buffer[BUFSIZ];shmid=shmget(1234,BUFSIZ,0666|IPC_CREAT);viraddr=shmat(shmid,0,0);while(running){puts(Enter some text:);fgets(buffer,BUFSIZ,stdin);strcat(viraddr,buffer);if(strncmp(buffer,end,3)==0)running=0;}shmdt(viraddr);exit(0);}②#includestdio.h#includestdlib.h#includestring.h#includeunistd.h#includesys/ipc.h#includesys/types.h#includesys/shm.hmain(){int shmid;char *viraddr;shmid=shmget(1234,BUFSIZ,0666|IPC_CREAT);viraddr=shmat(shmid,0,0);printf(Your message is:\n%s,viraddr);shmdt(viraddr);shmctl(shmid,IPC_RMID,0);exit(0);}4-4-2:#includestdio.h#includestdlib.h#includestring.h#includeunistd.h#includesignal.h#includesys/types.h#includesys/ipc.h#includesys/shm.hvoid int_func(int sig);int k;void int_func(int sig) /*定义中断后要执行的函数*/{k=0; /*修改循环变量的值*/}main(){ int chld,shmid,running=1; char *viraddr1,*viraddr2; char buffer[BUFSIZ]; signal(SIGUSR1,int_func);/*预置信号对应的函数*/k=1; shmid=shmget(1234,BUFSIZ,0666|IPC_CREAT); /*创建共享存储区*/ while((chld=fork())==-1); if(chld0) {viraddr1=shmat(shmid,0,0);
您可能关注的文档
最近下载
- 1.医院廉洁党课讲稿(精选).pdf VIP
- 专题07 修辞与仿写(讲义) 五升六语文暑假衔接(统编版).docx VIP
- 2025年执业药师继续教育中药注册管理专门规定参考答案.docx
- GB/T 34531-2017 液化二甲醚钢瓶定期检验与评定.pdf VIP
- 创维电视机说明书_图文.pdf VIP
- 医院科技成果转化合同模板.docx VIP
- 危险化学品企业“5.12 应急准备与响应”解读与应用指南(2025A1)(可编辑!).docx VIP
- 佳能 5D3 _ 5d mark iii-中文手册.pdf VIP
- 胶体与界面化学7重点.ppt VIP
- 【新教材】北师大版(2024)三年级上册数学第六单元 乘除法的应用(二) 教案(表格式).docx
原创力文档


文档评论(0)