• 【Linux通信】Linux中IPC(跨进程通信)、RPC(远程过程调用)、LPC(本地过程调用)的区别


    IPC:(Inter Process Communication )跨进程通信

    IPC是指进程间数据交互的过程。Android底层是基于Linux,而Linux基于安全考虑,是不允许两个进程间直接操作对方的数据,这就是进程隔离。

    在Linux系统中,虚拟内存机制为每个进程分配了线性连续的内存空间,操作系统将这种虚拟内存空间映射到物理内存空间,每个进程有自己的虚拟内存空间,进而不能操作其他进程的内存空间,每个进程只能操作自己的虚拟内存空间,只有操作系统才有权限操作物理内存空间.进程隔离保证了每个进程的内存安全,但是在大多数情形下,不同进程间的数据通讯是不可避免的,因此操作系统必须提供跨进程通信机制。

    IPC不仅包括各种形式的消息传递,还可以指共享资源,以及同步对象[mutex 或者其他类似的东西,即确保安全的并发访问共享资源(也就是防止两个或两个以上的对象同事对同一个数据成员进行修改,从而导致数据被破坏,或者竞争条件下同事读/写数据而导致错误的情况发生)]的东西。

    LPC(Local Procedure Call) 本地进程调用

    LPC是本地过程调用与RPC远程过程调用相对而言。

    LPC的基础是一种称为“端口(Port)”的进程间通信机制,类似于本地的(Unix域的)Socket。这种Port机制提供了面向报文传递(message passing)的进程间通信,而LPC则是建立在这个基础上的高层机制,目的是提供跨进程的过程调用。

    注意这里所谓“跨进程的过程调用”不同于以前所说的“跨进程操作”。前者是双方有约定、遵循一定规程的、有控制的服务提供,被调用者在向外提供一些什么服务、即提供哪些函数调用方面是自主的,而后者则可以是在不知不觉之间的被利用、被操纵。前者是良性的,而后者可以是恶性的。

    RPC:(Reomote Procedure Call) 远程过程调用

    RPC是广义的,RPC可以发生在不同的主机之间,也可以发生在同一台主机上,发生在同一台主机上就是LPC。
    通过网络从远程计算机程序上请求服务,在不需要了解底层网络技术的协议下,即可获取计算机进程中的数据。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

    RPC在OSI网络通信7层模型中,位于传输层与应用层之间,即位于会话层。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

    客户端能向服务端发送若干个进程请求,服务端根据发送的进程参数依次返回对应的计算结果。RPC可以说客户端调用服务端的接口的过程,是面向接口的编程。

  • 相关阅读:
    油猴脚本(JavaScript)-练手-简单的随机音乐播放器
    springboot web 05 springboot通过@ConfigurationProperties注解springboot获取自定义配置
    如何有效提升你的论证写作能力?
    Java常见的两种加密方式
    springboot集成swagger3+解决页面无法访问问题
    数据结构:链表(2),链表面试题
    K8s搭建(单节点)
    模拟BIO实战--实现一个线程对应一个客户端
    腾讯一面:Mybatis中 Dao接口和XML文件的SQL如何建立关联?
    【数组及指针经典笔试题解析】
  • 原文地址:https://blog.csdn.net/weixin_43529465/article/details/126134062