【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:消息队列、共享内存、信号量、互斥量、条件变量、读写锁。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 11:10:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 11:10:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 11:10:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 11:10:01       55 阅读

热门阅读

  1. c++第三课:类和对象

    2024-07-21 11:10:01       14 阅读
  2. 一种Android系统双屏异显的两路音频实现方法

    2024-07-21 11:10:01       12 阅读
  3. windows核心编程:第3章内核对象防止多开

    2024-07-21 11:10:01       17 阅读
  4. 关于限定视频码率的问题

    2024-07-21 11:10:01       14 阅读
  5. 如何进行结构化编程:结合代码的实践指南

    2024-07-21 11:10:01       17 阅读
  6. LeetCode 150, 112, 130

    2024-07-21 11:10:01       17 阅读
  7. 《李彦宏在世界人工智能大会发言的深度洞察》

    2024-07-21 11:10:01       11 阅读