首页 > 其他分享 >Android系统启动流程

Android系统启动流程

时间:2024-05-15 22:40:45浏览次数:22  
标签:系统启动 启动 流程 system Zygote init 进程 Android 加载

在Android中系统的启动流程是一个经常会被问到的问题,那么下面我们通过一张图来说明一下

 从上面的图片中可以看到它的一个启动流程.

1.BootLoader

  首先,当我们点击电源开关后,引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序到RAM,然后执行,
这时执行的就是BootLoader,它会去初始化硬件 映射内存等,完成上面操作后就好加载并启动内核(kerner)

2.kernel

  kernel启动后,会去初始化各种软硬件环境,加载驱动程序,挂载根文件系统……,完成上面工作后回去寻找init文件,并执行这个文件来启动init进程

其实就是system\core\init\init.c文件的main方法

3.init进程

  init进程是系统第一个进程,进程ID为1,它主要有两个作用,

  1.挂载目录,比如/sys、/dev、/proc等,

  2.解析并运行init.rc配置文件,根据配置文件启动各种系统服务,Zygote,ServiceManager, surfaceFlinger,MediaServer等

  init.rc中的Zygote配置如下: (system/core/rootdir/init.rc)

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server

4.Zygote进程

  Zygote进程主要包含两大模块,

    socket服务端:用于接收启动新的Dalvik进程命令

    共享资源和类:共享类是在preload-classes文件中定义的,共享资源是在preload-resources文件中定义。Zygote装载好了这些类和资源后,新的Dalvik进程就不需要在装载这些类和资源

  Zygote启动分为两个阶段,

    启动虚拟机:

    启动system_Server服务: 加载共享资源,注册Zygote socket监听,启动system_server进程,进入循环监听模式,最好退出Zygote监听

启动系统服务

  在system_server进程中会启动一些其它的系统服务,包括电源管理,Activity管理,AWS PWS 等等.

启动laucher

 

标签:系统启动,启动,流程,system,Zygote,init,进程,Android,加载
From: https://www.cnblogs.com/codermuyi/p/18194863

相关文章

  • Android WebView 加载 html页面 实现 不同分辨率 不同 dpi 缩放自适应处理 解决方案
    两种情况一起使用实现不同分辨率不同dpi缩放自适应处理//webview需要配置mWebView.getWebSetting().setUseWideViewPort(true);//让webview读取网页设置的viewport,pc版网页1、同分辨率不同dpi缩放自适应处理(也可以在android端注入相关js代码)<scripttype="text/......
  • MapReduce流程
    MapReduce流程将文件上传到HDFS中,默认每128M切分为一个block块,MapReduce会对数据进行逻辑上的切片(split),并不是实际上的切分,默认与block块的大小一致为128M,根据split切分产生map任务,切片越多产生的map任务就越多,map默认每次读取一行数据,map阶段产生的数据会进入环形缓冲区中(基于......
  • HDFS写数据微观流程
    HDFS微观流程每个block块都被划分成多个大小为64k的paccket每个paccket中都有两个部分组成,一个是packetHeader,一个是packetDatapacketHeader存储一些变量值:pktlen:(packet总长度)、offsetInBlock:(记录当前packet在blocck中的位置)、seqNo:(在同一个block块中的唯一编号(序列号))la......
  • HDFS写数据宏观流程
    HDFS写数据宏观流程客户端使用rpc通信框架向NameNode发送请求,NameNode接收并处理用户请求,同时检测用户是否拥有上传文件操作的权限。磁盘空间是否可用,路径是否存在,NameNode会针对这个文件创建一个空的Entry对象,并返回成功的状态给DFS,如果DFS接收到成功的状态,会创建FSDataOutPut......
  • Python基础篇(流程控制)
    流程控制是程序运行的基础,流程控制决定了程序按照什么样的方式执行。条件语句条件语句一般用来判断给定的条件是否成立,根据结果来执行不同的代码,也就是说,有了条件语句,才可以根据不同的情况做不同的事,从而控制程序的流程。ifelseif条件成立,执行if内的命令;否则条件不成立,则......
  • 流程控制语句
    流程控制语句1Scanner控制台输入使用方式:导包:importjava.util.Scanner;创建变量Scanner变量名=newScanner(System.in);使用变量名.nextInt();publicstaticvoidmain(String[]args){//获取用户键盘录入的信息Scannerscanner=n......
  • FM20S用户手册--Linux系统启动卡制作及系统固化
     ......
  • ECU刷写流程之压缩刷写技术解析
    背景  在现代汽车电子技术中,ECU(电子控制单元)的软件升级是一项关键任务。为了提高数据传输的效率和安全性,压缩刷写技术应运而生。通过数据压缩传输,我们可以有效地增加带宽利用率,减少刷写工具与ECU之间的数据传输量,从而显著缩短ECU升级时间。此外,为了加强数据的安全性和保密性,......
  • Linux启动流程
    参考链接:https://www.ruanyifeng.com/blog/2013/02/booting.htmlhttps://www.ruanyifeng.com/blog/2013/08/linux_boot_process.htmlhttps://www.runoob.com/linux/linux-system-boot.html第一阶段:计算机启动(硬件启动流程)1.BIOS(BasicInputOutputSystem基本输入输出系统)阶......
  • 开源可视化表单服务商:提升自主研发 助力流程化办公!
    当前,做好流程化办公可以为企业实现提质增效的办公效果,助力企业进入数字化转型。作为开源可视化表单服务商,流辰信息坚持研发创新理念,努力提升自主研发能力,专为广大客户朋友提供集产品、框架定制、产品交付为一体的一站式服务方案。想要实现流程化办公,欢迎随时来了解低代码技术平台......