IPC 进程间通信技术
一、IPC 的定义
1、什么是 IPC
IPC(Inner-Process Communication)即进程间通信技术(跨进程通信技术),用来实现两个进程之间的数据交换,在 Chrome 运行的各个过程中,不同进程会依赖 IPC 来实现通信。
一个进程可以要求操作系统启动另一个进程来运行不同的任务。发生这种情况时,将为新进程分配新的内存空间。如果两个进程间需要通信,他们会利用 IPC 来进行通信。许多应用程序都使用了这种设计方式。如果工作进程无响应,则可以重新启动它,而无需停止正在运行应用程序不同部分的其他进程。
IPC 也是用于 Node 内部父子进程之间进行通信的方法。
Node 的 IPC 是通过不同平台的管道技术实现的,特点是本地网络通信,速度快,效率高。
Node 在启动子进程的时候,主进程先建立 IPC 通道,然后将 IPC 通道的 fd(文件描述符)通过环境变量(NODE_CHANNEL_FD)的方式传递给子进程,然后子进程通过 fd 与 父进程建立 IPC 连接。
二、IPC 的方法
1、管道 Pipe
Pipe 广泛用于两个相关过程之间的通信。这是一种半双工方法,因此第一个进程与第二个进程进行通信。但为了实现全双工,需要另一个管道。
2、讯息传递
它是进程进行通信和同步的机制。使用消息传递,该过程无需使用共享变量即可彼此通信。
IPC 机制提供两种操作:
- 发送(消息)-消息大小固定或可变
- 收到(消息)
3、消息队列
消息队列是内核中存储的消息的链接列表。它由消息队列标识符标识。此方法提供具有全双工能力的单个或多个进程之间的通信。
4、直接沟通
在这种类型的进程间通信过程中,应明确命名。在该方法中,在一对通信过程之间建立链接,并且在每对之间仅存在一个链接。
5、间接沟通
仅当进程共享一个公共邮箱时,间接通信才建立,每对进程共享几个通信链接。链接可以与许多进程通信。链接可以是双向的也可以是单向的。
6、共享内存
共享内存是两个或多个进程之间共享的内存,这些内存是使用所有进程之间的共享内存建立的。这种类型的内存需要通过同步所有进程之间的访问来相互保护。
7、先进先出
两个不相关进程之间的通信。这是一种全双工方法,这意味着第一个进程可以与第二个进程进行通信,相反的情况也可能发生。