1 / 117
文档名称:

进程间通信IPC研究.ppt

格式:ppt   大小:1,004KB   页数:117页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

进程间通信IPC研究.ppt

上传人:s0012230 2017/7/9 文件大小:1004 KB

下载得到文件列表

进程间通信IPC研究.ppt

相关文档

文档介绍

文档介绍:linux进程间通信
linux进程间通信
进程间通信IPC(munication)提供了一种不同进程间可以互相访问数据的方式。相互访问的数据不仅包括程序运行时的适时数据,也包括对对方代码段的访问。
进程间通信的目的:
1、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。
2、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。
3、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
4、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。
5、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有异常,并能够及时知道它的状态改变。
linux进程间通信发展历史
linux进程间通信(IPC)由以下几部分发展而来:
linux进程间通信方式
目前Linux 中使用较多的进程间通信方式:
(1)管道(Pipe)及有名管道(named pipe) :管道可用于具有亲缘关系进程间的通信;有名管道,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
(2)信号(Signal) :信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知接受进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一样的。
(3)消息(message)队列:消息队列是消息的链接表,包括 Posix 消息队列 systemV 消息队列。它克服了前两种通信方式中信息量有限的缺点,具有写权限的进程可以向消息队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读取消息。
linux进程间通信
(4)共享内存(shared memory) :可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这种通信方式需要依靠某种同步机制,如互斥锁和信号量等。
(5)信号量(semaphore) :主要作为进程间以及同一进程不同线程之间的同步手段。
(6)套接字(Socket) :这是一种更为一般的进程间通信机制,它可用于不同机器之间的进程间通信,应用常广泛。
管道通信
管道通信是linux 中比较常见,也比较原始的通信方式之一,它实现了数据以一种数据流的方式,在多进程间流动。
管道:是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称pipe文件。
管道是单向的、先进先出的、无结构的、固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。
写进程在管道的尾端写入数据,读进程在管道的首端读出数据。
数据读出后将从管道中移走,其它读进程都不能再读到这些数据。
管道提供了简单的流控制机制。进程试图读空管道时,在有数据写入管道前,进程将一直阻塞。同样,管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞。
管道分类:
无名管道: (匿名管道)在系统中没有实名,不能在文件系统中以任何方式看到该管道,它只是进程的一种资源,会随着进程的结束而被系统清除。
有名管道:也称为FIFO管道,是一种文件类型,在文件系统中可以查看到。
7
匿名管道(pipe)
对匿名管道两端进程而言,是一个只存在于内存的特殊文件
匿名管道是半双工的,数据只能向一个方向流动
一个进程将数据写入管道,另一进程从管道中读取数据
写入的内容添加在管道缓冲区的末尾,每次都是从缓冲区头部读出数据
双向通信的建立
需要建立起两个管道
使用限制
只能用于具有亲缘关系的进程之间
如父子进程或兄弟进程之间
管道通信
8
匿名管道的建立
基本函数
int pipe(int fd[2]);
参数说明
fd[2]描述管道两端
fd[0]只能用于读,称为管道读端
fd[1]只能用于写,称为管道写端
若试图从写端读,或者向读端写都将导致错误发生
返回值
成功时返回0,失败时返回-1
说明
基本文件I/O函数都可用于管道
如close()、read()、write()等
低层系统调用
sys_pipe( )-->do_pipe()
管道通信
9
匿名管道的读操作
进程调用read()系统调用
内核最终调用与该文件描述符相关的文件操作表中所找到的read()方法
在管道情形下,read方法将指向pipe_read()函数
该系统调用可能以两种方式阻塞当前进程
系统调用开始时管道缓冲区为空
管道缓冲区没有包含所请求的字节(n个字节),写进程在等待缓冲区的空间时曾经被置为睡眠
10
匿名管道的写

最近更新

基于移动窗口与CA模型的济南城市空间格局研究.. 2页

基于直接转矩控制的大功率定扭矩电动扳手驱动.. 2页

基于用户行为的网格资源发现相关问题研究的开.. 2页

肾窦恶性纤维组织细胞瘤 33页

2024年年度个人工作计划(14篇) 41页

2024年年会公司领导讲话稿15篇 25页

基于污染预防的糠醛制取方法研究中期报告 2页

2024年师范生实习自我鉴定范文(精选18篇) 34页

基于旋转导向钻井技术的可控弯接头工作性能研.. 2页

基于数据模型的湿法冶金置换过程批次间迭代优.. 2页

2024年师德师风的个人总结(精选6篇) 14页

基于建筑现象学的工业遗产情感空间塑造研究中.. 2页

基于布朗语料库的《喧哗与骚动》语言特色研究.. 2页

基于复杂网络的形状描述方法研究的开题报告 2页

基于图像识别的智能抄表系统研究与实现的开题.. 2页

2024年工程材料供货合同15篇 33页

基于变分原理和微分求积有限单元法的桩筏基础.. 2页

2024年工程承包合同(13篇) 48页

基于博弈论的云计算资源分配研究中期报告 2页

基于功能纳米材料的电化学传感器在生物检测中.. 2页

2023年消防救援站党支部工作总结 4页

慢性胃炎中医症候评分表格模板2 3页

教师心得体会师德感悟篇范文2023年 9页

学校食堂6s管理内容和标准四篇 51页

夹江陶瓷产业发展历程和基本概况 5页

超声科质量控制评分表(共1页) 1页

高速铁路桥梁缺陷整治方案 56页

尊师开示 7页

十五种解经讲道法(1) 55页

张宏宝尊师谈养生修炼的利与弊 10页