Android启动

来源:互联网 发布:js防水背水面 编辑:程序博客网 时间:2024/05/10 03:03

    android严格意义上不是一个操作系统。因为它本身也是依赖linux操作系统的。它的核心是一个java虚拟机,也就是我们常提到的Dalvik。我们暂且把android叫做OS吧。一个典型的OS需要提供内存管理,IO管理,磁盘管理,进程调度管理等,在android OS里可能会有些区别,首先它是个移动操作系统,需要提供很多额外的东西,比如电话模块,蓝牙,传感器,电池管理,WiFi等,另外在android OS里屏蔽了进程的概念,程序之间的切换用Activity来互相转换,让开发者不必关注进程,至于进程间的IPC,其实是在C++层做的。

    android系统从下层到上层依次包含了3层,分别是linux内核层,JVM层,应用框架层(Framework)。然后最上面就是各种具体应用了,比如日历,时钟等。下图就是google给出的经典的android概念架构图。


    我们来看看一个android系统是怎么启动的吧。首先是内核启动init进程,内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。它启动之后就会根据init.rc脚本来运行几个基本的service。包括了service manager service,zygote这个两个非常重要的服务,以及media service,ril_deamon service等其他deamon服务。这之后init的使命完成,但该进程并没有销毁,而是转化成了Property Service继续运行。这个zygote服务非常重要,它负责fork各种其他进程,包括fork了Dalvik虚拟机和system server。最后各种服务都被建立,然后home launcher也建立了。


image

原创粉丝点击