你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux进程通信的基础知识

[复制链接]
gaosmile 发布时间:2020-12-5 23:22
进程通信的目的. H* z' O, m2 b2 g5 x" e; i( Z5 G9 s

& w( m6 C0 M6 @) m3 v! ~
    IPC(Inter-Process Communication)进程间通信。
6 W- h- r& }: G
    在没有学习进程通信前总感觉两个程序之间需要交换数据,一般都是基于文件,比如一个进程向文本文件里面写数据,而另外一个进程读取数据,当然这样两个进程的读写就需要互斥,然而这样的读写文件需要不断的读写磁盘,属实效率不高,那么今天就学习一波实际的进程通信 :
! N' Z: P6 y2 L
01
为什么需要进程通信
9 d1 j5 z% f& \- c) x6 T
  • 1、数据传输:进程之间配合完成相关任务,相互之间需要交互一些数据,那么进程之间就可以通过通信进行数据的传输。
    $ M9 D1 M( B+ ^( ?  L
7 Z7 i- E5 G4 k( X# f
  • 2、发送事件:比如当前进程需要终止另外一个进程,子进程的释放通知父进程。
    % u* T% L7 u  c5 k4 h$ Q
; U" I) t% q& l* y
  • 3、资源共享:对于进程之间的共享资源需要进行互斥和同步机制。
    - @% Q: [, Q/ |( L! A0 p  Q7 w0 W

. o  K2 |3 l1 j+ d! t; L
  • 4、进程控制:比如调试进程可以等待被调试进程的调试事件和继续调试进程的运行,读写被调试进程的存储空间等等。
    * r/ A) H1 ^$ S- h  w
0 f, p8 K# N- g" g0 g7 t
02
进程通信特点
1 A+ a: ^& [' \* b
    在文章开头,小哥一直以为是以类似于文本文件的方式共享,不过通过文件、数据库等等的方式交换信息,都需要通过读写磁盘来交换信息,这样导致效率非常低下,而进程通信相对需要比较迅速、实时。
5 ^2 E8 H0 n" O8 A' R$ L# E
   然而进程之间是相互独立的,其用户空间不能随意访问,不过每个进程可以通过操作系统作为媒介来进行交互,这样就不需要通过那些缓慢的媒介,以加快通信。

- x* ~: W8 Z- m% @  l  Q
2通信种类与特点浅析
    对于Linux进程间通信大致可以分为如下6种通信方式:
/ E4 V8 q) _2 m! f0 y
01
管道pipe  
4 T: p9 v: ^) E4 H3 H
   管道可以分为 有名管道 和 无名管道
$ m* m  t- L% W9 K% m7 w
  • 无名管道只能用于父子进程之间,单向通信的工作方式,半双工。

    ( C4 _0 a  E9 O8 K9 B% q
' J) Q& _  a7 U. R/ u
  • 有名管道则无亲属关系的进程之间,提供给任意关系的进程使用。
    / n# K/ Q% |1 Z4 u, R2 [
& D! T# y0 @. u! W; r
02
信号signal   
- i$ Z7 z' F3 X8 [) \& X
    机制比较复杂,比如用于通知接收进程某个事件已经发生.

' j0 A$ C+ X2 V- N! y6 w
03
消息队列  
- G7 }9 Y& x* d( W
    消息队列,存放在内核中,一种异步通信的典型。
9 `. B" E$ H6 N% `4 y. j
04
共享内存Shared Memory

: n, @( {1 F& g4 k8 \
    该方式是直接读写内存,不需要额外的格式操作等,算是进程通信中最快的方式。
    其类似于共享资源多进程操作,需要同步,比较常用的就是与信号量结合使用。
! a/ n) ?% G/ F9 k. w3 f% E0 a
05
信号量semaphore  

% K" A1 D. h: B, Y$ J+ ~
    信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据,跟RTOS中线程中的信号量是类似的,最简单的01信号量,还有计数信号量等等。
/ _* w4 ~* E2 u. N9 z3 C' g9 ~3 @
06
套接字socket   
/ ^3 ^4 ~4 p7 l7 p# [1 z  V
    socket进程通信算是操作系统均有的一种IPC方式,所以是非常常见的。
, j: G. a/ f4 H2 A+ \) W. M
3最后
; N1 I) o. P  F6 `

, a! Z% @: y# k( ^: K9 p
    这里小哥就介绍了进程通信的基础知识,希望能够对你有帮助,今天就分享到这里,后面小哥在学习总结详细的进程通信知识!

. D2 X/ J- v' q9 q7 B( i; N# o% S
赞 收藏 评论0 发布时间:2020-12-5 23:22

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版