【Linux 14】进程间通信概念

🌈 一、进程间通信的目的

  1. 数据传输:一个进程需要将它的数据发送给另一个进程
  2. 资源共享:多个进程之间共享同样的资源。
  3. 通知事件:一个进程需要向另一个或一组进程发送消息,通知它或它们发生了某种事件 (如进程终止时要通知父进程)。
  4. 进程控制:有些进程希望完全控制另一个进程的执行 (如 Debug 进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。
  • 总而言之,进程间通信的目的是为了达成多进程之间的协同。根据不同的控制场景,需要不同的协同方式,而所有的协同方式的前提进程之间要能够建立通信

🌈 二、进程间通信的理解

1. 进程之间不能直接进行通信

  • 由于进程具有独立性,A 进程的数据不能直接交给 B 进程。
    • 如果 A 进程想要直接数据交给 B 进程,是 A 进程去访问 B 进程的一段内存区域将数据拷进去呢?还是 B 进程去直接读取 A 进程的内存区域将数据拷出来呢?
  • 因此进程之间如果想要直接进行通信是行不通的,这直接违背了进程具有独立性的特点。

2. 如何实现进程间通信

  • 由于进程 A 和进程 B 不能直接进行通信,那么就需要借助媒介来进行交流。
    • 如:相隔两地的人不能直接交流,此时就可以通过书信实现两个人之间的通信,书信就是媒介。人 A 将想要发送的数据写在书信上,人 B 就从书信上读取数据。
  • 进程之间的通信也是同理,多个进程通过往媒介读写数据实现进程间的通信。

在这里插入图片描述

3. 进程间通信的本质

  • 不管如何实现进程间通信,本质就是让不同的进程看到同一份资源 (即同一个媒介)。
  • 这个资源通常是由 OS 提供的,不能由 A / B 进程的任何一个提供, 但 A / B 进程可以去向 OS 申请。

🌈 三、进程间通信的分类

  1. 管道:匿名管道、命名管道。
  2. System V IPC:System V 消息队列、System V 共享内存、System V 信号量。
  3. POSIX IPC:消息队列、共享内存、信号量、互斥量、条件变量、读写锁。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值