我们知道,iOS的原始名称是iPhone OS,它是一种类似于UNIX的商业操作系统。

而大家也都常说iOS是一个封闭式的系统,为什么这么说呢?因为iOS的系统并未开源,即闭源。

什么是开源?

开源,(Open Source)全称为开放源代码。开源系统即开放源代码的系统。开放源代码意味着大家都可以在其基础上进行修改操作。开源系统则意味着大家都可以修改这个系统。

开源并不代表着可以不重视版权,用户在使用开源产品时,不但需要说明产品来自开源软件和注明源代码编写者姓名,而且还应把所修改产品返回给开源软件,否则所修改产品就可视为侵权。

正因为iOS是闭源操作系统,所以大家不能去修改iOS这个系统,也就导致了现在iOS就是iOS,并没有什么基于iOS定制的第三方操作系统。

但有的用户通过一些手段就可以修改系统文件,达到修改主题等等自己的目的,这个方法类似于Android中的root,在iOS中,我们称之为越狱。

什么是越狱?

iOS 越狱(iOS Jailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用户使用这种技术及软件可以获取到 iOS 的最高权限,越狱软件适用于iPhone、iPod touch、iPad及 Apple TV 第二代上的 iOS 系统。用户越狱完毕之后,可以透过如Cydia这一类包管理器,来安装 AppStore 以外的扩展软件及外观主题,或是完成越狱前不可能完成的动作,如安装Linux系统。

不完美越狱,是对 iOS 系统上越狱效果的一个描述。英文原文为 Tethered jailbreak,意为被"栓住的越狱"。不完美越狱具体表现是经过这种类型越狱的设备无法正常重启手机(失去越狱,部分系统功能失效,甚至白苹果)。

如果要恢复越狱需连接电脑进入DFU并运行之前使用的越狱工具进行引导,以使设备正常重启并开机。不完美越狱后可以安装Semitether插件来避免不完美越狱在紧急情况重启也能正常开机。不完美越狱往往依靠的是iOS设备的硬件漏洞。

说了这么多,iOS给大家的印象就是封闭的操作系统,可为什么有很多人喜欢用呢?因为iOS用起来非常流畅、丝滑。说到这,咱们不得不详细说说iOS。

iOS发展iOS操作系统基本上从2007年诞生以来每年更新一个大版本,每个大版本会相应更新一些新的特性和功能,具体汇总如下

iOS系统架构iOS的系统架构和Android一样,也分了四个模块,从底层到上层分别为Core OS、Core Services、Media、Cocoa Touch,而且四个模块跟Android的四个模块所实现的功能几乎是一一对应的。

Core OS

核心系统层提供为上层结构提供最基础的服务如操作系统内核服务、本地认证、安全、加速等。可以认为是Darwin的系统内核。

Core Services

核心服务层为程序提供基础的系统服务例如网络访问、浏览器引擎、定位、文件访问、数据库访问等,主要包含以下框架

CFNetwork(网络访问)

Core Data(数据存储)

Core Location(定位功能)

Core Motion(重力加速度,陀螺仪)

Foundation(基础功能如NSString)

Webkit(浏览器引擎)

JavaScript(JavaScript引擎)

Media媒体层主要提供图像引擎、音频引擎、

视频引擎框架图像引擎(Core Graphics、Core Image、Core Animation、OpenGLES)

音频引擎 (Core Audio、 AV Foundation、OpenAL)

视频引擎(AV Foundation、Core Media)

Cocoa Touch

可触摸层主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图,包含以下框架

UIKit(界面相关)

EventKit(日历事件提醒等)

Notification Center(通知中心)

MapKit(地图显示)

Address Book(联系人)

iAd(广告)

Message UI(邮件与SMS显示)

PushKit(iOS8新push机制)

iOS为何更流畅

我们在日常使用中经常会听到说iOS的使用比Android要流畅,那么为什么我们会有这种感知呢,实际上这根iOS和Android的工作机制不同有关,下面我们来分析下为何iOS会显得更流畅

1、响应优先级不同

iOS:Touch—Media—Service—Core,最先响应屏幕。

Android:Application—Framework—Library—Kernal,和显示相关的图像处理属于Library,触摸屏幕之后会先激活应用、框架然后才是屏幕。

也就是说iOS对于屏幕触控的反馈优先响应屏幕,所以会给使用者造成iOS反应快的感知,比如同一个应用iOS和Android都是2秒打开的话,iOS会先快速打开APP然后2秒钟后加载完成,而Android则是先2秒钟加载完成后才显示打开APP。虽然总耗时相同,但给用户的感知会是iOS更快。

2、硬件工作配置不同

iOS:基于GPU硬件加速,可以不完全借助CPU或者程序本身,而是通过GPU进行渲染达到更流畅的操控表现。

Android:图形特效大多都要靠程序本身进行加速和渲染,并严重依赖CPU运算和操作,加大了处理器的负荷,从而出现卡顿的问题。(虽然Android高版本系统默认开启硬件加速,但无法像iOS系统一样做到系统层级的加速全部图形特效。

3、开发机制不同

iOS:Objective-C或Swift,编译器为gcc,不要虚拟机在中间插手,执行效率高。

Android:通过Java虚拟机来执行,系统需要占用大量内存来获取执行速度,再加上不定期的内存自动回收机制,直接导致了卡顿现象的出现。(事实上Android在换位ART模式后避免了虚拟机带来的弊端,启动速度已经接近于iOS)

4、系统设计不同iOS:封闭性,所有APP运行对象比较单一,App Store。Android:终端对象参数多变,各Android厂商的应用市场,APP管理混乱。

5、消息推送机制不同

iOS:APNs统一管理,应用不会在后台占用内存。

Android:没有统一管理机制,应用可以一直留在后台,导致内存不足。(虽然Google有官方的GCM推送机制,但国内无法使用,所以国内更多是接入各类的第三方推送,不够统一,而国内的统一推送联盟从成立后就没什么大动作。。。)

浅谈手机系统——iOS相关推荐

  1. 浅谈 unix, linux, ios, android 区别和联系

    浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答. 1.UNIX 和 Linux UNIX 操作系统(尤尼斯), 是一个强大的多 ...

  2. 《浅谈-Android系统越用反应越慢的问题》

    <浅谈-Android系统越用反应越慢的问题> android应用程序和iphone应用程序不一样,用过iphone的都知道,点击图标进入程序后,如果还想用其他程序,必须先按返回退出然后进 ...

  3. android 系统升级 方法,安卓系统怎么升级 浅谈安卓系统更新升级的几种方法

    最近有网友问小编"安卓系统怎么升级?",针对该问题,笔者也在网上查找了下相关资料,不过并没有找到什么有价值的相关介绍,多数都是介绍如何自动升级.或者下载升级版包等等方法,对于一些常 ...

  4. [原创] 浅谈ETL系统架构如何测试?

    [原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...

  5. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service Manager成为Android进程间 ...

  6. 浅谈SpaceBuilder系统的缓存机制_缓存思想

    在前面的文章中也提及到为了提高系统的性能,SpaceBuilder在内部做了大量的工作,而数据缓存就是其中非常高效的处理方式. 我们知道SpaceBuilder采用了多层架构的处理模式,数据通过业务实 ...

  7. 浅谈秒杀系统架构设计

    秒杀是电子商务网站常见的一种营销手段. 原则 不要整个系统宕机. 即使系统故障,也不要将错误数据展示出来. 尽量保持公平公正. 实现效果 秒杀开始前,抢购按钮为活动未开始. 秒杀开始时,抢购按钮可以点 ...

  8. 东方木2020浅谈win10系统还原怎么操作

    编辑:东方木影院 地点:武汉 时间:2020年2月14日 东方木2020浅谈win10系统还原怎么操作,如果电脑物理内存不足时,会导致工作效率非常的低,我们可以调整win10 32位系统虚拟内存来加快 ...

  9. 浅谈 Linux 系统中的 SNMP Trap 【转】

    文章来源:浅谈 Linux 系统中的 SNMP Trap 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前,首先认识一下 SNMP 吧. 简单网络管理协议(Simple Network ...

最新文章

  1. 彻底搞懂机器学习中的正则化
  2. python中os.path.isdir()和os.path.isfile()的正确用法
  3. Linux网络状态工具ss命令操作详解
  4. 《编程之美》(Java实现) :让CPU占用率画直线和正弦曲线(Java实现)
  5. SSM综合练习表结构介绍
  6. Android 实现多个输入框的对话框
  7. 已读服务器返回为空,钉钉考勤显示已读什么意思
  8. 笔记:AIX系统/var/adm/wtmp大文件处理
  9. undefined reference to symbol' pthread_create@@GLIBC_2.2.5'
  10. 快切-开源中文css框架之纯css透明
  11. Javascript特效:进度条
  12. Angular 2 组件之间如何通信
  13. php匹配ubb,php创建属于自己的UBB代码
  14. 斐讯K2 A6版SZU校园网刷机方法
  15. 腾讯笔试题 贪吃的小Q
  16. python键盘控制_python如何直接控制鼠标键盘
  17. agc024F Simple Subsequence Problem
  18. redhat linux 批量改名,CentOS的批量改名命令 rename和prename
  19. Macbook双系统多分区的解决方案
  20. php面试自我介绍结束语,面试自我介绍 结尾 社团招新面试自我介绍

热门文章

  1. matlab定积分怎么输入,Matlab计算定积分的操作内容讲解
  2. 隧道代理ip使用流程
  3. untiy发布webgl开发记录
  4. 文件名、目录名或卷标语法不正确。
  5. Linux磁盘挂载、扩容、删除
  6. JavaSE基础笔记(全)
  7. 计算机管理映像路径,windows任务管理器显示映像路径和命令行设置参考
  8. HTML5系列代码:个人页面
  9. matlab中omega是什么意思_小鸡宝宝考考你南柯一梦中的南柯是什么意思?
  10. 【Win7系统中怎么在我的电脑里面找回摄像头设置】