【Android系统架构】Linux内核层

2023-05-16

Android 系统架构

Android 系统构架是安卓系统的体系结构,Android 的系统架构和其操作系统一样,采用了 分层的架构,共分为四层,从高到低分别是应用程序层,应用程序框架层,系统运行库层和 Linux 内核层。

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/android-interview/ry3mws/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在这里插入图片描述

Linux内核层

Android 核心系统是基于 Linux 内核 的,该层为 Android 设备的各种硬件提供底层的驱动,如显示驱动、音频驱动、键盘驱动、电源驱动等。

Android系统基本架构简述:

Android 系统架构分从下往上为 Linux 内核层、系统运行库层、应用程序框架层 和 应用程序层,各层的功能为:

  • Linux 内核层负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能;
  • 系统运行库层通过一些 C/C++ 库来为 Android 系统提供主要的特性支持;
  • 应用程序框架层提供构建应用程序时可能用到的各种 API,开发人员主要是使用该层封装好的 API 进行快速开发;
  • 应用程序层提供一些核心应用程序包。

什么是嵌入式实时操作系统?

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之类来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。其主要用于工业控制、军事设备、航空航天等 对系统的响应时间有苛刻要求 的领域。根据超出时限的容忍程度,又可分为 硬实时操作系统 和 软实时操作系统,硬实时系统有一个 刚性的、不可改变的 时间限制,它不允许任何超出时限的错误

Android 操作系统属于实时操作系统吗?

Android 是基于 Linux 内核的,属于软实时操作系统。

系统运行库层

系统运行库层通过一些 C/C++ 库来为 Android 系统提供主要的特性支持。系统库包括 9 个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL 和 libc。其中 SQLite 库提供了数据库的支持,OpenGLEState 库提供了 3D 绘图的支持,WebKit 库提供了浏览器内核的支持。

该层还有 Android 运行时库,包括核心库和 ART( 5.0 系统之后,Dalvik 虚拟机被 ART 取代)。核心库既兼容了大多数 Java 语言所需要调用的功能函数,又包括了 Android 的核心库,比如 android.os、android.Net、 android.media 等。Dalvik 虚拟机是一种基于寄存器的 Java 虚拟机,专门为移动设备定制,针对手机内存、CPU 性能有限等情况做了优化处理,主要实现生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能。而替代 Dalvik 虚拟机的 ART 的机制与 Dalvik 不同。在 Dalvik 下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在 ART 环境中,应用在第一次安装的时候,字节码就会 预先编译成机器码,使其成为真正的本地应用。

Android 的中间件层由函数库和 Android 运行时库组成

Dalvik虚拟机不属于函数库

使用 Java 语言编写的 Android 程序,是运行在( Dalvik / ART虚拟机)上的

什么是 ART 虚拟机?
ART(Android Runtime) 是 Android 4.4 发布的用来替代 Dalvik 虚拟机的虚拟机,在 Android 5.0 版本默认启用ART,其处理应用程序执行的方式完全不同于 Dalvik 虚拟机。 Dalvik 依靠 Just-In-Time (JIT) 编译器去解释字节码,开发者编译后的应用代码需要通过一个解释器在用户的设备上运行,这一机制并不高效,但让应用能更容易在不同硬件和架构上运行。ART 则完全改变了这套做法,在应用安装时就 预编译字节码到机器语言,这一机制叫 Ahead-Of-Time (AOT)编译。在移除解释代码这一过程 后,应用程序执行将更有效率,启动更快。

应用程序框架层

应用程序框架层是 Android 应用开发的基础,提供构建应用程序时可能用到的各种 API,Android 自带的一些核心应用就是使用这些 API 完成的,开发者也可以通过使用这些 API 来构建自己的应用程序。该层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和 XMPP 服务十个部分。

Android 应用程序框架层的主要功能是什么?
答:提供 Android 平台基本的管理功能和组件重用机制。

应用程序层

应用层提供一些核心应用程序包,可以说所有安装在手机上的应用程序都是属于这一层的,例如系统自带的联系人、短信、日历等程序,以及下载安装的程序或者自己开发的程序。

综上,Android 的系统架构不仅仅使我们从宏观上认识了 Android 系统,同时,也给我们的学习与实践指明了方向。若是从事 Android 应用开发,那应该侧重于研究 Android 的应用程序框架层和应用程序层;若是从事 Android 系统开发,那应该研究 Android 的系统库和 Android 运行时库;若是从事 Android 驱动开发,那应该研究 Android 的 Linux 内核。总之,找准切入点,实践出真知。

Android 应用程序层上开发的应用程序都是采用什么语言编写的?
Android 上的应用程序是用 Java 编写的,底层部分是 Linux,使用 C 语言,部分功能模块是用 C++ 写的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Android系统架构】Linux内核层 的相关文章

