1 / 150
文档名称:

进程间通信-IPC.ppt

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

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

分享

预览

进程间通信-IPC.ppt

上传人:幻影 2018/7/29 文件大小:1.56 MB

下载得到文件列表

进程间通信-IPC.ppt

相关文档

文档介绍

文档介绍:linux进程间通信
linux进程间通信
进程间通信IPC(munication)提供了一种不同进程间可以互相访问数据的方式。
进程间通信的目的:
1、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。
2、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。
3、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。
4、资源共享:多个进程之间共享同样的资源。为了作到这一点,需要内核提供锁和同步机制。
5、进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有异常,并能够及时知道它的状态改变。
linux进程间通信发展历史
linux进程间通信(IPC)由以下几部分发展而来:
linux进程间通信方式
传统进程间通信方式:
(1)匿名管道(Pipe)及有名管道(named pipe) :匿名管道可用于具有亲缘关系进程间的通信;有名管道,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。
(2)信号(Signal) :信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知接受进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一样的。
System V 进程间通信方式:
(1)消息(message)队列:消息队列是消息的链接表,包括 Posix 消息队列 systemV 消息队列。它克服了前两种通信方式中信息量有限的缺点,具有写权限的进程可以向消息队列中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读取消息。
linux进程间通信
(2)共享内存(shared memory) :可以说这是最有用的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。这种通信方式需要依靠某种同步机制,如互斥锁和信号量等。
(3)信号量(semaphore) :主要作为进程间以及同一进程不同线程之间的同步手段。
套接字通信
套接字(Socket) :这是一种更为一般的进程间通信机制,它可用于不同机器之间的进程间通信,应用常广泛。
6
主要内容
传统进程通信
管道通信
信号通信
System V IPC进程通信
消息队列
共享主存
信号量
管道通信
管道通信是linux 中比较常见,也比较原始的通信方式之一,它实现了数据以一种数据流的方式,在多进程间流动。
管道提供了简单的流控制机制:
读空管道阻塞:进程试图读空管道时,在有数据写入管道前,进程将一直阻塞。
写满管道阻塞:管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞。
管道分类:
无名管道: (匿名管道)在系统中没有实名,不能在文件系统中以任何方式看到该管道,它只是进程的一种资源,会随着进程的结束而被系统清除。
有名管道:也称为FIFO管道,是一种文件类型,在文件系统中可以查看到。
匿名管道(pipe)
匿名管道:是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件,又称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

最近更新

研究生中期考核个人情况总结(通用6篇) 8页

复杂背景中条码图像的定位与识别方法研究的开.. 2页

墨子“义”“利”研究的开题报告 2页

基于马尔可夫理论的电力系统可靠性评估中期报.. 2页

基于通用设计理念的盲人英语学习移动应用研究.. 2页

基于访问路径挖掘的Web缓存与预期模型研究的开.. 2页

基于脾脏免疫物质探讨卫气节律性变化的实验研.. 2页

基于纠删码的分布式文件系统恢复过程研究的开.. 2页

肿瘤内科治疗王洁 58页

2024年年度优秀个人表彰词(精选50篇) 17页

基于混合存储架构的高效页面替换算法研究开题.. 2页

基于活性焦改性脱除煤气中汞的实验研究中期报.. 2页

2024年平安行特别节目观后感 9页

基于模态参数小波神经网络的结构损伤识别方法.. 2页

基于校园网环境的高校学生收费管理系统设计与.. 2页

基于数据驱动的工业过程故障诊断方法研究的开.. 2页

肠内营养相关问题2 34页

基于摩擦学超滑理论的减摩抗磨新型切削液设计.. 2页

肝脏凝固性坏死ppt课件 27页

基于总线控制的直列式点火系统的开题报告 2页

2024年市场营销自我鉴定(合集15篇) 23页

基于实时电价的群体电动出租车充电调控研究中.. 2页

基于天然染料为母体的染料开发与应用的开题报.. 2页

2024年工程部工作总结汇编20篇 85页

跨文化语用翻译 31页

基于地理信息服务的高中地理教学情境设计的开.. 2页

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

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

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

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