
binder模块
文章平均质量分 93
Android系统的binder模块简介
qq_773961852
这个作者很懒,什么都没留下…
展开
-
native层的c++如何通过binder获取sm服务(四)
前几篇Binder相关文章讲了驱动的注册和提供的接口,以及ServiceManager的启动运行,很自然接下来我们需要思考客户端进程应该如何获取到sm提供的服务(注册服务和查询服务),本篇从native层c++角度继续分析。我们需要时刻牢记,应用程序跨进程只能依靠某种介质(比如socket是靠网卡、binder是靠驱动、内存共享是靠物理内存),直接软件去架构是无法做到的,在分析ServiceManager时也说了,sm是一个标准的Binder Server,因之,客户端进程想要访问ServiceManag原创 2022-03-09 20:33:05 · 1312 阅读 · 0 评论 -
“DNS服务器”–ServiceManager[Binder Server](三)
上篇文章讲了Binder的驱动,也没有详细的扣源码,一条主线:先在kernel层注册Binder驱动,提供binder_open、binder_mmap、binder_ioctl等接口来操作,根据Binder序言这篇文章中得出来的结论,binder客户端通过驱动先去访问ServiceManager,查询到服务端的地址,客户端再去访问服务端(通过驱动),我们也已经知道ServiceManager是系统中使用binder提供服务通信的大管家(从驱动篇中的命令:BINDER_ SET _ CONTEXT _ MG原创 2022-03-03 19:51:57 · 658 阅读 · 0 评论 -
Binder驱动与协议(二)
“九层之台,始于垒土;千里之行,始于足下”,不论binder机制在Android源码中多庞大繁杂,总归它得从地基开始–Binder驱动,我们知道Android系统是基于Linux的内核的,因而Binder驱动也必须是一个标准的Linux驱动。具体来说,Binder Driver 会将自己注册为一个misc device,并向上层提供一个/dev/binder节点,当然我们需要牢记,Binder并不真实对应硬件设备。一、binder驱动Binder驱动运行于内核态,提供open()、mmap()、ioct原创 2022-03-02 21:27:06 · 3041 阅读 · 0 评论 -
binder序言(一)
一、Linux跨进程有哪些方式在介绍binder之前,先回顾一下Linux跨进程有哪些方式(为什么在Android体系中要问Linux系统,因为Android系统本质上是Linux系统,只是Linux系统上运行了诸多便于上层使用的各种服务进程),我们知道操作系统的各个进程通常运行在不同的内存空间,因此无法直接相互访问,而需要跨进程的通信。:1、共享内存:两个用户态的进程访问同一块内核态的内存,这就叫共享,也是一次复制提高效率的原因。step1、创建内存共享区:比如在Linux系统中,进程1使用sh原创 2022-03-02 19:32:58 · 1888 阅读 · 0 评论