您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 操作系统惠普测试171+实验6-共享存储区通信实验
操作系统原理A实验报告学生姓名:陶浩学号:1708090122班级:惠普测试171实验名称:实验6进程共享存储区通信实验实验指导教师:葛艳6进程的共享存储区通信实验一、实验目的了解共享内存通信方式的特点。掌握共享内存通信方式的使用方法。二、实验内容1.按照P67页程序运行说明,编译运行两个程序shm-send.c和shm-receive.c,把运行结果截图,并分析两个程序怎样实现的对共享存储区的互斥和同步。2.把参考程序“shmchat.c”拆分成两个程序:chat-send.c和chat-receive.c,编译后分别在两个窗口运行,把运行结果截图,分析两个程序怎样实现的对共享存储区的互斥和同步。3.分析共享内存通信机制的优缺点。三、实验步骤及运行结果分析1.按照P67页程序运行说明,编译运行两个程序shm-send.c和shm-receive.c,把运行结果截图,并分析两个程序怎样实现的对共享存储区的互斥和同步。第一种方法:先让编译后的发送程序shm-send后台运行(./shm-send&),再运行接收程序shm-receive。第二种方法:让两个程序分别在两个终端运行分析:两个程序shm-send.c和shm-receive.c基于内存区发送和接收字符信息abcd…xyz。shm-send.c创建获取指定key值的共享内存,并且将内存附接到自己的虚拟空间,将消息(字符信息)写入共享内存。shm-receive.c创建获取指定key值的共享内存,将内存附接到自己的虚拟地址空间上,输出字符信息。2.把参考程序“shmchat.c”拆分成两个程序:chat-send.c和chat-receive.c,编译后分别在两个窗口运行,把运行结果截图,分析两个程序怎样实现的对共享存储区的互斥和同步。测试运行1,不让程序接收“bye”测试运行2让程序接收“bye”分析:(1)实现server和client的并发执行和相互通信。chat-send.c和chat-receive.c两个程序分别在两个终端运行。(2)chat-send.c的server端建立一个key为75的共享内存区,并将共享内存区数据结构成员mtype置为-1,作为共享内存区数据空的标志,等待其他进程发来的信息。当消息受到完毕后,再次设置共享内存区数据空的标志。如果接受到“bye”则视为结束信号,断开与共享内存区的链接,删除共享内存区,退出。(3)chat-receive.c的client端建立一个key为75的共享区,当检测到共享内存区为空时,从键盘获取信息并写入共享内存区,等待共享内存区的再次空闲。如果接受到“bye”,则视为结束信号。断开与共享内存去的链接,删除共享内存区,退出。(4)父进程中调用system(“ipcs-m”)显示共享内存区信息,等待server和client均退出后结束。(5)程序终止,撤销共享内存区,归还资源。3.分析共享内存通信机制的优缺点。优点:(1)为通信进程提供了直接通信的手段,使得通信进程可以直接访问彼此的某些虚拟空间。(2)减少了数据流动所带了的软硬件开销。(3)又使彼此的通信不仅仅局限于数据的发送与接收而且可以互相操作彼此的某些虚拟存储区。缺点:(1)没有提供互斥同步的机制,需要使用额外的同步机制,往往要借助其他的手段比如信号量等来进行进程间的同步工作。(2)由于多个CPU需要快速访问存储器,这样就需要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能需要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。(3)数据写入进程或数据读出进程中,需要附加的数据结构控制。
本文标题:操作系统惠普测试171+实验6-共享存储区通信实验
链接地址:https://www.777doc.com/doc-6975213 .html