操作系统实验4-4实验报告.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
操作系统实验报告 实验4-4: Linux共享存储通信 实验目的 (1) 掌握Linux提供的共享存储区通信方式的使用方法。 (2) 了解共享存储区通信方法的特点。 (3) 了解实现进程间通信的不同方法之间的区别、特点和适用情况。 实验内容 (1)编写发送信息程序shmsnd.c和接受信息程序shmrcv.c,其功能分别为: //shmsnd.c// 创建一个共享存储区间; 将它附接到自己的地址空间; 循环写入若干信息,以"end"结束(提示:信息以追加方式存放到共享区中,可以用strcat()函数实现追加); 断开共享区; 结束。 //shmrcv.c// 创建/获取同一个共享存储区; 将它附接到自己的地址空间; 输入其中已经由发送地方输入的内容; 断开共享区 删除共享区 结束。 采用先执行发送进程、后执行接受进程来实现同步。 (2) 父进程创建一个共 存储区,然后创建子进程;采用终端实现父进程发送信息和子进程接受信息的同步;信息以"end"作为结束标志。 实验思考 共享存储区间通信有哪些优点?使用上有哪些限制?适用于哪种场合? 操作系统实验4-4实验报告全文共5页,当前为第1页。答:优点:这种通讯方式允许多个进程共享同一块物理内存空间来实现进程之间的信息交换,取消了中间环节是同一个计算机系统中多个进程间实现通讯的最快捷的方法。 操作系统实验4-4实验报告全文共5页,当前为第1页。 限制:共享内存必须共处同一个计算机系统,有物理内存可以共享才行。 适用:同一台电脑。 总结共享存储区通信与消息缓冲通信、管理通信方式各有哪些特点? 答:共享存储区通信:快捷、信息量大,但是不带同步工具,同步和互斥问题需要各进程利用其他同步工具解决,而且要求这些进程都在同一存储介质上运行,不方便网络通信。 消息缓冲通信:可以在任意进程之间通信,并且自带同步工具,使用方便,但是信息复制消耗CPU的时间,不适宜信息量大或操作频繁的场合。 管理通信:方便简单,但工作在单项通信方式,且只能在创建它的进程及其子孙进程之间共享。 实验代码 4-4-1: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/shm.h> main() { 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); 操作系统实验4-4实验报告全文共5页,当前为第2页。 strcat(viraddr,buffer); 操作系统实验4-4实验报告全文共5页,当前为第2页。 if(strncmp(buffer,"end",3)==0) running=0; } shmdt(viraddr); exit(0); } #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<sys/ipc.h> #include<sys/types.h> #include<sys/shm.h> main() { 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: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<signal.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/shm.h> void int_func(int sig); int k; void int_func(int sig) /*定义中断后要执行的函数*/ { k=0; /*修改循环变量的值*/ 操作系统实验4-4实验报告全文共5页,当前为第3页。} 操作系统实验4-4实验报告全文共5页,当
- 粉丝: 168
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助