首页 > 科技 > 正文

Android是怎么启动的
2019-08-13 09:38:25   来源:东方头条   

上一节回顾了一下Android的系统架构,这一节,主要来看看Android系统是怎么启动的。

Android系统架构浅析-「Android取经之路」概述:

系统启动流程:

BootRom->BootLoader->Linux Kernel->Init->Zygote->SystemServer->Launcher(UI)

BootLoader层:主要包括Boot Rom和Boot Loader

Kernel层:主要是Android内核层

Native层:主要是包括init进程以及其fork出来的用户空间的守护进程、HAL层、开机动画等

JAVA Framework层:主要是AMS和PMS等Service的初始化

Application层:主要指SystemUI、Launcher的启动

Android架构--图片来源于gityuanAndroid 系统启动流程:

第一步:手机开机后,引导芯片启动,引导芯片开始从固化在ROM里的预设代码执行,加载引导程序到到RAM,bootloader检查RAM,初始化硬件参数等功能;

第二步:硬件等参数初始化完成后,进入到Kernel层,Kernel层主要加载一些硬件设备驱动,初始化进程管理等操作。在Kernel中首先启动swapper进程(pid=0),用于初始化进程管理、内管管理、加载Driver等操作,再启动kthread进程(pid=2),这些linux系统的内核进程,kthread是所有内核进程的鼻祖;

第三步:Kernel层加载完毕后,硬件设备驱动与HAL层进行交互。初始化进程管理等操作会启动INIT进程 ,这些在Native层中;

第四步:init进程(pid=1,init进程是所有进程的鼻祖,第一个启动)启动后,会启动adbd,logd等用户守护进程,并且会启动servicemanager(binder服务管家)等重要服务,同时孵化出zygote进程,这里属于C++ Framework,代码为C++程序;

第五步:zygote进程是由init进程解析init.rc文件后fork生成,它会加载虚拟机,启动System Server(zygote孵化的第一个进程);System Server负责启动和管理整个Java Framework,包含ActivityManager,WindowManager,PackageManager,PowerManager等服务;

第六步:zygote同时会启动相关的APP进程,它启动的第一个APP进程为Launcher(UI),然后启动Email,SMS等进程,所有的APP进程都有zygote fork生成。

下一节我们来一起看看Init进程,这个所有进程的鼻祖是如何启动的。

相关热词搜索:是怎么 启动 Android

上一篇:暑假期间 丰台园博园开启机器人互动表演
下一篇:最后一页

泰安知名律师   电话:18053115917
手机:0531-80961678   微信:18053115917   QQ:709581498   邮箱:709581498@qq.com
网站地图 (XML地图 / 百度地图