本页使用了标题或全文手工转换

行程間通訊

维基百科,自由的百科全书
跳转至: 导航搜索
行程間通訊
電腦科學譯名
英文: Inter-Process Communication
港译:
陆译: 进程间通信
台译: 行程間通訊

进程间通信IPCInter-Process Communication),指至少两个进程线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位(严格说来是线程)。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。举一个典型的例子,使用进程间通信的两个应用可以被分类为客户端和服务器(见主从式架构),客户端进程请求数据,服务端回复客户端的数据请求。有一些应用本身既是服务器又是客户端,这在分布式计算中,时常可以见到。这些进程可以运行在同一计算机上或网络连接的不同计算机上。

进程间通信技术包括消息传递、同步、共享内存和远程过程调用。IPC是一种标准的Unix通信机制。

使用IPC 的理由:

  • 資訊共享:Web服务器,通过网页浏览器使用进程间通信来共享web文件(网页等)和多媒体;
  • 加速:维基百科使用通过进程间通信进行交流的多服务器来满足用户的请求;
  • 模組化;
  • 私有權分離.

与直接共享内存地址空间的多线程编程相比,IPC的缺点:[1]

  • 采用了某种形式的内核开销,降低了性能;
  • 几乎大部分IPC都不是程序设计的自然扩展,往往戏剧性增加了程序复杂度。

主要的 IPC 方法[编辑]

方法 提供方(操作系统或其他环境)
檔案 多數作業系統
信号 多數作業系統
Berkeley套接字 多數作業系統
消息队列 多數作業系統
管道 所有的 POSIX 系統, Windows.
命名管道英语Named Pipe 所有的 POSIX 系统, Windows.
信号量 所有的 POSIX 系统, Windows.
共享内存 所有的 POSIX 系统, Windows.
Message passing
(不共享)
用於 MPI规范,Java RMI, CORBA, MSMQ, MailSlot 以及其他.
Memory-mapped file英语Memory-mapped file 所有的 POSIX 系统, Windows.

實作[编辑]

下列方式只适用于特定操作系统平台或特定的编程语言:

其他[编辑]

有人认为这些也可以算是进程间通信的方式:

参考文献[编辑]

  1. ^ POSIX threads explained by Daniel Robbins