记录一下Android系统开机过程(看别人博客写的)

预备知识 :


1 :RAM 


随机存取存储器(random access memory,RAM)又称作“随机存储器”,


是与CPU直接交换数据的内部存储器,也叫主存(内存)。


它可以随时读写,而且速度很快,通常作为操作系统  或  其他正在运行中的程序的临时数据存储媒介


2 :ROM 

(只读内存(Read-Only Memory)简称


3 :区别


1和2的区别 :

当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入


一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存




4: Zygote作用?


执行Android的应用程序,即apk。



5 :那么,在Linux中创建并运行一个进程,与在Android中通过Zygote来创建并运行一个进程,有何不同?



6 : 内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、



设备驱动程序、文件和网络系统,决定着系统的性能和稳定性


-------------------------------------------------------------------------------------------------
https://blog.csdn.net/h655370/article/details/77727554  总讲,


https://blog.csdn.net/hovan/article/details/10023565  分支,


Android的启动过程可以分为<两个阶段>,,


第一阶段是 第二阶段才是


<Linux的启动>     <Android的启动>



阶段 一 :     1 : Boot Rom  引导硬盘


2 :BootLoader  引导加载程序


3 : Kernel 内核



阶段 二 :    4 :   init  


启动 app_process  通过,JNI_createJavaJvm()


Dalvik VM  再调用方法ZygoteInit.main()


Zygote进程创建完毕


详解 :


Step 1. Boot Rom 


当按开机键的时候,引导芯片开始从固化在ROM的预设代码开始执行,然后加载引导程序到RAM。



Step 2. Bootloader 


BootLoader,又称为引导程序。它是在操作系统运行之前运行的一段程序,是运行的第一个程序。主要有检查RAM,初始化硬件参数等功能,当然它的最终目的是把操作系统给拉起来。



简单的说,Bootloader负责初始化软件运行所需要的最小硬件环境,最后加载内核到内存。



Step 3. 初始化Kernel 



入口的函数是start_kernel函数-----start_kernel 函数完成了内核的大部分初始化工作


start_kernel函数执行到最后调用了reset_init函数进行后续的初始化 ---- reset_init函数最主要的任务就是启动内核线程kernel_init


kernel_init函数将完成设备驱动程序的初始化 ------ 并调用init_post函数启动用户空间的init进程 


到init_post函数为止,内核的初始化已经基本完成。



(开始内核,重置初始化,内核初始化,初始化post  ------ 内核初始化完成。)



Step 4. init进程    (fork 分叉)



当初始化内核之后,就会启动一个相当重要的祖先进程,也就是init进程。


init进程负责创建系统中最关键的几个核心daemon(守护)进程


init进程负责创建 --- 尤其是zygote和servicemanager 


zygote    : android启动的第一个dalvik 虚拟机 ,它将负责启动Java世界的进程


servicemanager  : 是BInder通信的基础

Step 5. Zygote进程 


zygote虚拟机启动子进程  system_server


Step 6. SystemServer进程 


这个进程在整个的Android中非常重要,它和Zygote进程一样,是Android Framework层的两大重要进程


例如AMS(ActivityManagerService), WindowsManager, PackageManagerService等等都是由这个SystemServer fork出来的


Step 7. Home Activity


上面ActivityManagerService 开启之后,会调用finishBooting() ,完成引导过程,同时发送 《   开机广播。  》


之后就会启动Home程序,完成系统界面的加载与显示。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值