IPC 中 LPC、RPC 的区别和联系
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。
进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。
为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。
这些进程可以运行在同一计算机上或网络连接的不同计算机上。
进程间通信技术包括消息传递、同步、共享内存和远程过程调用。 IPC是一种标准的Unix通信机制。
有两种类型的进程间通信(IPC)。
本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。
远程过程调用(RPC)RPC类似于LPC,只是在网上工作。RPC开始是出现在Sun微系统公司和HP公司的运行UNIX操作系统的计算机中。
通过IPC和RPC,程序能利用其它程序或计算机处理的进程。客户机/服务器模式计算把远程过 程调用与其它技术如消息传递一道,作为系统间通信的一种机制。客户机执行自己的任务,但靠服务器提供后端文件服务。RPC为客户机提供向后端服务器申请服 务的通信机制,如图R-4所示。如果你把客户机/服务器应用程序想作是一个分离的程序,服务器能运行数据访问部分,因为它离数据最近,客户机能运行数据表 示和与用户交互的前端部分。这样,远程过程调用可看作是把分割的程序通过网络重组的部件。LPC有时也称耦合(Coupling)机制。
用这种方式分割程序,当用户要访问数据时就无需每次拷贝整个数据库或它的大部分程序到用户系统。其实,服务器只处理请求,甚至只执行一些数据计算,把得出的结果再发送给用户。因为当数据存放在一个地方时,数据库同步很容易实现,所以多个用户可同时访问相同的数据。
---------------------------------------------- 我 是 分 隔 线 ------------------------------------------------------
进程间通信(IPC):是在多任务操作系统或联网的计算机之间运行的程序和进程所用的通信技术。
有两种类型的进程间通信(IPC)。
1 本地过程调用(LPC):
LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。
2 远程过程调用(RPC):
RPC类似于LPC,只是在网上工作RPC开始是出现在Sun微系统公司和HP公司的运行UNIX操作系统的计算机中。
分布式计算环境是由一个通信系统——网络连接的计算机集群。很容易把这个网络看成一个计算平台,若是对等方式,其中任何一台计算机都能成为客户机或服务器。一些处理任务可被分成独立运行程序在不同的网络计算机上并行处理,而独立的程序被交给最适合这个任务的计算机处理。这种策略可利用计算机空闲资源,提高网络的效益。一个典型的企业网包括许多运行着不同操作系统的异构计算机系统。
远程过程调用中间件技术
随着企业网的产生,开发商必须编制可在各种计算机和网络通信协议中都能运行的程序。现在人们正努力使得远程过程调用独立,这意味着开发商就不用考虑底层的网络和网络上数据传输所用的协议,下面介绍RPC在开放式软件基金(OSF)的分布式计算环境(DCC)中实现的相关方法。
RPC工作于多种分布式计算环境。
Open Software Foundation(OSF)RPC 开放软件基金会(OSF)的RPC
RPC工具提供了一种编程语言和编译器,它们使用可看作是本地过程的可运行于客户机和服务器上的模块开发分布式应用程序。运行时设施(run-timefacility)使得分布式应用程序能在多机种异构系统上运行,这样使得底层体系结构和运输协议对于应用程序是透明的。
程序员用接口定义语言(IDL)建立接口定义(interface definition)。IDL是程序员用来设计远程运行的过程的工具。IDL编译器把IDL接口定义转换成与客户机和服务器相连的占位程序(stub)。客户机上的占位程序可加入到服务器的过程,而服务器上的占位程序也可加入到客户机过程。位于客户机服务器的RPC运行时设施与占位程序合作,来提供RPC操作。
异构环境中使用RPC的一个问题在于,不同的机器有不同的数据表示,OSFRPC通过具有调用机器的基本数据表示的特征调用来解决这个问题。当收到调用时,若根据特征知道两台机器数据表示不同的话,接收器就进行数据转换。
RPC运行时设施提供把客户机请求传送给服务器和在网上发送和接收响应的功能。DCERPC运行时设施也和网络上其它DCE服务相互作用,这些DCE服务有命名、安全和定时服务。
运行时设施有下列特征:
1 可在多种网络上运行。开发者无需为每个网络编写特定的应用程序。
2 提供客户机或服务器或网络上的故障恢复。它支持文件系统、数据库和其它传输可变长数据的服务。
3 提供独立于任何一个目录服务的基于名字定位服务器的方法。
4 提供安全工具的接口,以防RPC通信遭受破坏。安全服务保证机密信息的保密性和提供鉴别来保护通信完备性。
5 支持网上并发或并行处理的多线程调度,于是一个应用程序就能同时执行多个操作
6 提供多供应商提供的系统环境的可移植性和相互操作性。
相关条目:
Application Program Interface应用程序编程接口;
Connectionless and Connection-Oriented Transaction无连接和面向连接事务;
Distributed Computing Environment,OSF OSF的分布式计算环境(DCE);
Enterprise Networks企业网;
Interprocess Communication进程间通信;
Middleware中间件。
IPC 中 LPC、RPC 的区别和联系相关推荐
- 进程间通信 IPC、LPC、RPC
原文请见:进程间通信IPC.LPC.RPC 进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法.进程是计算机系统分配资源 ...
- 一文告诉你 Java RMI 和 RPC 的区别
转载自 一文告诉你 Java RMI 和 RPC 的区别 RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用 ...
- HTTP和RPC的区别?
目录 OSI 的七层网络结构模型 RPC服务 RPC架构 同步调用与异步调用 流行的 RPC 框架 HTTP 服务 gRPC简介 重温RPC相关概念 gRPC是什么? gRPC组成 gRPC的特性 g ...
- IPC中的AIDL机制(二)
在了解了AIDL的流程及基本原理之后,我们还需要对AIDL有进一步的了解. 在上一篇的例子的基础之上,我们考虑另一种情况: 假设有一种需求:用户不想时不时地去查询图书列表了,太累了,于是,他去问图书馆 ...
- mybatis与php,浅谈mybatis中的#和$的区别
浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...
- 关于EF中ApplyCurrentValues和ApplyOriginalValues区别
关于EF中ApplyCurrentValues和ApplyOriginalValues区别:两者都是编辑数据时使用. // // 摘要: // 将 System ...
- java mod %区别_Java中 % 与Math.floorMod() 区别详解
%为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...
- JAVA 中equals()与==的区别
原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...
- python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...
1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...
最新文章
- 网站突然不收录?如何做到自审、自查、自纠?
- 【Linux】35. python脚本重命名各子目录下的图片
- 云炬WEB开发笔记2-7 代理神器CharlesFiddler
- Atitit 数据存储的分组聚合 groupby的实现attilax总结
- 云图说丨手把手教你为容器应用配置弹性伸缩策略
- 值得一看的50条从商之道
- linux log变色
- 中文文档保存到mysql_mysql 中文 存储
- U盘刻录系统之后变小
- 【Adobe美术基础】字体安装
- 邹博机器学习算法最新版 --- 献给想要入门、或者想要进阶的朋友
- 博客页面添加动态小人,二次元人物 hexo live2d html人物公仔
- 巧用CUDA中的pinned memory
- 基于Android的家庭医生app
- 计算机是如何跑起来的--读书笔记
- Ubuntu 20.04安装RTL8812BU网卡驱动教程
- EA绘制类图时,怎样将类由ICON形式(圆形)转为Label形式(方形)
- mac里python注释的快捷键_Mac 版的Python IDEL, 按什么快捷键可以快速显示上一条命令,下一条命令?...
- 微信公众号开发-初学者-SAE新浪云申请及自定义菜单
- 骑马与砍杀2 自制一个简单MOD
热门文章
- Qt下OpenCv中cvGetWindowHandle的使用
- REVERSE-PRACTICE-BUUCTF-17
- 【HDU - 1852】 Beijing 2008()
- 服务器不显示u盘,服务器不读u盘启动
- 实现运动轨迹_【自动驾驶】运动规划丨速度规划丨时间维度
- tortoisesvn创建部署项目_FrameWork如何进行云托管部署
- Tomcat 6.0配置连建池的方式:
- Linux 内存管理 | 物理内存、内存碎片、伙伴系统、SLAB分配器
- C++std命名空间和头文件详解
- Unity的 UNet组件介绍