Android系统架构简介

这篇具有很好参考价值的文章主要介绍了Android系统架构简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,Android系统架构

Android的系统架构主要分为五层,见下图:
android架构,Android学习,android,系统架构
android架构,Android学习,android,系统架构
从下至上依次是:
Linux内核:
Android基于Linux,由Linux提供核心系统服务,如安全、内存管理、进程管理、网络堆栈、驱动模型等等;
除了标准的Linux内核之外,Android还增加了内核的驱动程序,如显示驱动、音频驱动、
Binder驱动、输入设备驱动、WIFI驱动、电源管理等。
硬件抽象层:
硬件抽象层处于应用程序框架层和Linux内核之间,用于将硬件抽象化,简单来说就是封装Linux内核,对上提供接口,屏蔽实现细节。
硬件抽象层包含很多库模块,每个模块都为特定类型的硬件组件实现接口,例如相机、蓝牙模块。当应用程序框架层API要访问设备硬件时,Android系统会为该硬件组件加载库模块。
Android Runtime:
包含Android虚拟机和核心库,其中虚拟机原本是Dalvik,自2016年之后换成了ART,ART采用AOT技术,将APP的编译时间提前到安装时,以加快运行速度。并且还有垃圾回收等常规虚拟机功能。每个应用都在自己的进程中运行,都有自己的虚拟机实例,ART可运行多个虚拟机
C++ Framework 库:
包含一些原生C/C++库,可以通过NDK调用。
Java API框架层:
提供大量开发人员用到的应用程序接口,集中了很多重要的组件,如Activity、Service、BroadCastReceiver、ContentProvider等
应用层:
最上层的应用,包含系统自带的和第三方开发的APP,如电话、电子邮件、微信、QQ等。

二,Android开机流程以及一些重要进程:

android架构,Android学习,android,系统架构
Boot ROM: 长按电源键开机,手机会首先执行预设在ROM中的引导代码,然后加载引导程序到RAM。
Boot Leader:这是启动Android之前的引导程序,主要是检查RAM,初始化硬件参数等信息
Linux内核:启动Kernel的swapper进程(pid=0):该进程又称为idle进程, 系统初始化过程Kernel由无到有开创的第一个进程, 用于初始化进程管理、内存管理,加载Display,Camera Driver,Binder Driver等相关工作;
启动kthreadd进程(pid=2):是Linux系统的内核进程,会创建内核工作线程kworkder,软中断线程ksoftirqd,thermal等内核守护进程。 kthreadd进程是所有内核进程的鼻祖。

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

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

Java API框架层:
Zygote进程,是由init进程通过解析init.rc文件后fork生成的,Zygote进程主要包含:
加载ZygoteInit类,注册Zygote Socket服务端套接字
加载虚拟机
提前加载类preloadClasses
提前加载资源preloadResouces
System Server进程,是由Zygote进程fork而来, SystemServer是Zygote孵化的第一个进程,System Server负责启动和管理整个Java framework,包含ActivityManager,WindowManager,PackageManager,PowerManager等服务。
Media Server进程,是由init进程fork而来,负责启动和管理整个C++framework,包含AudioFlinger,Camera Service等服务

APP层:
Zygote进程孵化出的第一个App进程是Launcher,这是用户看到的桌面App;
Zygote进程还会创建Browser,Phone,Email等App进程,每个App至少运行在一个进程上。
所有的App进程都是由Zygote进程fork生成的。

三,一些进程间通信方式:

Binder:Android特有的,采用C/S架构,可用于进程间通信,数据只拷贝一次,效率高、安全性也高
Handler:用于同一个进程不同线程间通信
Socket:也是C/S架构,Socket方式更多的用于Android framework层与native层之间的通信。Socket通信方式相对于binder比较简单。文章来源地址https://www.toymoban.com/news/detail-686900.html

