前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android系统启动过程

Android系统启动过程

作者头像
用户3112896
发布2019-09-26 16:42:38
9020
发布2019-09-26 16:42:38
举报
文章被收录于专栏:安卓圈安卓圈安卓圈

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

  当电源按下时引导芯片代码聪预定义的地方(固化在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进程

  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,并且启动各种系统服务

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

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

  3)启动各种系统服务

七。Launcher启动

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

知识点:

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进阶解密》

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安卓圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档