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
匿名管道的写

最近更新

婚礼新郎致辞简单大方 10页

常见的量 15页

外交小灵通传播特点及发展策略研究的开题报告.. 2页

复杂环境下导航信号跟踪算法研究的开题报告 2页

复合纳米结构荧光传感材料与器件的开题报告 2页

壳乳液的低温合成与表征的开题报告 2页

塔河一间房组酸蚀导流能力与产能模型研究的开.. 2页

基坑开挖对相邻地铁隧道的影响的开题报告 2页

基于马尔科夫稳态特性的图像检索系统设计与实.. 2页

基于非线性破坏准则的盾构隧道开挖面稳定性分.. 2页

基于问题框架的系统级别测试的研究的开题报告.. 2页

基于遗传算法的柑橘图像分割的开题报告 2页

基于边缘定向的图像插值算法研究中期报告 2页

基于超声导波测试信号钢筋混凝土损伤评价方法.. 2页

基于语料库的以英语为母语者的幅度副词习得研.. 2页

基于行为测量的煤矿安全生产激励机制研究的开.. 2页

基于草乌减毒效应的诃子化学成分研究的开题报.. 2页

基于能值分析的黄河三角洲生态经济研究的开题.. 2页

基于经济增加值的汽车行业上市公司财务业绩评.. 2页

基于系统设计的不良信息管制研究的开题报告 2页

基于符号互动论的儿童购物广场区亲子主题餐厅.. 2页

基于移动互联网的呼叫中心系统的分析与设计的.. 2页

基于社会化媒体的网络口碑传播对顾客购买意愿.. 2页

2024年年度工作总结合集(15篇) 57页

基于生态位理论的湖北省城市旅游竞争力研究的.. 2页

2024年年度培训计划制定 30页

基于环境一号卫星数据的小麦秸杆焚烧点提取方.. 2页

江苏省中小学生实验操作大赛在线测评生物题库.. 9页

家具类项目实施方案及质量控制措施(共24页) 24页

第七章 小组初期课件 32页