IPC(进程间通信),Remote Call(远程调用),IDL(接口描述语言)架构及其在BMP(BREW移动平台),Android中的应用浅析

本文介绍了IPC(进程间通信)的概念及其在多进程环境中的必要性,阐述了Remote Call的基本思想及应用,并重点讨论了IDL(接口描述语言)在规范异构系统间通信中的作用。通过分析BMP(BREW移动平台)和Android中的具体应用,揭示了这两种平台如何使用Stub和Skeleton实现远程调用,以及如何借助IDL工具生成相关代码以实现透明的远程对象访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于本人才初识BMP和Android,所以仅仅是自己的一些肤浅认识,难免有错误,欢迎指正。

 

首先我们看IPC,现代操作系统都是多进程,多线程的。进程间存在地址边界,无法直接跨越。所以,两个进程间无法进行直接的请求,传递和调用。IPC是操作系统内核提供的一种跨进程的机制,允许两个进程间使用IPC来传递数据。 虽然某些情况下我们可以将Service直接加载到自己的进程中调用服务,此时可以进行简单的本地调用(Local Call),但是,从安全,性能和共享的角度出发,更多的情况下,Service都是运行在自己独立的进程中,此时Client使用其服务时,就必须跨越进程,那么就涉及到了IPC。 所以,在现代操作系统或者移动平台上,IPC是无处不在的。

 

 

IPC是操作系统层面提供的一种很底层的机制。你可以把它看做基础设施,传输媒介甚至底层协议。它只负责进程间传递数据,究竟数据是什么含义,发送,接收方如何处理这些数据等等都不是它的处理范围。 而这些,恰恰是上层需要为特定场景制定特殊的解决方案,框架,制定一致的规约,协议, 就像TCP/IP一致化了底层传输机制,但是面对不同应用场景的数据传输,必须由不同的应用层协议来协调C/S,以便能理解对应的语义,从而正常收发。 在非本地(同一进程内称之为本地)的复杂数据传递,调用中,尤其需要制定这样一套规则,来一致的解决问题。比如,远程对象调用。 Remote Call就是为此而生, 虽然初期其只应用在真正的两台主机间的远程调用,但目前,其思想已经应用在了任何非本地的服务调用中,比如,同一机器的两个不同进程间,同一机器的两个CPU间,两个机器的两个进程间。这是由于,其一致的解决框架可以屏蔽底层媒介(Inter Process, Inter Processor, Inter Machine)的差异性。 目前最典型的远程对象调用机制主要有 序列化对象(比如RMI) 和  基于远程代理的对象请求(如CORBA)

 

序列化对象方式

这种方式主要能够完成简单的单次对象远程传递。 将待传递的对象内存空间进行序列化,然后将序列化数据经过底层传输机制

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值