Context Manager介绍

Context Manager对应的进程是servicemanager进程,它先于Service Server和服务客户端运行,进入接收IPC数据的待机状态,处理来自Service Server的注册请求和服务客户端的查询请求。查看ini.rc脚本可以发现,Context Manager进程先于umediaserver和system_server进程运行。如下图所示:

关于服务进程更详细的介绍,见我之前的几篇文章

Android的启动过程分析(从进程和Framework的角度

Android系统服务详解

Android Binder IPC详解

每当service server注册服务时候,Context Manager都会把服务的名称和Binder节点编号注册到自身的目录中,该服务目录可以通过跟文件系统下面的/system/service程序查看。

service程序以IPC应答数据的形式接收Context Manager服务目录中的服务名称,并将收到的服务输入到画面中。具体操作是打开adb shell,输入service list,结果如下图:

Context Manager的运行

Context Manager的源码在/framework/base/cmds/servicemanager目录下的serveice_mamager.c文件中。它的main函数大致可以分为三个部分:binder_open(用来打开Binder Driver,并且创建IPC数据的接收buffer),binder_become_context_manager(注册特殊节点,既是0号binder节点),binder_loop(用来不断的接收IPC数据)

核心代码如下:

3部分的核心代码如下:

parse()函数展开 ,代码如下:

parse()又调用了svcmgr_handle()函数() ,展开如下:

1.服务客户端在检索服务时候,执行这段代码,服务客户端首先通过RPC数据传递服务名称,从do_find_service()函数自身的服务列表获取服务编号,而后bio_put_ref()函数生成binder_ object()结构体,该结构体将被包含到IPC数据的RPC数据中。而后调用binder_send_reply()函数,讲IPC应答数据传递到Binder Driver。

当service server注册服务时候使用这段代码。Context Manager调用do_add_service()函数将IPC数据的RPC数据包含的服务名称与Binder节点编号注册到自身的服务中目录中。而后调用binder_send_reply()函数,讲IPC应答数据传递到Binder Driver。

总结:Binder是由Service Server(android服务),Service Client(使用服务的客户)。Conetxt Manager(服务管理者),以及Binder Driver死大部分构成。

Android的Context Manager(服务管理器)源码剖析-android学习之旅(99)的更多相关文章

  1. DICOM医学图形处理:storescp.exe与storescu.exe源码剖析,学习C-STORE请求(续)

    转载:http://blog.csdn.net/zssureqh/article/details/39237649 背景: 上一篇博文中,在对storescp工具源文件storescp.cc和DcmS ...

  2. DICOM医学图像处理:storescp.exe与storescu.exe源码剖析,学习C-STORE请求

    转载:http://blog.csdn.net/zssureqh/article/details/39213817 背景: 上一篇专栏博文中针对PACS终端(或设备终端,如CT设备)与RIS系统之间w ...

  3. 《STL源码剖析》学习之traits编程

    侯捷老师在<STL源码剖析>中说到:了解traits编程技术,就像获得“芝麻开门”的口诀一样,从此得以一窥STL源码的奥秘.如此一说,其重要性就不言而喻了.      之前已经介绍过迭代器 ...

  4. Android so 文件进阶<二> 从dlsym()源码看android 动态链接过程

    0x00  前言 这篇文章其实是我之前学习elf文件关于符号表的学习笔记,网上也有很多关于符号表的文章,怎么说呢,感觉像是在翻译elf文件格式的文档一样,千篇一律,因此把自己的学习笔记分享出来.dls ...

  5. C++动态内存管理与源码剖析

    引言 在本篇文章中,我们主要剖析c++中的动态内存管理,包括malloc.new expression.operator new.array new和allocator内存分配方法以及对应的内存释放方 ...

  6. Python - Context Manager 上下文管理器

    什么是上下文管理器 官方解释... 上下文管理器是一个对象 它定义了在执行 with 语句时要建立的运行时上下文 上下文管理器处理进入和退出所需的运行时上下文以执行代码块 上下文管理器通常使用 wit ...

  7. stl源码剖析 详细学习笔记 空间配置器

    //---------------------------15/04/05---------------------------- /* 空间配置器概述: 1:new操作包含两个阶段操作 1>调 ...

  8. stl源码剖析 详细学习笔记 配接器

    //---------------------------15/04/03---------------------------- /* 配接器概述: 1:adapter是一种设计模式:将一个clas ...

  9. stl源码剖析 详细学习笔记 仿函数

    //---------------------------15/04/01---------------------------- //仿函数是为了算法而诞生的,可以作为算法的一个参数,来自定义各种操 ...

随机推荐

  1. javascript之正则表达式

    创建正则表达式的两种方法 显式: new RegExp("pattern"[,"flags"]); 例 var regex = new ("abc&q ...

  2. 根据iOS 10 的新特性,创建iMessage App,可用于自定义表情

    第一. 介绍(原文作者 澳大利亚19岁少年--Davis Allie ----原文地址) 随着iOS10的发布,苹果对开发者开放了Messages应用程序,开发人员现在可以创建他们自己的各种类型 并且 ...

  3. Cocos2D iOS之旅:如何写一个敲地鼠游戏(一):高清屏显示和UIKit

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  4. [python]标准库json格式化工具

    这段时间做的事情比较杂乱,一部分时间在做运维,一部分时间在做开发,总是太着急,总是感觉很多东西做的不是很满意.还是要静下心来好好想一想,多花些时间来改进,重构和思考. 软件开发绝不紧紧是写代码,完成功 ...

  5. J2EE进阶(八)Hibernate与延迟加载机制探究

    Hibernate与延迟加载机制探究 前言 Hibernate对象关系映射提供延迟的与非延迟的对象初始化.非延迟加载在读取一个对象的时候会将与这个对象所有相关的其他对象一起读取出来.这有时会导致成百的 ...

  6. Android 文件操作心得体会

    android 的文件操作说白了就是Java的文件操作的处理.所以如果对Java的io文件操作比较熟悉的话,android的文件操作就是小菜一碟了.好了,话不多说,开始今天的正题吧. 先从一个小项目入 ...

  7. JSP实现界面的自动跳转的几种方式

    下面来谈一谈在jsp中实现的几种界面自动跳转的方法. 使用JavaScript脚本 <html> <script language=javascript> function o ...

  8. python字典(dictionary)使用:基本函数code实例,字典的合并、排序、copy,函数中*args 和**kwargs做形参和实参

    python字典dictionary几个不常用函数例子 一.字典声明 如,d={}; d= {'x':1,'b':2} d1 = dict(x=1,y=2,z=3)     d2 = dict(a=3 ...

  9. 代理服务器 详解 Apache与Nginx的比较与分析

    正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容 ...

  10. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...