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

什么是进程间通信?

进程间通信(IPC)用于在一个或多个进程或程序中的多个线程之间交换数据。进程可能运行在连接网络的单个或多个计算机上。IPC的全称是Inter-process communication。

它是一组编程接口,允许程序员协调操作系统中可以并发运行的各种程序进程之间的活动。这使得特定程序能够同时处理多个用户请求。

由于每个用户请求都可能导致操作系统中运行多个进程,因此进程可能需要相互通信。每种IPC协议方法都有其自身的优点和局限性,因此单个程序使用所有IPC方法的情况并不少见。

进程间通信的方法

这里列出了几种重要的进程间通信方法

Approaches for Inter-Process Communication
进程间通信方法

管道(Pipes)

管道广泛用于两个相关进程之间的通信。这是一种半双工方法,因此第一个进程与第二个进程通信。但是,为了实现全双工,需要另一个管道。

消息传递(Message Passing)

这是进程通信和同步的机制。通过消息传递,进程可以在不依赖共享变量的情况下进行通信。

IPC机制提供两种操作

  • 发送(消息)- 消息大小固定或可变
  • 接收(消息)

消息队列(Message Queues)

消息队列是存储在内核中的消息的链表。它由消息队列标识符标识。此方法提供单进程或多进程之间的通信,并具有全双工容量。

直接通信(Direct Communication)

在这种进程间通信类型中,进程应明确命名彼此。在此方法中,在通信进程对之间建立链接,并且每对进程之间只有一个链接。

间接通信(Indirect Communication)

间接通信的建立仅当进程共享一个公共邮箱时才发生,每对进程共享多个通信链接。链接可以与多个进程通信。链接可以是双向的或单向的。

共享内存(Shared Memory)

共享内存是两个或多个进程之间共享的内存,这些进程通过所有进程之间的共享内存建立。这种类型的内存需要通过所有进程的同步访问来保护,以防止它们互相干扰。

FIFO

两个不相关进程之间的通信。这是一种全双工方法,意味着第一个进程可以与第二个进程通信,反之亦然。

为什么需要IPC?

以下是使用进程间通信协议进行信息共享的原因

  • 有助于加快模块化速度
  • 计算
  • 权限分离
  • 便利性
  • 帮助操作系统相互通信并同步其操作。

IPC中使用的术语

以下是一些在IPC中使用的重要术语

信号量(Semaphores):信号量是一种信号机制技术。这种OS方法允许或禁止访问资源,具体取决于其设置方式。

信号(Signals):这是一种通过信号在多个进程之间进行通信的方法。源进程会发送一个信号,该信号通过编号识别,目标进程会处理它。

阅读建议: 什么是信号量?二元信号量、计数信号量类型及示例

什么是类似FIFOS和非类似FIFOS

类似FIFO 非类似FIFO
它遵循FIFO方法 在消息到达队列前端之前,先将特定紧急消息拉出的方法
FIFO独立于发送和接收进程而存在。 始终可用,无需打开或关闭。
允许不相关进程之间的数据传输。 打开和关闭之间没有同步问题。

摘要

  • 定义:进程间通信用于在一个或多个进程或程序中的多个线程之间交换数据。
  • 管道广泛用于两个相关进程之间的通信。
  • 消息传递是进程通信和同步的机制。
  • 消息队列是存储在内核中的消息的链表
  • 直接进程是一种进程间通信过程,应明确命名彼此。
  • 间接通信的建立仅当进程共享一个公共邮箱时才发生,每对进程共享多个通信链接。
  • 共享内存是两个或多个进程之间共享的内存,这些进程通过所有进程之间的共享内存建立。
  • 进程间通信方法有助于加快模块化速度。
  • 信号量是一种信号机制技术。
  • 信号是进程间通过信号进行通信的一种方法。
  • 类似FIFO遵循FIFO方法,而非类似FIFO使用方法在消息到达队列前端之前,先将特定紧急消息拉出。