binder实现机制

本文介绍了Android中的Binder机制,包括为何需要进程隔离、如何实现进程通信,重点解析了Binder的使用原因、通信模型以及如何实现跨进程通信。Binder以其高效的性能(仅需一次数据拷贝)和安全性(支持身份校验),成为Android系统中重要的进程间通信方式。文章还讨论了Binder驱动、ServiceManager的角色以及Binder的代理模式实现。

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

为什么要进程隔离?

我们知道每个进程在运行的时候,都会需要一定的计算机内存空间,但是如果我们将每个程序都装进计算机的内存,那么就会导致计算机的利用率相当的低,而且不用进程在进入和退出内存的过程中,会造成效率非常的低。还有就是当不同的进程直接载入内存的时候,可能会出现A进程的地址内容被B进程修改,从而造成程序错误。

 

怎么样实现进程隔离?

为了实现进程的隔离,在实际中,我们使用了虚拟地址空间,它为每个进程分配4G的虚拟地址空间,其中1G为内核空间,其他的为用户空间如下图所示。内核空间的安全权限更高,不允许随便访问,只有许可的资源才能被访问。这样每个进程独享4G的虚拟地址空间,它们之间的数据时不共享的,那么,如果它们之间需要通信,就需要某种系统机制来完成。

 

如何访问内核空间?

上面我们提到内核空间是不允许随便访问的,但是我们的总会有需要去访问内核的资源啊!这个时候,我们就会利用我们经常听说的一个动词:系统调用。通过这个统一的接口,所有资源的访问都在内核的控制下执行,以免导致用户程序对系统资源的越权访问,从而来保证系统的安全性和稳定性。

 

进程之间通信方式?

通过系统调用,可以实现用户空间对内核空间的访问,那么两个进程之间的通信如何实现?Android的底层是基于Linux实现的,目前Linux支持的跨进程通信(IPC)包括传统的管道、System V IPC(消息队列/共享内存/信号量)、socket,其中so

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值