操作系统中的进程间通信 (IPC)

什么是进程间通信?
进程间通信 (IPC) 用于在一个或多个进程或程序中的多个线程之间交换数据。这些进程可以运行在单台计算机上,也可以运行在通过网络连接的多台计算机上。IPC 的全称是进程间通信(inter-process communication)。
它是一组编程接口,允许程序员协调操作系统中可以并发运行的各种程序进程之间的活动。这使得单个程序能够同时处理多个用户请求。
由于每个用户请求都可能导致操作系统中运行多个进程,这些进程可能需要相互通信。每种进程间通信(IPC)方法都有其自身的优势和局限性,因此单个程序使用多种IPC方法并不罕见。
进程间通信的方法
以下是一些重要的进程间通信方法:
进程间通信方法
管道
管道广泛用于两个相关进程之间的通信。这是一种半双工方式,因此第一个进程与第二个进程通信。然而,要实现全双工通信,则需要另一条管道。
讯息传递
它是一种用于进程间通信和同步的机制。通过消息传递,进程之间无需共享变量即可相互通信。
IPC机制提供两种操作:
- 发送(消息)——消息大小可以是固定的,也可以是可变的。
- 接收(消息)
消息队列
消息队列是存储在 核心。它由消息队列标识符标识。此方法提供具有全双工能力的单个或多个进程之间的通信。
直接沟通
在这种进程间通信方式中,进程必须显式地相互命名。这种方法会在一对通信进程之间建立链接,并且每对进程之间只存在一个链接。
间接沟通
只有当进程共享同一个邮箱时,才能建立间接通信。每对进程可以共享多个通信链路,而单个链路可以与多个进程通信。链路可以是双向的,也可以是单向的。
共享内存
共享内存是指两个或多个进程共享的内存区域。必须通过同步使用该内存的进程来防止并发访问。
FIFO
先进先出(FIFO)用于两个不相关进程之间的通信。它是一种全双工方法,这意味着第一个进程可以与第二个进程通信,反之亦然。
为什么选择 IPC?
以下是使用进程间通信协议进行信息共享的原因:
- 它有助于加快模块化进程。
- 计算速度提升。
- 特权分离。
- 方便。
- 它有助于进程和操作系统进行通信并同步其操作。
IPC 中使用的术语
以下是IPC中使用的几个重要术语:
Semaphores: 信号量是一种信号机制。这种操作系统方法根据其设置方式,允许或禁止访问某个资源。
Signals: 信号是一种通过信令在多个进程间进行通信的方法。源进程发送一个信号,该信号由一个数字识别,目标进程处理该信号。
阅读建议: 什么是 Semaphore? 二进制、计数类型示例
FIFOS 类似什么,FIFOS 又不同于什么
下表比较了同向先进先出法 (FIFO) 和非同向先进先出法 (FIFO):
| 类似FIFOS | 与 FIFOS 不同 |
|---|---|
| 它遵循先进先出(FIFO)原则。 | 它采用一种方法,在特定的紧急消息到达前台之前将其提取出来。 |
| 先进先出 (FIFO) 独立于发送过程和接收过程。 | 始终处于就绪状态,无需打开或关闭。 |
| 允许在不相关的进程之间传输数据。 | 打开和关闭之间没有任何同步问题。 |

