跨系统,进程如何与其他进程通信?

跨系统,进程如何与其他进程通信?

我了解了以下IPC机制,

  • BSD 风格半双工管道

  • SYSV 风格的消息队列

  • SYSV 风格信号量集

  • SYSV 风格共享内存段

  • BSD 风格的套接字



半双工管道可用作1-1进程通信,单向。任何连接的进程都必须共享相关的祖先。pipe()允许进程之间的通信,在一个系统内


消息队列(链表)可以用作1-1进程通信,任意两个进程之间双向(long mtype在一个系统内。对于每个msgsnd()进程在队列(链表)中创建一个项目,对应msgrcv()于另一个进程读取/删除队列项目。

在此输入图像描述


共享内存可以用作多对多进程通信,双向,在一个系统内。在内部,它是内存区域(段)的映射,将由多个进程映射和共享。

在此输入图像描述


BSD套接字(/// socket())可以用于许多(bind()listen()accept()客户)-一(服务器) 双向通信跨不同操作系统的系统,在客户端-服务器模式下。


问题:

1)

在类似OS的系统中,多对多进程通信的IPC机制(Linux提供的)是怎样的?非客户端-服务器模式?

2)

跨不同OS的系统,多对多进程通信的IPC机制(Linux提供的)是怎样的?非客户端-服务器模式?

答案1

根据您的定义,我将使用共享文件系统中包括命名管道的文件。 9p 协议就是专门为此而设计的,其中程序将导出虚拟文件系统并对事件做出反应。

不知道为什么您将命名管道从原始列表中删除。

相关内容