Android的启动过程

1、BootLoad:电源键按下,引导芯片代码从预定义的地方(ROM)开始执行,加载引导程序到RAM中执行,主要初始化硬件设备和建立内存空间映射图,目的是为操作系统内核准备好环境;

2、Kernel:Android内核开始启动,主要设置缓存和加载驱动等,当内核系统设置完毕,会在系统文件中寻找“init”文件,启动root进程(第一个进程);

3、Init进程:由内核自行启动的一个用户级进程,启动过程就是init.c中main函数的执行过程,包括文件夹建立、挂载、rc文件解析、启动服务、属性设置等,其中.rc文件是Android初始化的脚本文件;

4、Zygote进程:系统启动过程中,由init进程创建,它是Native应用程序,与驱动内核无关,由它来fork出所有的应用程序进程和系统服务进程,作用是作为一个虚拟机进程,预加载和初始化核心库类,让Dalvik虚拟机共享代码、降低内存占用和启动时间;

-------Zygote进程包括两个模块:Socket服务端(用于接受启动新的Dalvik虚拟机命令)和Framewo共享类和共享资源;

-------Zygote启动分为两个阶段:虚拟机启动(通过Native启动---启动虚拟机、初始化、注册JNI函数、构造java运行时环境)和SystemService进程(通过java启动---注册socket监听、加载系统资源和常用类、启动系统服务进程、进入循环监听模式、进程退出时关闭socket监听);

5、启动系统服务;

6、引导完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,985评论 25 708
  • 1:InputChannel提供函数创建底层的Pipe对象 2: 1)客户端需要新建窗口 2)new ViewRo...
    自由人是工程师阅读 5,368评论 0 18
  • 从开机到桌面的过程为:Bootloader ➪Kernel ➪Init进程 ➪ Zygote ➪ SystemSe...
    小庄bb阅读 325评论 0 0
  • 晨起,拉开窗帘,春日晴方好。爸爸不由点头,“唔,出太阳了,天气不错,你们今天可以下楼了呢!” 丫头闻言,双手支着小...
    小雎阅读 218评论 1 1
  • 浪淘沙 刘禹锡 莫道谗言如浪深, 莫言迁客似沙沉。 千淘万漉虽辛苦, 吹尽狂沙始到金。
    喜亭_bf8f阅读 212评论 2 4