IOS的系统架构

iOS的为Objective-C和Swift,Objective-C的优势是效率高但比较“唯一”。

响应顺序:Touch–Media–Service–Core架构

分为四个层次:核心操作系统层(core OS layer)、核心服务层(Core Service layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)

  • iOS系统是苹果公司开发的移动端操作系统,全称iPhone operation system

  • iPhone OS来源于Mac OS,是一种类Unix操作系统。

  • iOS系统作为软件应用程序与设备硬件的桥梁,应用程序首先与操作系统的接口通信,系统受到信息后再去与底层硬件实现交互从而完成程序要完成的任务。

  • Core OS操作系统层和Core Services核心服务层:为iOS系统底层接口。

  • Core OS操作系统层:包含了电池管理、文件系统等服务。

  • Core Services核心服务层:包含了网络请求、数据库访问、浏览器、文件访问等。

  • Media媒体层:为应用程序提供对各类媒体文件的支持,图的绘制,多媒体的播放以及动画等特效。

  • Cocoa Touch层:位于最顶层,为整个系统提供程序所使用的各类基础框架,该层主要功能是处理iOS设备上的交互操作,多为与界面相关的框架。

Android的系统架构

Android采用的是JAVA和Kotlin,而iOS的则为Objective-C,Objective-C的优势是效率高但比较“唯一”,而JAVA的优势则是跨平台不过运行效率相对偏低

响应顺序:Application–Framework–Library–Kernal架构,和显示相关的图形处理属于Library,被“放到”了第三位。一句话概念就是,当你触摸屏幕之后Android系统首先会激活应用框架,然后是屏幕,最后是核心架构。

基于Linux。

分为四个层,从高层到低层分别是:应用程序层(Applications)、应用程序框架层(Application Framework)、系统运行库层 (Libraries and Android runtime)、linux核心层 (Linux Kernel)

IOS和Android区别

对比项IOSAndroid
运行机制iOS:沙盒运行机制

  • 出于安全考虑,iOS应用程序与文件系统的交互仅限于应用沙盒目录。

  • 在安装新应用期间,安装程序会为沙盒目录中的应用创建多个容器目录。

  • 每个容器目录都有特定的角色:捆绑容器目录保持应用的捆绑包;而数据容器目录同时保存应用和用户的数据;数据容器目录进一步划分为多个子目录,应用可用于排序和组织其数据;该应用还可以请求在运行时访问其他容器目录。

  • 意味着:没有用户授权的情况下,iOS应用程序仅能在自己的沙盒读写文件,不可访问其他沙盒,不可进行相互通信。

Android:虚拟机运行机制

  • 安卓采用虚拟机运行机制,Dalvik是谷歌公司自研设计用于安卓平台的java虚拟机,是面向linux、为嵌入式操作系统设计的虚拟机,主要负责完成对象生命周期管理、栈堆管理、线程管理、安全和异常管理、垃圾回收等功能。

  • Dalvik负责进程隔离和线程管理,每一个安卓应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行,有的安卓应用的线程对应一个linux线程,虚拟机因而可以更多依赖操作系统的线程调度和管理机制。

后台机制

iOS系统:伪后台

  • iOS4:iOS开始拥有多任务功能,按home键以后,程序转入后台,以墓碑的形式保存在内存中,用户可以快速恢复。iOS多任务界面列出的应用仅仅是近期使用过的,而并非真正在后台运行的程序。仅有特殊应用可以在后台真正运行,比如音频播放、位置服务等。

  • iOS7:标志着伪后台到智能后台的转变。手机锁屏后,后台应用很快被暂停,再次唤醒后,应用继续运行。

Android系统:真后台

  • 同Windows操作系统相似,将应用保留在RAM中,即安卓所有软件在硬件条件许可的情况下,可以实现后台甚至多窗口模式。

  • 安卓的应用都是带有独立虚拟机的,即每打开一个应用,对应会打开一个独立的虚拟机,每个应用具有自己的进程和内存空间,但需要更多的内存。

指令权限优先级

iOS系统ui指令

  • iOS系统中的ui指令具有最高权限,ui渲染采用实时优先级

  • iOS系统响应顺序依次为:(从上到下)触摸层、媒体层、核心服务层、操作系统层。

  • 用户触摸屏幕后,iOS系统会首先激活屏幕,然后才是媒体、服务及架构。

Android系统数据处理指令

  • 优先级响应层级:(从上到下)应用层、架构层、系统库、内核架构。

  • 其中最高权限指令为数据处理指令,而其ui渲染遵循传统电脑的主线程普通优先级,触摸屏幕后安卓系统会首先激活应用、框架,然后屏幕,最后才是核心架构。

开发

iOS:objective-c

  • iOS编程语言为objective-c,具有专一性强、效率高的特点;

  • iOS系统优化较好,gcc编译出的代码被苹果转为iOS架构优化到了极致,无需虚拟机,执行效率高。

  • iOS产品的封闭性,底层硬件稳定、单一,使得其应用程序得以拥有极高的硬件利用率,保证了应用开发本身与硬件产品的完美结合。

Android:java

  • 安卓的编程语言是java,通用性强,但效率低。

  • 安卓系统需要虚拟机运行,效率低。

  • 安卓生态硬件变化相对频繁,开发成本较高,收益慢,同时为了兼顾通用,不得不向软硬件协同开发设计低头。

安全管理

在硬件和软件的方面都使用了许多安全功能,采用安全启动、触控ID,面部ID,非执行记忆体,加密钥匙圈,应用程序保安,双重身份认证等功能,更好地保护消费者的安全。

开放性和普及性,使得一些病毒和恶意程序对其的攻击也随之而来。安卓系统的更新问题同样是大多数病毒攻击的方面,由于最新版本系统的普及率不高,还有很多一部分用户在使用较低版本的系统,病毒会从这些版本的漏洞攻击。

系统更新

几乎50%的iOS设备都运行最新版本。安卓设备运行最新版本占总数的比重就很少了,旧系统的使用者仍占大多数。