安卓系统的整体架构 二

本文详细介绍了Android系统的整体架构,从Loader层到App层,解析了从开机到应用程序启动的全过程。重点讨论了Kernel层、Native层、Framework层的角色,特别是Zygote进程的启动、System Server进程和Media Server进程的功能。此外,还提到了Syscall和JNI在不同层之间的交互作用。
摘要由CSDN通过智能技术生成

前言

看了Gityuan大神的博客,最近因为遇到一些工作上的问题踩了坑,决定正式开始阅读Android framework层源码,当然后面可能还会经历一个多月的毕设流程,等毕业回来工作也正式要迈上正轨了,好几个月没写博客了,前段时间因为感情上的问题消沉了几个月,好在现在走出来了,其实很早以前就想阅读framework了,趁着这段时间就开始吧。今天这篇文章主要梳理下Android整体的架构和系统启动的流程。文章参考Android系统开篇。主要目的是加深自己的记忆。

Android 系统架构

google经典的四层架构从下往上分别为:Linux内核层、系统库和Android运行时环境、framework层和应用层这四层架构。按照Gityuan大神的视角,我们也从系统启动过程为主线,以进程的视角来剖析Android系统的架构这里写图片描述

Android 启动架构

这里先上一张Android 系统启动的架构图: 
这里写图片描述
可以看到:Android系统启动是从下往上的一个过程:Loader->Kernel->Native->Framework->App

Loader 层

  • Boot Rom当手机处于关机状态时,长按开机键开机,会引导芯片开始从固化在Rom里预设的代码开始执行,然后加载引导程序到Ram.
  • Boot Loader这是启动Android系统之前的引导程序,主要是检查Ram、初始化参数等功能。

Kernel 层

kernel层指的就是Android内核层,到这里才刚刚进入Android系统

  1. 启动Kernel层的swapper进程(pid=1),系统初始化过程Kernel创建的第一个进程,用于初始化进程管理、内存管理,加载DisplayCameraBinder等驱动相关工作。
  2. 启动kthreadd(pid=2),这是Linux系统的内核进程,会创建内核工作线程kworkder、软中断线程ksoftirqdthermal等内核守护进程。kthreadd是所有内核进程的鼻祖。

Native 层

这里的Native层主要包括init孵化来的用户空间的守护进程、HAL层及开机动画等。启动init进程(pid=1),是Linux系统的用户进程,init进程是所有用户进程的鼻祖。

  • init进程会孵化出ueventdlogdhealthdinstalldadbdlmkd等用户守护进程;
  • init进程还会启动ServiceManager(Binder服务管家)、bootanim(开机动画)等重要服务。
  • init进程孵化出Zygote进程,Zygote进程是Android系统第一个Java进程(虚拟机进程),zygote进程是所有Java进程的父进程。

Framework 层

framework主要包括Zygote进程SystemServer进程和MediaServer进程`。

Zygote 进程

Zygote进程是由init进程通过解析init.rc文件后fork生成的。Zygote的任务主要包括:

  1. 加载ZygoteInit类,注册Zygote Socket服务端套接字。
  2. 加载虚拟机
  3. preloadClassses
  4. preloadResources

System Server 进程

System Server进程是由Zygote进程fork而来,System ServerZygote孵化的第一个进程System Server负责启动和管理整个Java Framework,包含ActivityManagerPowerManager等服务。

Media Server 进程

Media Server 进程由init进程fork而来,负责管理整个C++ Framework,包含AudioFlingerCamera Service等服务。

App 层

Zygote进程孵化出的第一个App进程是Launcher,也就是用户看到的桌面App。同时Zygote进程还会创建BrowserPhoneEmailApp进程。也就是说所有的App进程都是由Zygote进程fork生成的。

Syscall 和 JNI

Native层和Kernel层有一个系统调用层,也就是SyscallJava层和native层之间的纽带是JNI

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值