iOS是基于UNIX内核,Android是基于Linux内核,iOS和android作为两款优秀的手机操作系统,他们有共性有区别。
iOS的系统架构
分为四个层次:
核心操作系统层(Core OS layer)
核心服务层(Core Services layer)
媒体层(Media layer)
可触摸层(Cocoa Touch layer)
如下如所示:

iOS系统架构解析:
1、Core OS是位于iOS系统架构最下面的一层是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。作为app开发者不需要与这一层打交道。
2、Core Services是核心服务层,可以通过它来访问iOS的一些服务。
3、Media是媒体层,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。
4、Cocoa Touch是可触摸层,这一层为我们的应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。

Android的系统架构
android的系统架构和其操作系统一样,采用了分层的架构。
从架构图看,android分为四个层,从高层到低层分别是
应用程序层(Applications)
应用程序框架层(Application Framework)
系统运行库层 (Libraries and Android runtime)
linux核心层 (Linux Kernel)
如下图所示:

Android系统架构解析:
1> Linux内核层
Android以Linux操作系统内核为基础,借助Linux内核服务实现硬件设备驱动,进程和内存管理,网络协议栈,电源管理,无线通信等核心功能。Android4.0版本之前基于Linux2.6系列内核,4.0及之后的版本使用更新的Linux3.X内核,并且两个开源项目开始有了互通。Linux3.3内核中正式包括一些Android代码,可以直接引导进入Android。Linux3.4将会增添电源管理等更多功能,以增加与Android的硬件兼容性,使Android在更多设备上得到支持。

Android内核 对Linux内核进行了增强,增加了一些面向移动计算的特有功能。例如,低内存管理器LMK(Low Memory Keller),匿名共享内存(Ashmem),以及轻量级的进程间通信Binder机制等。这些内核的增强使Android在继承Linux内核安全机制的同时,进一步提升了内存管理,进程间通信等方面的安全性。下表列举了Android内核的主要驱动模块:

驱动名称说明
Android电源管理(Power Ma nagement)
针对嵌入式设备的,基于标准Linux电源管理系统的,轻量级的电源管理驱动

低内存管理器(Low Memory Keller)
可以根据需要杀死进程来释放需要的内存。扩展了Linux的OOM机制,形成独特的LMK机制

匿名共享内存(Ashmem)
为进程之间提供共享内存资源,同时为内核提供回收和管理内存的机制

日志(Android Logger)
一个轻量级的日志设备

定时器(Anroid Alarm)
提供了一个定时器用于把设备从睡眠状态唤醒

物理内存映射管理(Android PMEM)
DSP及其他设备只能工作在连续的物理内存上,PMEM用于向用户空间提供 连续的物理内存区域映射

Android定时设备(Android Timed device)
可以执行对设备的定时控制功能

Yaffs2文件系统
Android采用大容量的NAND闪存作为存储设备,使用Yaffs2作为文件系统管理大容量MTD NAND Flash;Yaffs2占用内存小,垃圾回收简洁迅速。

Android Paranoid网络
对Linux内核的网络代码进行了改动,增加了网络认证机制。可在IPV4,IPV6和蓝牙中设置,由ANDROID_PARANOID_NETWORK宏来启用此特性。

2> 系统运行库层
官方的系统架构图中,位于Linux内核层之上的系统运行库层是应用程序框架的支撑,为Android系统中的各个组件提供服务。系统运行库层由系统类库和Android运行时构成。

  1. 系统类库
    系统类库大部分由C/C++编写,所提供的功能通过Android应用程序框架为开发者所使用。主要的系统类库及说明如下表:
    系统类库名称说明
    Surface Manager
    执行多个应用程序时,管理子系统的显示,另外也对2D和3D图形提供支持

Media Framework
基于PacketVideoOpenCore的多媒体库,支持多种常用的音频和视频格式的录制和回放,所支持的编码格式包括MPEG4,MP3,H264,AAC,ARM

SQLite
本地小型关系数据库,Android提供了一些新的SQLite数据库API,以替代传统的耗费资源的JDBC API

OpenGL|ES
基于OpenGL ES 1.0API标准实现的3D跨平台图形库

FreeType
用于显示位图和矢量字体

WebKit
Web浏览器的软件引擎

