Linnux IPC通信和RPC通信实现的方式

一、基础知识

1、IPC 简介

进程间通信(IPC,Inter-Process Communication)是一组编程接口,它允许程序员协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。

2、RPC 简介

远程过程调用(RPC,Remote Procedure Call),广泛用于 Linux 的系统服务(如 NFS、NIS 等)。它的核心是让本地进程能像调用本地函数一样,调用远程主机上的函数,用于跨主机(或不同地址空间)的进程间通信。

二、实现方式

1、IPC 实现方式

  • 管道(PIPE):一对一的单向传输。

    无名管道:是UNIX系统IPC最古老的形式,它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端,只能用于具有亲缘关系的进程之间的通信(如父子进程或兄弟进程之间)。

    命名管道(FIFO):可以在无关的进程之间交换数据,与无名管道不同,FIFO有路径名与之相关联,以一种特殊设备文件形式存在于文件系统中。

  • 信号量(Semaphore):是一个计数器,用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。信号量基于操作系统的PV操作,程序对信号量的操作都是原子操作。

  • 共享内存(Shared Memory):指两个或多个进程共享一个给定的存储区,这是最快的一种IPC方式,因为进程是直接对内存进行存取。由于多个进程可以同时操作共享内存,因此需要进行同步,通常结合信号量使用。

  • 套接字(socket): 同一台主机上,可以通过 套接字文件【ip:port】 来实现双工通信。

  • 消息队列:消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识,消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。消息队列独立于发送与接收进程,进程终止时,消息队列及其内容并不会被删除。

2、RPC 实现方式

  • 过程寻址(Procedure Addressing):远程调用涉及的函数(过程)需要通过特定机制唯一标识,确保客户端能准确定位并调用目标过程。

  • 序列化(Serialization):调用的参数与返回值需在客户端与服务器间传输,因此需要转换为可跨网络传输的格式。

  • 传输(Transport):序列化后的数据通过网络协议发送至服务器,常用协议包括 TCP/IP、HTTP 等。

  • 反序列化(Deserialization):服务器接收数据后执行反序列化,将其还原为可直接处理的对象或数据结构。

三、核心区别

维度 IPC RPC
使用场景 同一主机内的进程间通信 跨主机的进程间通信
核心目标 数据叫唤 远程函数调用透明
依赖 内核机制(管道、共享内存等) 网络协议和序列化/反序列化
相关推荐
Evan芙10 小时前
IPC与RPC通信实现方式
网络·网络协议·rpc
U***746911 小时前
三大框架-Spring
java·spring·rpc
QQ_43766431412 小时前
分布式RPC网络框架
网络·c++·分布式·rpc
凯子坚持 c1 天前
深探 openEuler 云原生基石:iSula 与 Kata Containers 安全容器的极致评测与性能剖析
安全·云原生·rpc
j***51892 天前
Spring总结(上)
java·spring·rpc
渡我白衣2 天前
深入理解算法库的灵魂——彻底掌握 <algorithm> 的范式、迭代器约束、隐藏陷阱与性能真相
数据结构·c++·人工智能·网络协议·mysql·rpc·dubbo
qinyia3 天前
WisdomSSH解决NFS服务因“RPC fragment too large“导致的性能警告
网络·网络协议·rpc
SoleMotive.3 天前
http和rpc的区别
网络协议·http·rpc
咨询QQ180809514 天前
Comsol隧道围岩流固耦合 1主题:岩溶隧道突水渗流和损伤 2内容:mph文件、力学参数文件
rpc
遇到困难睡大觉哈哈5 天前
HarmonyOS IPC/RPC 实战:用 ArkTS 跑通 Proxy–Stub 整条链路
qt·rpc·harmonyos·鸿蒙