什么是进程进程间通信

进程间通信即为不同进程之间通信,进程同步是进程间通信的一种

unix进程间通信的分类有哪些

System V进程间通信方式包含:

  1. System V消息队列
  2. System V信号量
  3. System V共享内存

UNIX进程间通信方式包含:

  1. 匿名管道
  2. 命名管道
  3. 信号

POSIX进程间通信包含

  1. posix消息队列
  2. posix信号量
  3. posix共享内存

UNIX域套接字(UDS):

  1. UNIX Domain Socket

UNIX域socket实现本地进程间通信,需要一个进程作为服务器端,一个进程作为客户端,使用方法有点像socket网络,但又不经过网络底层的那些东西。与网络编程最不一样的地方是服务器端bind的时候用的是sockaddr_un结构,客户端connect的时候用的也是sockaddr_un结构,而不是sockaddr_in或sockaddr。而对于sockaddr_un结构,重点是给它提供一个bind()函数生成的socket类型文件的路径,即sockaddr_un.sun_path的值。并且客户端与服务器端的这个sockaddr_un结构的sun_path是一致的,通常这个路径是众所众知的,就像百度的域名那样。

经过bind,listen,accept,和connect后,两进程就通过读写socket文件描述符来通信,具体是服务器端读写accept返回的socket文件描述符,客户端读写经过connect处理后的文件描述符。

linux进程间通信的分类有哪些

  1. 管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。底层通过文件共享。
  2. 命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。底层通过文件共享。
  3. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。
  4. 消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。通过内存共享。
  5. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
  6. 内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。
  7. 信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。
  8. 套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

各个通信方式比较

  1. 管道:速度慢。容量有限,仅仅有父子进程能通讯
  2. FIFO:不论什么进程间都能通讯,但速度慢
  3. 消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题
  4. 信号量:不能传递复杂消息,仅仅能用来同步
  5. 共享内存区:能够非常easy控制容量,速度快,但要保持同步,比方一个进程在写的时候。还有一个进程要注意读写的问题,相当于线程中的线程安全。当然。共享内存区相同能够用作线程间通讯,只是没这个必要,线程间本来就已经共享了同一进程内的一块内存

读进程和写进程同步设计_浅谈unix进程进程间通信IPC原理相关推荐

  1. cx_oracle写日志信息_浅谈微服务架构之构建日志收集系统

    任何复杂的应用程序偶尔都会出现错误.在微服务应用程序中,需要跟踪几十甚至几百个服务发生的情况.要获取系统的整体视图,日志记录和监控至关重要.在微服务架构中,一个业务请求会经历多个服务,收集端到端链路上 ...

  2. 4路组相连cache设计_浅谈 Cache

    1. Cache的历史 在科研领域,C. J. Conti等人于1968年在描述360/85和360/91系统性能差异时最早引入了高速缓存(cache)一词.Alan Jay Smith于1982年的 ...

  3. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service Manager成为Android进程间 ...

  4. 单片机sleep函数的头文件_单片机代码模块化设计思想浅谈

    前言:前段时间分享的文章[单片机裸机代码框架设计思路],很多读者给我留言,觉得很不错,对于初学者而言,这是一个进阶的技巧,对于我而言,这是对自己总结和表达能力的一个提升. 本文章我们再谈谈单片机代码的 ...

  5. 读我们的学科——计算机专业学习浅谈

    读我们的学科--计算机专业学习浅谈 (北理计算机学院新闻社<九歌>专栏文章) 作者:林健 一.广泛了解,从科普书籍开始 选择计算机专业的同学,也许是因为原先有一定的基础,也许是因为一时的激 ...

  6. 《计算机辅助教学及应用实践研究》,《论文_浅谈计算机辅助教学(定稿)》

    <论文_浅谈计算机辅助教学(定稿)> (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 摘要:计算机辅助教学中要用到多媒体课件 ...

  7. python判断两个对象是否为相等使用的运算符是_Python入门_浅谈逻辑判断与运算符...

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

  8. 浅谈 unix, linux, ios, android 区别和联系

    浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答. 1.UNIX 和 Linux UNIX 操作系统(尤尼斯), 是一个强大的多 ...

  9. 【NXP DN 系列】浅谈 DPAA1 Software Architecture 工作原理

    浅谈 DPAA1 Software Architecture 工作原理 一.介绍 DPAA1 的主要目的是在片上系统( SOC )的 IO 部分内提供智能处理,以进行路由和管 理与流量相关的处理工作, ...

最新文章

  1. 2异常处理_异常是什么?什么是常用类?
  2. python里format有什么用_python format用法详解
  3. Rust之控制流,条件语句,模式匹配
  4. 无人驾驶感知篇之车载摄像头
  5. 主成分与因子分析异同_浅谈主成分分析与因子分析
  6. MATLAB读取图片时报错:“错误使用 fopen 找不到文件,确保文件存在且路径” 的原因及解决方法
  7. 轮子哥:回顾我走过的编程之路
  8. 小程序源码:收款码三合一制作-多玩法安装简单
  9. 移动硬盘与电脑连接后 计算机中找不到,移动硬盘连接电脑后不显示盘符怎么办...
  10. Javascript算法练习(四)
  11. 第二人生的源码分析(2)第二人生的基本功能
  12. 直播改革:关闭10家平台监管3万主播
  13. 随笔—醒悟篇之考研调剂
  14. 小飞鱼通达二开 致远OA启动时报错“无法初始化数据库连接池,系统无法启动”的问题处理(图文)
  15. excel文件下载下来损坏 js_js文件操作之——导出Excel (js-xlsx)
  16. python能制作ppt动画效果吗_原来用PPT也能做出神级的动画效果!
  17. linux dd copy all partitions,dd 命令详解
  18. Problem E: 类模板Sample
  19. 可以说今年最详细的面试要点!耗时两个礼拜,五章8000字面试长文,写简历—阿里Offer一步到位!
  20. 2022秋 | PTA编程训练(二)

热门文章

  1. 在Exchange 2010中批量导入用户
  2. Windows性能分析器概述(三)
  3. 浅谈本地服务器的搭建 XAMPP
  4. left join on用法_MySQL 多表查询 quot;Joinquot;+“case when”语句总结
  5. eclipse maven Invalid classpath publish/export dependency
  6. struts2 表单回填与action里的属性
  7. java程序设计p75_java语言程序设计实用教程第四讲控制结构.ppt
  8. python视频人脸检测_Python学习案例之视频人脸检测识别
  9. 7135制作自动量程电压切换_基于数字电压表的直流电位差计自动检定装置的讨论...
  10. 深度学习之基于卷积神经网络实现超大Mnist数据集识别