zoukankan      html  css  js  c++  java
  • Android系统的启动流程


      手机启动后首先会通过执行BootLoader来启动Linux内核,BootLoader是所有嵌入式设备开机启动执行的第一行代码,linux内核在启动过程中会加载各种设备的驱动同时初始化数据结构,并且开启第一个用户级的init进程,init.c执行main方法创建一些类的系统文件夹,解析一个init.rc的配置文件,执行一系列的linux命令 这其中就包含了启动zygote进程的命令。zygote进程是所有Android进程的父进程,一些比较重要的系统进程也是由zygote进程fork出来的。启动zygote进程首先在c/c++环境中启动java虚拟机,然后通过jni调用zygoteInit.java开启java环境 zygote进程启动的过程中会创建一个socket服务端用来接收启动新应用的消息,一旦接收到消息就会fork出一个进程给新的应用,这样的话新的进程也就有了一个jvm,同时也会预加载一些资源,包括Android系统api的字节码文件以及系统自带的图片和颜色,这样创建出来的新进程就跟zygote进程有相同的资源,同时启动systemService进程开启死循环等待fork的消息。SystemServer是zygotefork出来的第一个java进程,systemServer在启动过程中会加载各种服务并且通过ServiceManager进行管理,在所有的service创建完毕之后判断当前的activity任务栈中是否有activity的实例,如果没有就启动桌面。










     
  • 相关阅读:
    Python 重要的字符串处理函数
    Python 字符串类型及相关操作
    Windows 7下Git SSH 创建Key的步骤(by 星空武哥)
    Python 列表类型及相关操作
    Python 字典类型及相关操作
    袁老师Py西游攻关之基础数据类型
    PyCharm2017安装教程,包含注册码
    python安装及语法1
    Ubuntu linux安装ssh server
    soap消息机制 讲解
  • 原文地址:https://www.cnblogs.com/yegong0214/p/6473791.html
Copyright © 2011-2022 走看看