BX121028俞佳星实验4 Linux进程间的通信.doc
4页《操作系统原理实验》报告书电子信息学院实验报告书课程名:《操作系统原理实验》 题 目: 实验4 Linux进程间的通信 实验类别: 【设计】 班 级: BX1 学 号: 姓 名: 评语:实验态度:认真( ) 一般( ) 差( )实验结果:正确( ) 部分正确( )错( )实验理论:掌握( ) 熟悉( ) 了解( ) 不懂( )操作技能:强( ) 一般( ) 差( )实验报告:好( ) 一般( ) 差( )成绩: 指导教师: 苏庆刚 批阅时间 2014年 11月12日一、 实验内容1.了解系统调用pipe()的功能和实现过程。
2.编写程序实现进程的管道通信用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message!父进程从管道中读出二个来自子进程的信息并显示(要求先接收P2,后P1)3.运行该程序,观察、记录并简单分析其运行结果二、 实验目的与要求学习如何利用管道机制进行进程间的通信,以加深对通信机制的理解三、 实验环境Red Hat Linux 9;用户名:root,密码:123456四、 实验步骤1、实验准备知识(1)什么是管道Linux系统在OS的发展上,最重要的贡献之一便是该系统首创了管道(pipe)这也是Linux系统的一大特色所谓管道,是指能够连接一个写进程和一个读进程的、并允许它们以生产者—消费者方式进行通信的一个共享文件,又称为pipe文件由写进程从管道的写入端(句柄1)将数据写入管道,而读进程则从管道的读出端(句柄0)读出数据2)管道的类型:1) 有名管道一个可以在文件系统中长期存在的、具有路径名的文件用系统调用mknod( )建立它克服无名管道使用上的局限性,可让更多的进程也能利用管道进行通信。
因而其它进程可以知道它的存在,并能利用路径名来访问该文件对有名管道的访问方式与访问其他文件一样,需先用open( )打开2) 无名管道一个临时文件利用pipe( )建立起来的无名文件(无路径名)只用该系统调用所返回的文件描述符来标识该文件,故只有调用pipe( )的进程及其子孙进程才能识别此文件描述符,才能利用该文件(管道)进行通信当这些进程不再使用此管道时,核心收回其索引结点3)pipe文件的建立分配磁盘和内存索引结点、为读进程分配文件表项、为写进程分配文件表项、分配用户文件描述符(4)读/写进程互斥内核为地址设置一个读指针和一个写指针,按先进先出顺序读、写为使读、写进程互斥地访问pipe文件,需使各进程互斥地访问pipe文件索引结点中的直接地址项因此,每次进程在访问pipe文件前,都需检查该索引文件是否已被上锁若是,进程便睡眠等待,否则,将其上锁,进行读/写操作结束后解锁,并唤醒因该索引结点上锁而睡眠的进程5)所涉及的系统调用 1) pipe( )建立一无名管道系统调用格式 pipe(filedes)参数定义int pipe(filedes);int filedes[2];其中,filedes[1]是写入端,filedes[0]是读出端。
该函数使用头文件如下:#include
3、源程序#include
在本次实验中我们了解系统调用pipe()的功能和实现过程通过我们自己编写的程序来实现进程的管道通信用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写了一句话六、 思考题1、sleep(5)的含义是什么?在向管道写数据时,进行自我阻塞因为读/写操作需要一定的时间,通过自我阻塞来避免读/写出错2、程序中,是如何控制先显示,再显示的?利用wait()来等待子进程运行结束然后从管道中读出数据,显示在屏幕上然后,再利用wait等待,直到另一个子进程也运行结束,然后从管道中读出数据,在显示在屏幕上3、子进程1和2为什么也能对管道进行操作? 因为子进程和父进程拥有同一个资源所以在父进程中创建的管道,子进程也能对其进行操作。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


