binder
一系列binder解析文章,从应用层逐步深入到内核层
soso密斯密斯
https://github.com/hughcoder
展开
-
这一次,binder真正理解了(五) ----- Binder中Service的查询(获取)
Service的查询(获取)概述在上篇中,我们了解binder数据的写入,以及Client和Service进程的一次进程间通信。在前文中一直反复强调ServiceManager的功能是注册服务,和让client获取服务。到这篇文章中,大家应该对binder有了明显的认识了吧。在 binder 架构中,Service要先向ServiceManager上报自身的名字(全限定名),ServiceManager 存储着Service的名字,客户端并不知道服务的位置,所以需要跟名字服务器(ServiceMana原创 2020-09-03 17:37:22 · 678 阅读 · 1 评论 -
这一次,binder真正理解了(四) -----服务的注册(addService)
Service注册概述我们在上篇文章中,我们了解到如何获取一个ServiceManager对象,这篇我们主要将ServiceManager如何注册服务。大家先看个图,有一个整体的进程交互流程,方便后续源码的理解首先Client进程和Service进程各自向Binder Driver调用 open(),mmap()初始化 ,此流程同样适用某Service与ServiceManager进程通信,例如 MediaPlayerService(Client进程)和ServiceManager(进程)一共可原创 2020-08-29 18:08:10 · 821 阅读 · 0 评论 -
这一次,binder真正理解了(一) -----跨进程通信以及AIDL的使用
前言网上有很多有关于binder文章的讲述,读了很多文章,有些直接讲源码,对初学的来说比较抽象,这系列文章先从使用背景,从运用上逐步深入去介绍知识点,希望能有一个更好的理解。这系列文章先从ipc通信讲起,通过AIDL的使用去探binder原理,这一次和我一起理清binder吧,有哪里讲的不好的点,欢迎指正补充,希望这一系列能让大家在以后的面试中能稳稳的回答出binder的相关问题。概述在日常的app开发当中,大家有没有跨进程的使用呢。还是一个进程走到底呢 。 在android里,一个应用启动对应着原创 2020-08-16 10:41:08 · 618 阅读 · 0 评论 -
这一次,binder真正理解了(三) -----获取ServiceManager
获取ServiceManager注: Binder系列文章 framework 源码使用 android10 release 分支,kernel 部分使用 common 的 android-4.9-q-release 分支。 framework/native/libs/binder/ - ProcessState.cpp - BpBinder.cpp - Binder.cpp - IServiceManager.cppframework/native/include/binder/原创 2020-08-26 15:40:48 · 448 阅读 · 0 评论 -
这一次,binder真正理解了(二) -----ServiceManager启动
ServiceManager 启动注: Binder系列文章 framework 源码使用 android10 release 分支,kernel 部分使用 common 的 android-4.9-q-release 分支。framework/native/cmds/servicemanager/ - service_manager.c - binder.c kernel/drivers/ (不同Linux分支路径略有不同) - android/binder.c binder原理原创 2020-08-25 15:40:11 · 673 阅读 · 0 评论