IPC(Inter-Process Communication, 进程间通信)

    之前在面试的时候经常问道Android的进程间通信方式有几种,当时在百度上搜索的答案不尽相同。后来在看源码分析的时候才发现了答案。现在记下来。

   Android是是使用了Linux内核,Linux现有管道、消息队列、共享内存、套接字、信号量、信号这些IPC机制,Android 同时额外采用了Binder IPC机制(至于为什么采用BInder机制,可以看看为什么 Android 要采用 Binder 作为 IPC 机制?)。

    1. 管道:在创建时分配一个page大小的内存,缓存区大小比较有限;

    2. 消息队列:信息复制两次,额外的CPU消耗;不合适频繁或信息量大的通信;

    3. 共享内存:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;但进程间的同步问题操作系统无法实现,必 须 各进程利用同步工具解决;
    4. 套接字:作为更通用的接口,传输效率低,主要用于不通机器或跨网络的通信;
    5. 信号量:常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
    6. 信号: 不适用于信息交换,更适用于进程中断控制,比如非法内存访问,杀死某个进程等;




猜你喜欢

转载自blog.csdn.net/u011164827/article/details/80136160
今日推荐