android系统架构和工作原理

系统启动、应用启动、四大组件启动、界面加载、时间分发

google官方android系统架构图

image.png

系统启动过程

image.png

Boot ROM和Boot Loader

RAM:随机存储内存,俗称运行内存,断电内容丢失
ROM:只读内存,俗称硬盘,数据持久化

Boot ROM:长按开机键,执行ROM中预设的代码,加载引导程序到RAM
Boot Loader:执行引导程序检查RAM,初始化硬件参数,准备启动系统

Linux Kernel(硬件驱动)

swagger进程(又称idle进程)(pid=0):初始化进程管理,内存管理;加载驱动程序。
kthreadd进程(pid=2):创建内核工作线程kworkder,软中断线程ksoftirqd,thermal等内核守护进程。

HAL(硬件抽象层)

硬件层的封装,为硬件层的调用提供统一的调用接口

Native系统库和Android Runtime

Native 系统库:包括init孵化的用户守护进程、HAL和开机动画。

1 init进程孵化出ueventd、logd、healthd、installd、adbd、lmkd等用户守护进程
2 init进程还启动 servicemanager(binder服务管家)、 bootanim(开机动画)等重要服务
3 init进程孵化出Zygote进程,Zygote进程是Android系统的第一个Java进程(即虚拟机进程), Zygote是所有Java进程的父进程

Android Runtime(ART)

应用:在自己的进程中运行,有自己的虚拟机实例
DEX文件:Android字节码格式文件
ART:执行DEX,在设备运行多个虚拟机;预先(AOT)和即时(JIT)编译,优化垃圾回收(GC),调试相关支持

Framework

java封装的应用服务,通过调用系统库服务,来实现具体的功能,并对应用层提供统一接口

应用层

应用:每个app都运行在至少一个进程上,有自己的虚拟机实例
桌面应用:即Launcher,Zygote孵化的第一个进程
应用进程:所有的进程都有Zygote创建

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容