美文网首页
进程间通信方式总结

进程间通信方式总结

作者: 大聪明的博客 | 来源:发表于2022-06-14 22:23 被阅读0次

一、共享内存

一种常用的进程间共享方式,两个线程可以共享访问同一块内存区域,减少了数据的复制操作,因此具有速度上的优势,一般情况下实现共享内存的步骤如下:
1.创建共享区域,进程1首先通过操作系统提供的API从内存上申请一块共享区域,生成的共享区域将与某个特定的key进行绑定;
2.映射共享内存,成功创建了共享区域,我们需要把它映射到进程1的空间中才能进一步操作。
3.访问共享区域,进程1已经创建了共享区域,进程2怎么才能访问到它呢?就是利用第一步中产生的key,通过操作系统API,传入通过一个key即可。然后将这块内存映射到进程2自己的空间中。
4.进程间通信,共享内存的各个进程都实现了内存共享之后,便可以利用该区域进行信息交换。由于内存共享本身没有同步机制,所以参与通信的诸进程需要自己写协商处理;
5.撤销内存映射区,完成了进程间通信后,各个进程都需要撤销之前的映射操作。
6.删除功效内存,最后都必须删除共享区域,以便回收内存。

二、管道

管道,这一次很形象的描述了参与通信的双方的行为,即进程A与进程B.
1.分立管道两边的,进行数据传输通信;
2.管道是单向的,所以一个管道如果既要读也要写的话,就必须建立两根管道。就像水管一样
3.一根水管同时具有读取端和写入端,比如进程A从write end写入数据,那么进程B就可以从read end读取到数据;
4.管道是有容量限制的。即当pipe满时,写操作将阻塞,反之,读操作阻塞。

三、Unix Domain Socket(UDS)

UDS是专门针对单机内的进程通信提出来的,优势也被称为IPC Socket.两个虽然在使用方式上类似,但是实现原理大不相同。Android中使用最多的一种IPC就是Binder,其次就是UDS。功能如下:
1.服务端监听IPC请求,
2.客户端发起IPC请求,
3.双方成功建立起IPC连接,
4.客户端向服务端 发送数据证明IPC通信是有效的,

四、RPC(Remote Procedure Calls)

RPC涉及的通信双方通常运行与两台不同的机器中,一般而言,一个完整的RPC通信需要实现以下几个步骤:
1.客户端进程调用Stub接口;
2.Stub根据操作系统的要求进程打包,并执行相应的系统调用;
3.由内核完成与服务端的交互,她负责将客户端的数据发给服务端的内核;
4.服务端Stub解包并调用与数据包匹配的进程;
5.进程执行操作;
6.服务器以上述步骤的逆向过程将结果返回给客户端;

5、Binder机制

其实Binder机制模型就是RPC,也就是说发送的进程向内核提交一个完整的ipc操作,该操作在接受的进程中被执行,当接收者执行时发送者可能被阻塞,使得结果可以返回,发送这也可以选择不阻塞,从而继续执行,与接收者并行。我们知道Android是基于linux内核的,因而她所依赖的Binder驱动也必须是一个标准的linux驱动,具体而言Binder driver会将自己注册成一个misc device,并向上层提供一个\dev\binder节点,值得一提的是binder节点并不对应具体的硬件设备。Binder驱动运行在内核态,可以提供open()、ioctl()、mmap()等常用的文件操作;

相关文章

  • Android 系统复习面试系列(五)进程间通信

    Android 系统复习面试系列(五)进程间通信 本篇主要总结 Binder 原理,顺带提下其他进程间通信方式 A...

  • 仅限两个App间传递信息方法

    Android 进程间通信有很多方法,比如Android中进程间通信(IPC)方式总结 由于项目需求简单,只是由A...

  • 进程间通信方式总结

    前言 进程间的通信方式,其实我们一直在用它,但是我们都不会去注意它。如果碰到面试官问你知道多少种进程间的通信方式,...

  • 进程间通信方式总结

    一、共享内存 一种常用的进程间共享方式,两个线程可以共享访问同一块内存区域,减少了数据的复制操作,因此具有速度上的...

  • 面试问题,网络相关

    1. 进程间通信方式? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道、命名管道(...

  • 第二十三章 进程间通信介绍(一)

    本章目标: 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对...

  • Android 面试常问知识

    Q1:线程间的通信进程间通信的几种方式进程间通信方式详解Q2:线程安全SharePreferences 是否线程安...

  • 进程间通信方式

    管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字...

  • 进程间通信方式

    概述 进程通信(Interprocess Communication,IPC)是一个进程与另一个进程间共享消息的一...

  • 进程间通信方式

    管道(PIPE):管道是一种半双工的通信方式,数据只能单向流动,一般只能用于父子进程间的通信。 有名管道(name...

网友评论

      本文标题:进程间通信方式总结

      本文链接:https://www.haomeiwen.com/subject/xilwmrtx.html