android启动过程分析

来源:互联网 发布:中国钢协网络竞赛成绩 编辑:程序博客网 时间:2024/05/16 05:43

        

      1   Android是基于Linux内核的系统平台。启动时,首先通过bootloader(系统加载器)载linux内核在linux内核加载启动时,与普通的Linux启动过程相似,然后调用用户空间中的init进。init进程对各种设备进行初始化,运行Android Framework所需的各种Daemon、Content Manager、Media Server 、Zygote等。

      2   init进程启动Linux守护进程Daemon,具体如下:

                  --USB Daemon(usbd):管理usb连接

                  -- Android Debug Bridge Daemon(adbd):管理ADB连接。

                 -- Debugger  Daemon:管理调试进程的请求。

                 --Radioi Interface Layer Daemon(rild):管理无线通信

           在启动Linux守护进程的同时还需要启动Zygote进程,主要包括以下工作:

                --初始化一个Dalvik虚拟机实例

                --装载socket请求所需的类和监听

                --创建虚拟机实例来管理应用程序的进程。

           接着,需要初始化runtime进程,主要包括如下工作:

                --初始化服务管理器

                --注册服务管理器,以它作为默认Binder服务的Context管理器。

          runtime初始化之后,runtime进程将发送一个请求到zygote,开始启动系统服务,这时zygote将为系统服务进程建立一个虚拟机实例,并启动系统服务。

          系统服务具体由媒体服务器(Media Server)与系统服务器(System Server)俩个系统进

程运行。

          媒体服务器进程用来启动除Surface Flinger之外的Audio Flinger、Media Player Service等本地系统服务。

          系统服务器是由Zygote最初生成的基于java进程,它会启动所有Java系统服务,还包括本地系统服务Surface Flinger,如下图所示:

  

          

3 当所有Java系统服务加载完毕后,Activity Manger Service 会运行Home应用,启动过程继续进行。

  

原创粉丝点击