所谓的安卓手机都是基于开源Linux系统上开发出来的,系统基本的设计框架为powerManager->Linux Kernel->HAL(HareWare Abstraction Layer)->Natice C/C++ & ART(android Runtiome)->JAVA API FrameWork->App。可以看出android是基于Linux系统内核工作的,这里不得不提一句,linux和其开源政策推动了人类21世纪的巨大进步,我们的服务器系统、安卓系统、Mac系统,都是基于linux上做的。华为的鸿蒙虽是多内核但也有集成linux,国内嵌入式行业的主力技术也是linux,国内的智能化设备大部分都得感谢linux的开源。
android系统架构
Linux内核kernel都有什么?做了哪些事?linux内核直接管理硬件,包括CPU、内存空间、硬盘接口、网络端口等,系统调用大致可以分为:虚拟文件系统管理、内存管理、进程管理、网络服务。其中文件系统主要包含驱动driver,网络服务主要有TCP/IP驱动程序。
其中安卓主要的内部通信Binder驱动,Socket就分别在文件系统和网络服务里,这是安卓重要的底层通信机制。
Linux内核kernel
接下我们看看安卓的系统启动流程
其中对于android来说,主要看init进程,该进程也是系统的pid = 1进程,第一个进程。
那么该进程做了什么事?主要有
1.创建和挂载启动所需的文件目录
2.初始化和启动属性服务
3.解析init.rc配置文件并fork启动Zygote进程
从功能上主要是init启动了Zygote以及ServiceManager, Zygote之后启动System Service。其中zygote通过Socket传递给system Service,而system Service 和ServeManage进而通过Binder通信App。至此App启动。
文章原创,转载需注明出处!
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除