system_server进程分析




一、system_server的创建 1

1.1forkSystemServer()函数 2

1.2nativeForkSystemServer() JNI层实现 3

1.3forkAndSpecializeCommon( ) 4

1.4SetSigChldHandler() 4

1.5SigChldHandler 5

二、handleSystemServerProcess()方法 6

2.1zygoteInit()函数 7

总结 8  

system_server进程

 

system_server属于ApplicationFramework层(框架层)。system_server进程开启时,就会初始化AMS,同时,会加载本地系统的服务库,创建系统上下文Context,创建ActivityThread及开启各种服务等等。而在这之后,就会开启系统的Launcher程序,完成系统界面的加载与显示。

注意,Android中所有系统服务都是由system_server进程启动,如果该进程异常退出,就是整个Java世界的末日。

system_server的启动入口函数是startSystemServer(),它位于ZygoteInit.java中。下面开始依次分析system_server进程:

一、system_server的创建

Path:./frameworks/base/core/java/com/android/internal/os/ZygoteInit.java

入口函数源码如下:

 /**

     * Prepare the arguments and fork for the system server process.

     */

    private static boolean startSystemServer(String abiList, String socketName, ZygoteServer zygoteServer)

            throws Zygote.MethodAndArgsCaller, RuntimeException {

            .........

            /* Request to fork the system server process */

            pid = Zygote.forkSystemServer(   //调用fork函数创建子进程system_serve

                    parsedArgs.uid, parsedArgs.gid,

                    parsedArgs.gids,

                    parsedArgs.debugFlags,

                    null,

                    parsedArgs.permittedCapabilities,

                    parsedArgs.effectiveCapabilities);

        } catch (IllegalArgumentException ex) {....... }

        /* For child process */

        if (pid == 0) {   //pid如果为0,说明在子进程system_serve

    

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值