SGL
底层的2D图形引擎

Libc(bionic l ibc)
继承自BSD的C函数库bionic libc,更适合基于嵌入式Linux的移动设备

SSL
安全套接层,是为网络通信提供安全及数据完整性的一种安全协议
除上表列举的主要系统类库之外,Android NDK(Native Development Kit),即Android原生库,也十分重要。NDK为开发者提供了直接使用Android系统资源,并采用C或C++语言编写程序的接口。因此,第三方应用程序可以不依赖于Dalvik虚拟机进行开发。实际上,NDK提供了一系列从C或C++生成原生代码所需要的工具,为开发者快速开发C或C++的动态库提供方便,并能自动将生成的动态库和java应用程序一起打包成应用程序包文件,即.apk文件。

注意,使用原生库无法访问应用框架层API,兼容性可能无法保障。而且从安全性角度考虑,Android原生库用非类型安全的程序语言C,C++编写,更容易产生安全漏洞,原生库的缺陷(bug)也可能更容易直接影响应用程序的安全性。

  1. 运行时
    Android运行时包含核心库和Dalvik虚拟机两部分。
    核心库:核心库提供了Java5 se API的多数功能,并提供Android的核心API,如android.os,android.net,android.media等。
    Dalvik虚拟机:Dalvik虚拟机是基于apache的java虚拟机,并被改进以适应低内存,低处理器速度的移动设备环境。Dalvik虚拟机依赖于Linux内核,实现进程隔离与线程调试管理,安全和异常管理,垃圾回收等重要功能。
    本质而言,Dalvik虚拟机并非传统意义上的java虚拟机(JVM)。Dalvik虚拟机不仅不按照Java虚拟机的规范来实现,而且两者不兼容。

Dalvik和标准Java虚拟机有以下主要区别:
Dalvik基于寄存器,而JVM基于栈。一般认为,基于寄存器的实现虽然更多依赖于具体的CPU结构,硬件通用性稍差,但其使用等长指令,在效率速度上较传统JVM更有优势。
Dalvik经过优化,允许在有限的内存中同时高效地运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行,都拥有一个独立的Dalvik虚拟机实例。Android这种基于Linux的进程“沙箱”机制,是整个安全设计的基础之一。
Dalvik虚拟机从DEX(Dalvik Executable)格式的文件中读取指令与数据,进行解释运行。DEX文件由传统的,编译产生的CLASS文件,经dx工具软件处理后生成。
Dalvik的DEX文件还可以进一步优化,提高运行性能。通常,OEM的应用程序可以在系统编译后,直接生成优化文件(.ODEX); 第三方的应用程序则可在运行时在缓存中优化与保存,优化后的格式为DEY(.dey文件)。

3> 应用程序框架层

应用程序框架层提供开发Android应用程序所需的一系列类库,使开发人员可以进行快速的应用程序开发,方便重用组件,也可以通过继承实现个性化的扩展。具体包括的模块如表:
应用程序框架层类库名称功能如下:
活动管理器(Activity Mananger)
管理各个应用程序生命周期并提供常用的导航回退功能,为所有程序的窗口提供交互的接口

窗口管理器(Window Manager)
对所有开启的窗口程序进行管理

内容提供器(Content Provider)
提供一个应用程序访问另一个应用程序数据的功能,或者实现应用程序之间的数据共享

视图系统(View System)
创建应用程序的基本组件,包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),还有可嵌入的web浏览器。

通知管理器(Notification Manager)
使应用程序可以在状态栏中显示自定义的客户提示信息

包管理器(Package Manager)
对应用程序进行管理,提供的功能诸如安装应用程序,卸载应用程序,查询相关权限信息等。

资源管理器(Resource Manager)
提供各种非代码资源供应用程序使用,如本地化字符串,图片,音频等

位置管理器(Location Manager)
提供位置服务

电话管理器(Telephony Manager)
管理所有的移动设备功能

XMPP服务
是Google在线即时交流软件中一个通用的进程,提供后台推送服务

4>应用层
Android平台的应用层上包括各类与用户直接交互的应用程序,或由java语言编写的运行于后台的服务程序。例如,智能手机上实现的常见基本功能 程序,诸如SMS短信,电话拨号,图片浏览器,日历,游戏,地图,web浏览器等程序,以及开发人员开发的其他应用程序。

