【Android源码分析】Android系统关键服务启动简析

本文分析了Android系统的启动过程,包括init进程作为起点,ServiceManager负责服务管理,Zygote进程孵化所有应用和服务,以及SystemServer启动系统服务。init.rc文件在启动过程中起到关键作用,定义了各服务的启动规则。ServiceManager是Binder机制的核心,Zygote预加载核心类库并启动SystemServer,后者则负责启动各类系统服务,最终引导到Launcher界面。
摘要由CSDN通过智能技术生成

一、关于Android系统重要的进程

(1)、init进程:init进程是Linux内核启动完成之后,启动的第一个用户进程,Android系统就是在这个进程的基础上启动起来的,进程pid为1。init进程通过解析init.rc来陆续启动其他关键的系统服务进程---其中最重要的是:ServiceManagerZygoteSystemServer

(2)、ServiceManager:主要负责添加服务,获取服务,查找服务以及当某个服务意外终止时,对该服务的资源进行回收。
(3)、Zygote进程:Zygote是一个孵化器进程,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程fork出来的。在Zygote中进行添加虚拟机参数,并将其启动起来,然后注册JNI函数。在Zygote中进行预加载以及初始化核心类库。最后将SystemServer启动起来。
(4)、SystemServer:启动系统各项服务。

二、init.rc脚本语法规则

service <name> <pathname> [ <argument> ]*   //service的名字,启动路径,以及参数
   <option>      
   <option>
    ...

<name>:
表示此service的名称
<pathname>:
此service所在的路径。因为是可执行文件,所以一定有存储路径。
<argument>:
启动service所带的参数。
<option>:
对此service的约束选项。

三、ServiceManager,Zygote,SystemServer的启动简析

3.1 ServiceManager

       ServiceManager是Binder机制中的“DNS服务器”,负责域名(某Binder服务在ServiceManager注册时提供的名称)IP地址(由底层Binder驱动分配的值)的解析。
       ServiceManager是在servicemanager.rc(Android8.0)里面描述,并由init进程启动。

/*android-8.0.0_r1\frameworks\native\cmds\servicemanager\servicemanager.rc*/
service servicemanager /system/bin/servicemanager
    class core animation
    user system
    group system readproc
    critical
    onrestart restart healthd
    onrestart restart zygote
    onrestart restart audioserver
    onrestart restart media
    onrestart restart surfaceflinger
    onrestart restart inputflinger
    onrestart restart drm
    onrestart restart cameraserver
    writepid /dev/cpuset/system-background/tasks

       可以看到,Servicemanager是一个Linux程序。它在设备中的存储路径是:/system/bin/servicemanager,源码路径则是:
android-8.0.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值