到了这里,关于Android系统架构简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 12系统源码_窗口管理(五)DisplayContent简介

    DisplayContent 用于管理屏幕,一块DisplayContent 对象实例代表一个屏幕设备,这样有多个屏幕的设备就可以创建多个DisplayContent 对象,虽然多数设备只有一个显示屏,但它们同样可以创建多个 DisplayContent 对象,如投屏的时候,可以创建一个虚拟的DisplayContent。 1、DisplayContent对象实

    2024年02月07日
    浏览(27)
  • Android MVVM架构模式,详详详细学习

    是一种基于数据绑定的架构模式,用于设计和组织应用程序的代码结构。它将应用程序分为三个主要部分:Model(模型)、View(视图)和ViewModel(视图模型)。 Model(模型):负责处理数据和业务逻辑。它可以是从网络获取的数据、数据库中的数据或其他数据源。Model层通常

    2024年02月12日
    浏览(28)
  • Android系统安全 — 6.2 Ethernet安卓架构

    整个Ethernet系统架构如下图所示: 以太网服务(EthernetService)的启动与注册流程; 应用层调用使能ethernet功能的方法流程来分析,从应用层如何将指令一步一步传到底层kernel; 底层kernel如何一步一步上报Uevent(例如网线的插拔等)给framework层实现。 由SystemServer启动的时候生

    2024年02月10日
    浏览(32)
  • Android车载系统Car模块架构链路分析

    SystemServer 中专门为 AAOS 设立的系统服务,用来管理车机的核心服务 CarService。该系统服务的具体实现在 CarServiceHelperServiceUpdatableImpl Car模块核心服务APP,Android 13版本开始分为两个,一个是掌管 CarService 服务类的  builtin app ,源码在:packages/services/Car/service-builtin/,一个是拥有

    2024年02月19日
    浏览(35)
  • Android 1.1 背景相关与系统架构分析

    目录   1.1 背景相关与系统架构分析 分类 Android 基础入门教程 1.Android背景与当前的状况   2.Android系统特性与平台架构 系统特性: 平台架构图: 架构的简单理解: 3.本节小结:   分类 Android 基础入门教程 Android系统是由Andy Rubin创建的,后来被Google收购了;最早的版本是:An

    2024年02月10日
    浏览(32)
  • Android13音频子系统分析(一)---整体架构

             目录 一、应用API层 二、Java框架层 三、Native核心层 3.1 AudioFlinger模块 3.2 AudioPolicyService模块 四、HAL层         本文基于AOSP13源码进行分析解读。所以与各个SoC平台厂商提供的运行在真实设备上的源码会有细微差异,但核心原理区别不大。         音频子系

    2024年02月07日
    浏览(36)
  • 《移动互联网技术》 第十章 系统与通信: 掌握Android系统的分层架构设计思想和基于组件的设计模式

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(46)
  • 【Android 12 AOSP学习】Android内置第三方apk到系统

    这篇文章将介绍如何在Android系统中内置第三方apk 编译好的Android源码 Android apk文件:也就是安卓应用安装包 (1)在源码 packages/apps 目录下以我们需要内置的APK名字来创建一个新的文件夹 以 qqmusic.apk 为例,在 Android_12_AOSP/packages/apps 目录下新建qqmusic文件夹 (2)将 qqmusic.apk 放入

    2024年02月02日
    浏览(39)
  • Android内存泄漏分析及检测工具LeakCanary简介,Android进阶

    @Synchronized override fun expectWeaklyReachable( watchedObject: Any, description: String ) { if (!isEnabled()) { return } removeWeaklyReachableObjects() val key = UUID.randomUUID() .toString() val watchUptimeMillis = clock.uptimeMillis() val reference = KeyedWeakReference(watchedObject, key, description, watchUptimeMillis, queue) SharkLog.d { \\\"Watching \\\" +

    2024年04月25日
    浏览(29)
  • [Android] Android架构体系(2)

    [Android] Android架构体系(1) 抛开合法性问题不提,相对于GLibC,Bionic 也可以算是非常轻量级的了,而且对于Android所要达成的目标,Bionic 也更为有效。Bionic 中去掉的下列这些特性的原因或是认为没有必要或是认为太过复杂。 由于系统用是使用得非常频繁的,所以 Boinic 想要通过

    2024年01月19日
    浏览(95)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包