iOS vs Android 系统架构相关推荐

  1. Android系统架构-[Android取经之路]

    摘要:本节主要来讲解Android的系统架构 阅读本文大约需要花费10分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计,欢迎关注我,谢谢! 欢 ...

  2. Android系统架构图及简单的系统架构介绍

    2019独角兽企业重金招聘Python工程师标准>>> ndroid的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层. ...

  3. Android系统架构基本模式解析

    Android系统架构总共被分为四层,在这里大家就可以通过介绍对这四个层次进行一个深入的解读,以加深大家对这一系统的认识. 如今,大家面对市场中种类繁多的手机必然挑的眼花缭乱.不过,在智能手机占据主要 ...

  4. android phone驱动_一文带你掌握 Android 系统架构

    引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解Android系统的核心技术点,带领大家初探Android系统全貌以及内部运作机制.虽然Android系统非常 ...

  5. linux与安卓系统目录,android系统架构及源码目录结构

    1. android系统架构: android系统架构采用了分层架构的思想,如下图所示,从上到下共4层,分别为:应用程序层.应用程序框架层.系统库和android运行时层.linux内核层. 每层功能 ...

  6. 国内用户ios android比例,国内iOS、Android系统的设备总量已达到了2亿

    首先,在2012年第三季度时,国内iOS.Android系统的设备总量已达到了2亿.在今年3月的时候,这一指标只有8700万,也就是说设备在半年内增长了125%.而在设备量大增的同时,用户也变得依赖移 ...

  7. Android系统架构开篇

    Android系统庞大且错综复杂,Gityuan带领大家初探Android系统整体架构,一窥其全貌. 一.引言 本文作为Android系统架构的开篇,起到提纲挈领的作用,从系统整体架构角度概要讲解An ...

  8. Framework学习(一)深入Android 系统架构

    Android系统架构 说到Android,大家都知道他是目前移动市场最大的终端系统,拥有着广阔的市场价值,因此,作为一名开发者,深入了解Android是很有必要. 其实,Android的本质就是在标 ...

  9. Android系统运行库分为,Android系统架构

    Android系统架构可分为五层,从上到下依次是应用层.应用框架层.系统运行时库层.硬件抽象层和Linux内核层 应用层 (System Apps) 系统内置的应用程序以及非系统级应用程序都属于应用层 ...

最新文章

  1. ubuntu18.04.4 安装 dlib (解决 Running setup.py install for dlib ... error错误)
  2. C语言求m中n个数字的组合
  3. Pool多进程的加速
  4. ldap客户端以及jenkins的配置
  5. EXCEL两组数相等红色标示并放到第三列_VBA
  6. ❤JavaScript系列6部曲:语法篇(万字长文)❤
  7. 104. 二叉树的最大深度【LeetCode】
  8. 弹出无边框网页的Javscrpt代码
  9. 设计干货素材|UI设计中的插画模板,便于应用的好素材!
  10. fs.readfile 显示html,从fs.readFile获取数据
  11. 在 Unity 多人游戏中实现语音对话
  12. 二维数组求最大子数组和
  13. CCDA认证的详细综合叙述
  14. weblogic控制台超时时间_WebLogic如何设置session超时时间
  15. 一台设备驱动万物:苹果和三星即将推陈出新
  16. Tbase安装遇错解决办法
  17. 短视频运营方法分享,三个方面要注意,合理运营才能吸粉引流
  18. div 中img 居中
  19. 手游服务器微信互通,使命召唤手游QQ和微信可以一起玩吗
  20. 三栏式布局详解(代码+图解)

热门文章

  1. PAT 乙级 1061 判断题 (15分)
  2. 计算机组成原理【2】
  3. Android电源管理分析
  4. 什么是IP地址定位,优缺点有哪些?
  5. python实训报告50000_Python实训周总结
  6. 万东医疗“卖身”美的集团背后:已有高管离职,美年健康俞熔持股3年亏4亿元
  7. MCAD,MCSD资料
  8. 骑鹤下江南 mysql 安装及配置
  9. 科大讯飞活跃竞赛汇总!(12个)
  10. Nginx图片服务器访问图片404