Inter-process communication
翻译自[]{https://en.wikipedia.org/wiki/Inter-process_communication}
在计算机科学中,IPC准确提到操作系统提供进程去使用共享数据的机制。根据IPC可以将应用分类为client,server。客户端请求数据,服务端回复客户端的请求。许多应用同时是客户端也是服务端,例如常见的分布式系统。根据软件的需求使用IPC的方法也分为好几类。例如性能和模块需求,系统集成,网络带宽和延时。
Approaches
method | desc | provided by(os/other env) |
---|---|---|
File | 存储在磁盘的记录或者是序列化到文件服务器,其可以被多个进程进行访问 | 大部分 os |
Signal(Asynchronous system Trap) | 从一个进程发送到另一个进程的系统消息,不是经常用来传递数据,而是用来远程命令合作进程? | 大部分 os |
Socket | 一个通过网络接口的数据流,要么在相同机器的不同进程,要么在网络的另外一个机器。socket典型的是基于字节流,很少保存信息边界。通过socket写的数据需要格式化来保存数据边界 | 大部分 os |
Message queue | 类似于socket,但是其经常保持消息边界。典型的通过os来实现,其允许多个进程不需要直接互相连接去读写消息队列 | 大部分 os |
pipe | 单向数据通道。数据写到管道写端,直到他被从管道读到为止。利用标准的input、output可以实现两种过程的数据流 | 所有的posix系统,Windows |
Named pipe | 用文件系统的文件实现而不是使用标准的输入输出。多进程可以将文件读成buffer来处理IPC 数据 | 所有POSIX系统,Windows,amigaOS |
Semaphore | 在共享资源时同步多进程的一个简单的结构 | 所有POSIX系统,windows,AmigaOS |
shared memory | 授权给多进程,使得他们有权利访问内存相同block的数据,这使得进程能互相通信 | 所有POSIX,Windows |
message passing | 允许多程序使用消息队列和(或者)非系统管理的通道(channels),通常是使用并发模型来进行通信 | 使用RPC,RMI,MPI,CORBAK,DDS… |
Memory-mapped file | 文件匹配到RAM可以通过改变内存地址来修改而不是输出一个流的形式。这个共享的方式和标准文件一样 | 所有POSIX系统,Windows |