Android系统启动过程分析

1、启动流程概述

Android系统启动过程分析_第1张图片
1、BootLoader
BootLoader主要是在系统加载前,初始化硬件设备,建立内存空间的映像图,为最终调用系统内核做好环境。
在 Android 中主要划分为一下几个分区:
/boot:存放引导程序,包括内核和内存操作程序
/system:相当于电脑c盘,存放Android系统及系统应用
/recovery:恢复分区,可以进入该分区进行系统恢复
/data:用户数据区,包含了用户的数据:联系人、短信、设置、用户安装的程序
/cache:安卓系统缓存区,保存系统最常访问的数据和应用程序
/misc:包含一些杂项内容,如系统设置和系统功能启用禁用设置
/sdcard:用户自己的存储区,可以存放照片,音乐,视频等文件
2、idle进程
Kernel中的idle进程是0号进程,由内核中启动,并始终执行在内核态,由内核态的idle进程开启init进程。
3、init进程
Android系统启动过程分析_第2张图片
init是Linux系统中用户空间的第一个进程(pid=1)。
init进程的主要功能点:

  • 分析和运行所有的init.rc文件;
  • 生成设备驱动节点; (通过rc文件创建)
  • 处理子进程的终止(signal方式);
  • 提供属性服务property service
    4、zygote进程
    它是Android中的一个非常重要的守护进程服务(Daem Service),所有的其他Dalvik虚拟机进程都是通过zygote孵化(fork)出来的。Android应用程序是由Java语言编写的,运行在各自独立的Dalvik虚拟机中。如果每个应用程序在启动之时都需要单独运行和初始化一个虚拟机,会大大降低系统性能,因此Android首先创建一个zygote虚拟机,然后通过它孵化出其他的虚拟机进程,进而共享虚拟机内存和框架层资源,这样大幅度提高应用程序的启动和运行速度。
    Zygote是Android中最重要的一个进程,和Init进程,SystemServer进程是支撑Android世界的三极。Zygote进程在Init进程中以service的方式启动的。
    5、SystemServer
    system_server进程是android java虚拟机跑的第一个进程,从Zygote 创建而来,是andorid系统最重要的java虚拟机。可以说,整个android系统的业务都是围绕system server而展开,所以,当system_server死掉了,手机必须重启。
    6、Launcher
    参考资料:
    Android系统启动-综述

你可能感兴趣的:(Android之路,源码分析)