IPC 和 RPC 的区别和联系





IPC 进程间通信

IPC (Inter-Process Communication) 进程间通信,提供了各种进程间通信的方法。在 Linux C 编程中有几种方法

  • (1) 半双工 Unix 管道
  • (2) FIFOs (命名管道)
  • (3) 消息队列
  • (4) 信号量
  • (5) 共享内存
  • (6) 网络 Socket


进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。

这些进程可以运行在同一计算机上或网络连接的不同计算机上。 

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


RPC 远程过程调用

RPC 是远程调用,远程调用需要借助于进程间通信。

远程调用的概念相对于本地调用。

本地调用时程序会被装载到内存中,然后通过内存寻址进行调用。




有两种类型的进程间通信 (IPC)


  • 本地过程调用 (LPC) LPC 用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。
    • 管道
    • 系统消息队列
    • 共享内存区
    • 进程间同步信号量
  • 远程过程调用 (RPC, remote procedure call) RPC 类似于 LPC,只是在网上工作。RPC 开始是出现在 Sun 微系统公司和 HP 公司的运行 UNIX 操作系统的计算机中。
    • socket TCP UDP
    • activemq,rabbitmq,zeromq,kafka 等消息通讯方式
    •  restfull 接口 HTTP ,HTTPS


通过 IPC 和 RPC,程序能利用其它程序或计算机处理的进程。客户机/服务器模式计算把远程过 程调用与其它技术如消息传递一道,作为系统间通信的一种机制。客户机执行自己的任务,但靠服务器提供后端文件服务。RPC 为客户机提供向后端服务器申请服务的通信机制。如果你把客户机/服务器应用程序想作是一个分离的程序,服务器能运行数据访问部分,因为它离数据最近,客户机能运行数据表示和与用户交互的前端部分。这样,远程过程调用可看作是把分割的程序通过网络重组的部件。LPC 有时也称耦合 (Coupling) 机制。


用这种方式分割程序,当用户要访问数据时就无需每次拷贝整个数据库或它的大部分程序到用户系统。其实,服务器只处理请求,甚至只执行一些数据计算,把得出的结果再发送给用户。因为当数据存放在一个地方时,数据库同步很容易实现,所以多个用户可同时访问相同的数据。




reference

https://blog.csdn.net/discoveryunknown/article/details/52438483