随机推荐

  • Redis博客、教程学习资料汇总(持续更新)

    在这篇博客中 xff0c 总结一下写过的博客和一些好的学习资料 博客 xff1a Redis基础 xff0c Linux下安装Redis和hredis xff0c C 43 43 调用Redis xff0c Redis中字符串设计 Redi
  • memcached在linux上的安装,C/C++调用memcached,memcached与Redis的区别

    文章目录 一 memcached在linux上的安装安装 Memcached自动安装源代码安装 Memcached 运行 xff08 1 xff09 作为前台程序运行 xff1a xff08 2 xff09 作为后台服务程序运行 xff1a
  • 【C/C++服务器开发】事件驱动、事件驱动架构、事件驱动编程及设计模式

    文章目录 一 事件驱动二 事件驱动编程事件驱动和异步IO看图说话讲事件驱动模型 三 C C 43 43 实现事件驱动四 常用的C C 43 43 事件驱动库 一 事件驱动 首先我们来看看百度百科的介绍 所谓事件驱动 xff0c 简单地说就是
  • VxWorks消息队列详解

    文章目录 一 前言二 VxWorks消息队列模块详解三 代码实例 一 前言 最近看了点事件驱动编程 了解到在时间驱动编程中 xff0c 重要的是一个事件收集器 一个事件发送器和一个事件处理器 这让我联想到VxWorks中的消息队列 xff0
  • VxWorks/tornado中怎么调试及WindSh常用命令行详解

    一 调试 VxWorks5 5 tornado2 2作为一款极为远古的嵌入式实时操作系统和IDE xff0c 软件的界面和功能都是极为原始的 在这种情况下 xff0c 如果我们要对软件进行调试该怎么操作呢 xff1f tornado调试分为
  • 如何长期输出优质内容?我是如何做到的?

    分享一篇站长的文章 xff1a 如何长期输出优质内容 xff1f 我是如何做到的 xff1f 创业 7 年时间里 xff0c 我一直在运营C语言中文网 xff0c 创作和参与了 40 多套编程教材 xff0c 累计阅读人次超过 2000 万
  • Dev C++调试程序方法详解

    分享一篇站长的关于调试的文章 xff1a Dev C 43 43 调试程序方法详解 Dev C 43 43 算是兼容性很好使用很方便的IDE了 xff0c 记录一下调试方法 xff0c 以备不时之需 所谓调试程序 xff0c 就是控制编译器
  • 为什么看到这么多人不推荐C++?

    转一个回答 链接 xff1a https www zhihu com question 22853451 answer 2084675682 其实现在也越来越发现 xff0c C 43 43 老是在弄那些语言特性 xff0c 当然有一些好用
  • 模型部署之NVIDIA AGX Xavier 配置和使用Torch,ONNX,TensorRT做模型推理

    Do not blindly trust anything I say try to make your own judgement 目录 1 安装CUDA cudnn tensorrt 2 配置Torch 3 配置ONNX 4 配置Ten
  • 什么是包管理器,C++ 有没有像 pip、npm、gem 一样的包管理工具?

    文章目录 一 包管理器什么是包 xff1f RPM包管理器dpkg包管理器二 C 43 43 有没有像 pip npm gem 一样的包管理工具 xff1f 三 C 43 43 包管理器有哪些1 Conan https github com
  • 二进制文件和库之间有什么区别?

    问题 我正在尝试了解文件系统层次结构标准 我已经查找了二进制文件和库 xff0c 并且据我目前的理解 xff1a 二进制文件是二进制格式的计算机可读代码文件 xff0c 它们直接用位控制CPU和处理器 为了方便起见 xff0c 库是可由各种
  • 如何用OneNote、Typora、Notion构建知识体系?

    我其实用OneNote和typora已经很久了 xff0c 因此很想来说说我使用这两款软件的方法和感想 xff0c 再加上最近听说Typora正式版要开始收费了 xff08 14 99 xff09 xff0c 还有一个国外很火的笔记Noti
  • 【程序员学理财】为什么要开这个专栏?

    李嘉诚有一句名言 xff1a 30岁以前人要靠体力 智力赚钱 xff0c 30岁之后要靠钱赚钱 要靠打工实现财富自由几乎是不可能的事 xff0c 靠钱赚钱 xff0c 是实现财富快速积累的唯一方式 当然要靠钱赚钱 xff0c 也是需要原始积
  • 【程序员读论文】为什么要读论文?

    一 标题 标题虽然说是读论文 xff0c 但其实不是很准确 xff0c 而是读以论文为代表的具有高密度知识的内容 xff0c 包括论文 xff08 硕博毕业论文 xff0c 期刊会议论文 xff09 xff0c 书籍 xff08 全面但知识
  • 【程序员学英语】翻译编程帮助手册和英文问答

    虽然PHP是最好的语言 xff0c 但是英语才是每个程序员都应该熟练掌握的语言 学习一门语言包括听 说 读 写 xff0c 对于每个在国内的程序员来说 xff0c 掌握基本的读 写是最基本的要求 因此这个专栏大概会专注于翻译帮助手册和英文问
  • ARINC429总线基础

    再来一份 xff0c 相互补充
  • 【池化技术】内存池技术原理和C语言实现

    文章目录 一 基础概念1 一个可执行程序占用的内存分为哪几个区 xff1f 一个进程的虚拟内存区域有哪些 xff1f 2 静态内存分配和动态内存分配 二 malloc实现原理malloc内存分配 xff08 下面算是正常一般的情况了 xff
  • 【池化技术】线程池技术原理和C语言实现

    文章目录 一 基础概念进程和线程多进程和多线程区别 二 线程池技术 一 基础概念 在讲线程池技术之前 xff0c 我们先对操作系统中的一些基础概念 xff0c 比如进程 线程 线程的创建与销毁等进行说明 进程和线程 进程 一个在内存中运行的
  • 【池化技术】池化技术基础和原理

    文章目录 一 概念二 应用1 线程池2 连接池3 内存池 三 实例 一 概念 池化技术指的是提前准备一些资源 xff0c 在需要时可以重复使用这些预先准备的资源 在系统开发过程中 xff0c 我们经常会用到池化技术 通俗的讲 xff0c 池
  • 【Android系统架构】Linux内核层

    Android 系统架构 Android 系统构架是安卓系统的体系结构 xff0c Android 的系统架构和其操作系统一样 xff0c 采用了 分层的架构 xff0c 共分为四层 xff0c 从高到低分别是应用程序层 xff0c 应用程