Android系统启动

–摘自《Android进阶解密》

《Android系统启动》

一。启动电源以及系统启动

  当电源按下时引导芯片代码聪预定义的地方(固化在ROM)开始执行。加载引导程序到BootLoader到RAM,然后执行

二。引导程序BootLoader

  引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行

三。Linux内核启动

  当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找init.rc文件,并启动init进程

四。init进程启动

  初始化和启动属性服务,并且启动Zygote进程

  1)创建和挂载启动所需的文件目录

  2)初始化和启动属性服务

  3)解析init.rc配置文件并启动Zygote进程

五。Zygote进程

  创建Java虚拟机并为Java虚拟机注册JNI方法,创建服务器端Socket,启动SystemServer进程

《Android系统启动》

  1)创建AppRuntime并调用其start方法,启动Zygote进程

  2)创建Java虚拟机并为Java虚拟机注册JNI方法

  3)通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层

    3.1)创建一个Server端的Socket

    3.2)预加载类和资源

    3.3)启动SystemServer资源

    3.4)等待AMS请求创建新的应用程序进程

  4)通过registerZygoteSocket方法创建服务器端Socket,并通过sunSelectLoop方法等待AMS的请求来创建新的应用程序进程

  5)启动SystemServer进程

六。SystemServer进程启动

  启动Binder线程池和SystemServiceManager,并且启动各种系统服务

《Android系统启动》

  1)启动Binder线程池,这样就可以与其他进程进行通信

  2)创建SystemServiceManager,其用于对系统的服务进行创建、启动和生命周期管理

  3)启动各种系统服务

七。Launcher启动

  被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上

 《Android系统启动》

知识点:

1.与JVM相比,Dalvik虚拟机(DVM)是专门为移动设备定制的,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行。独立的进程可以防止在虚拟机崩溃的时候所有的程序都被关闭

2.DVM中的应用每次运行时,字节码都需要通过即时编译器JIT转换为机器码,这会是的应用的运行效率降低。而在ART中,系统在安装应用时会进行一次预编译(AOT),将字节码预先编译成机器码并存储在本地,这样应用每次运行时就不需要执行编译了,运行效率也大大提高

3.将控制硬件的动作放在硬件抽象层中,硬件抽象层的代码在hardware/目录中,这是手机厂商改动最大的部分,根据手机终端所采用的硬件平台不同会有不同的实现

4.init进程是Android系统中用户空间的第一个进程,进程号为1

5.子进程有时虽然已经退出了,但是在系统进程表中还为它保留了一定的信息(比如进程号、退出状态、运行时间等),这个子进程就被称作僵尸进程

6.在Android8.0中对init.rc文件进行了拆分,每个服务对应一个rc文件,Zygote启动脚本在init.zygote64.rc中定义

7.Windows平台有个注册表管理器,注册表的内容采用键值对的形式来记录用户、软件的一些使用信息。即使系统或者软件重启,其还是能够根据之前注册表中的记录,进行相应的初始化工作。Android也提供了一个类似的机制,叫做属性服务

8.DVM和ART、应用程序进程以及运行系统的关键服务的SystemServer进程都是由Zygote进程来创建的,我们也称它为孵化器

9.SystemServer进程主要用于创建系统服务,我们熟知的AMS、WMS和PMS都是由它来创建的

10.官方把系统服务分为三种类型,分别是引导服务、核心服务和其他服务

11.系统的运行模式分三种,分别是非工厂模式、低级工厂模式和高级工厂模式

12.通俗讲Launcher就是系统的桌面,它的作用主要有以下两点

  1)作为Android系统的启动器,用于启动应用程序

  2)作为Android系统的桌面,用于显示和管理应用程序的快捷图标或者其他桌面组件

欢迎关注我的微信公众号:安卓圈

《Android系统启动》

    原文作者:嘉禾世兴
    原文地址: https://www.cnblogs.com/anni-qianqian/p/10161123.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