




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.青 岛 理 工 大 学课程实验报告课程名称操作系统班级软件114实验日期2013/10/28姓名李晓菲学号201107286实验成绩实验名称实验4进程通信实验目的及要求1、加深理解进程通信的方法与原理;2、掌握如何利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通信。实验环境Windows; Virtual Box; Ubuntu 11.10;Vi编辑器; GCC编译器; Geany IDE;实验内容1、了解系统调用pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功 能和实现过程。
2、2、编写一C语言程序,使其用管道来实现父子进程间通信。子进程向父进程发送字符串“is sending a message to parent!”;父进程则从管道中读出子进程发来的消息,并将其显示到屏幕上,然后终止。3、运行该程序,观察、记录并简单分析其运行结果。算法描述及实验步骤算法描述及实验步骤算法描述及实验步骤1、pipe()、msgget()、msgsnd()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()(1)pipe( )系统调用格式:pipe()参数定义int pipe();int 2;其中,1是写入端,0是读出端。该函数使用
3、头文件如下:#include #inlcude #include 功能:建立一无名管道。管道建立后,写进程将数据写入文件1,读进程从文件0中读数据,从而实现读/写进程的管道通信。管道是一个共享资源,写/写进程、读/写进程应互斥使用管道。(2)msgget( )系统调用格式:int msgget(key_t key, int msgflg);功能:获取与某个键关联的消息队列标识。消息队列被建立的情况有两种: (1)如果键的值是IPC_PRIVATE。 (2)或者键的值不是IPC_PRIVATE,并且键所对应的消息队列不存在,同时标志中指定IPC_CREAT。该函数使用头文件如下:#include
4、 #include #include (3、4)msgsnd( )和msgrcv( )系统调用格式int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg);功能:在消息队列上进行收发消息。为了发送消息,调用进程对消息队列必须有写权限。接收消息时必须有读权限。该函数使用头文件如下:#include #include #include (5)msgctl( )系统调用格式i
5、nt msgctl(int msqid, int cmd, struct msqid_ds *buf);功能:在指定的消息队列上执行某种控制操作。该函数使用头文件如下:#include #include #include (6)shmget( )功能:用于创建(或者获取)一个由key键值指定的共享内存对象,返回该对象的系统标识符:shmid;系统调用格式:shmid=shmget(key,size,flag)该函数使用头文件如下:#include#include#include(7)shmat( )功能:共享存储区的附接。从逻辑上将一个共享存储区附接到进程的虚拟地址空间上。用于建立调用进程与由
6、标识符shmid指定的共享内存对象之间的连接。系统调用格式:virtaddr=shmat(shmid,addr,flag)该函数使用头文件如下:#include#include#include(8)shmdt( )功能:用于断开调用进程与共享内存对象之间的连接,成功时返回0,失败返回-1。系统调用格式:int shmdt(shmaddr)char *shmaddr;/*采用shmat函数的返回值*/(9)shmctl( )功能:共享存储区的控制,对其状态信息进行读取和修改。用于对已创建的共享内存对象进行查询、设置、删除等操作。系统调用格式:shmctl(shmid,cmd,buf)该函数使用头
7、文件如下:#include#include#include2、步骤:(1)定义进程变量 (2)定义两个字符数组 (3)创建管道 (4)如果进程创建不成功,则空循环 (5)如果子进程创建成功,pid为进程号 (6)锁定管道 (7)给Outpipe赋值 (8)向管道写入数据 (9)等待读进程读出数据 (10)解除管道的锁定 (11)结束进程等待子进程结束 (12)从管道中读出数据 (13)显示读出的数据 (14)父进程结束 调试过程及实验结果创建jincheng.c插入文字运行:运行后:总结总结(对实验结果进行分析,问题回答,实验心得体会及改进意见)虽然对pipe()、msgget()、msgsn
8、d()、msgrcv()、msgctl()、shmget()、shmat()、shmdt()、shmctl()的功能和实现过程有所了解,但是运用还是不熟练,过去没见过,所以运行了一个简单的程序。利用管道机制、消息缓冲队列、共享存储区机制进行进程间的通信,加深了对其了解。(1)管道通信机制,同步的实现过程:当写进程把一定数量的数据写入pipe,便去睡眠等待,直到读进程取走数据后,再把它唤醒。当读进程读一空pipe时,也应睡眠等待,直到写进程将数据写入管道后,才将之唤醒,从而实现进程的同步。管道通信的特点:A 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;B. 只能用
9、于父子进程或者兄弟进程之间(具有亲缘关系的进程);C.单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。D. 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。管道适用于处理大量的同步操作问题。(2)消息队列的特点:A.消息队列机制增加了管理的负担B.消息队列通信机制非常快捷C.消息队列机制是异步信息处理,不是实时的(3)共享存储区通信:为了传输大量数据,在存储区中划出了一块共享存储区,
10、诸进程便可通过对共享存储区中数据的读或写来实现通信。附录(源程序清单)#include #include #include int pid; / 定义进程变量 main( ) int fd2; char OutPipe300, InPipe300; / 定义两个字符数组 pipe(fd); / 创建管道 while (pid = fork( ) = -1); / 如果进程创建不成功,则空循环 if (pid = 0) / 如果子进程创建成功,pid为进程号 lockf(fd1, 1, 0); / 锁定管道 sprintf(OutPipe, Childs PID=%dn%s,getpid(),is sending a message to parent!n); / 给Outpipe赋值 write(fd1, OutPipe, 50); / 向管道写入数据 sleep(5); /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 船舶保养考试题及答案
- 2025年军队文职人员招聘之军队文职法学考前冲刺试卷A卷含答案
- 小升初科学测试题及答案
- 2019-2025年消防设施操作员之消防设备基础知识能力检测试卷B卷附答案
- 2019-2025年消防设施操作员之消防设备基础知识模考模拟试题(全优)
- 2019-2025年消防设施操作员之消防设备基础知识基础试题库和答案要点
- 社保知识培训课件北京
- 语文小说文本解读技巧训练教案:以小说围城为例
- 办公室人员基本信息表
- 写作技巧大揭秘:高中语文作文指导课程教案
- 2025年共青科技职业学院单招职业适应性测试题库完整版
- 2025年上半年潜江市城市建设发展集团招聘工作人员【52人】易考易错模拟试题(共500题)试卷后附参考答案
- 统编版语文二年级下册15古诗二首 《晓出净慈寺送林子方》公开课一等奖创新教学设计
- 旅游电子商务(第2版) 课件全套 周春林 项目1-8 电子商务概述-旅游电子商务数据挖掘
- 2025年安徽警官职业学院单招职业适应性测试题库带答案
- 广东广东省钱币学会招聘笔试历年参考题库附带答案详解
- 2025年福建省中职《英语》学业水平考试核心考点试题库500题(重点)
- 【课件】自然环境课件-2024-2025学年七年级地理下册人教版
- 2025年河北省职业院校技能大赛智能节水系统设计与安装(高职组)考试题库(含答案)
- 2025-2030年中国蒸发器冷凝器行业发展状况及前景趋势分析报告
- 2024年江西环境工程职业学院高职单招语文历年参考题库含答案解析
评论
0/150
提交评论