智能手机虽说是移动电话,但我们完全可以将其作为小型化的电脑来思考。这样一来也能够显示出智能手机OS的高性能。我们首先一起来回顾下智能手机OS的历史。

  OS的黎明期

  其实在很早之前就已经有这样的想法,即在像智能手机这样可以便利携带的小型电脑终端上运行OS。大约20年前左右,在美国的拉斯维加斯举办的世界最大的电脑相关产品展示会“COMDEX”上,日本索尼公司开发的当时称之为“MagicjLink”的携带型信息终端吸引了很多的关注(图1)。这款终端并不仅仅是一款用来记笔记和日程规划的电子帐本,当时已经具备了通信功能还可以收发邮件和搜索信息。

  图1:图片上部的是MagidLink设备,下面部分为键盘。液晶显示也是单色的。

  MagicLink是索尼公司的产品,但终端的本质是能够在这台终端上运行的OS。这就是由美国的苹果公司的工程师们开发出来的称之为“MagicCap”的OS(图2)。因为在那个年代“通过OS商业交易是件大生意”,所以有各种各样的OS被发布。众所周知的Windows 95也是在那一年发布的。

  图2:MagicCap OS的显示画面。起动终端后就会进入图片所示的界面。包括电话和记帐以及笔记功能。用笔触摸就可以启动各个APP。其中的“In和Out”代表的是邮箱。

  这款OS是由苹果的工程师开发,日本的制造商负责终端生产。

  苹果的工程师只负责开发了OS,硬件部份是由日本的制造商等外部公司开发出来的。苹果公司还因此设立了“General Magic”这样的一家子公司。这家公司主要负责推进MagicCap的开发和为日本的制造商提供帮助。索尼公司和现在的松下以及三菱等公司以MagicCap终端的开发为名制造出了最初的一款产品即索尼公司的MagicLink。

  苹果公司的工程师开发的MagicCap作为“移动OS”是具有划时代意义的。但是MagicCap最终却以失败告终。因为这款终端根本卖不出去。硬件的处理能力和重量以及价格等等在当时都成为了问题。要知道那个时代网络还不是一般人可以使用的。

  为MagicCap设想的网络和那个年代即1980年的电脑使用的网络是一样的。而网络和Windows95的爆发性普及却是在那之后的一年才开始的。

  Android之父

  实际上在General Magic公司负责MagicCap开发的工程师中有一位叫作Andy Rubin的年轻人。

  这名年轻人在General Magic公司解散一年之后创立了一家面向移动终端的OS开发的创业公司。和General Magic公司一样,硬件的开发交由外部公司,本公司集中精力于OS的开发。但是和General Magic公司只向自己的合作公司提供OS不同的是,Andy Rubin的公司免费向其它公司提供OS和APP开发环境。

  由Andy Rubin创立的公司正是现在的“Android”。后来这家公司被美国的Google公司收购,而Android这一公司名也就只能作为OS的名称而保留了下来。现在被称之为Android之父的Andy Rubin在公司被收购之后留在了Google公司并且负责Android业务(现在负责机器人的开发)。

  iOS之父

  如果说Android之父是MagicCap的开发者Andy Rubin,那么能称得上是“iOS之父”的又是谁呢?

  实际上苹果公司在推出MagicCap终端的几年前就已经销售一款叫作“Newton”的小型终端。但是遗憾的不论是设备还是开发环境当时都非常昂贵最终没有普及开来。

  现在的iPhone的OS“iOS”的先祖即不是来自苹果公司开发出来的Newton也不是来自苹果子公司开发出的MagicCap,而是另有来源。是苹果的创始人Steve Jobs。

  General Magic公司正在开发MagicCap的时代,作为苹果公司创始人的Steve Jobs从苹果公司离开,并且创立了“NeXT Computer”这家公司,并且开发出了一款叫作“NeXT”的高性能电脑。与此同时开发了一款叫作“NeXTSTEP”的OS。

  NeXTSTEP是通过叫作“ObjectOriented”的新型方法开发出来的一款OS。NeXTSTEP的APP通过“ Objective-C”这种新的编程语言来开的。 Objective-C不仅可以使APP开发变得更加有乐趣而且性能非常高,是一种具有划时代意义的编程语言。

  虽说从技术上来讲是绝佳的,但是结果却和MagicCap一样,NeXT电脑最终在商业上也没有获得成功。但是NeXT并没有消失,而是被苹果公司收购作为苹果公司的技术而被保留下来。

  那个年代的OS

  那个年代的电脑不论是Macintosh还是Windows都尚不稳定,使用过程中会突然出现重启,电脑突然出现问题,软盘或硬盘出现故障导致数据无法读写的情况并不少见。不论是微软还是苹果公司都因此伤透脑筋。

  故障最大的原因在于OS上的应用的运行结构。当时电脑用的OS还处于比较原始的状态。在电脑运行的所有软件只能一个一个地按顺序利用CPU。CPU同时只能执行一个程序命令。

  你可以想象一下只有一位收银员的超市的客户排队情形。把客人想象为APP和OS,收银员是CPU就可以很好地理解了。某个应用在运行的时候包括OS在内的其它软件都得停止,等待CPU空闲下来。

  并且当时的OS已经停在收营员的前面了,但是那些不受控制的APP却停不下来。这些不受控制的APP一直占用着CPU,导致OS本身不能使用CPU,OS自然也就无法运行。

  微软计划通过开发一款叫作Windows NT的新型OS来处理这种故障。具体来讲就是通过采用“preemptive multitasking”这一结构来使系统达到飞跃性稳定。

  简单来说“preemptive multitasking”就是通过在短时间内让所有的APP都强制停止,而让其它的APP运行的一种结构。以刚刚超市的例子来讲,“在收银员前面停留的时间设定为1人10秒,短时间之内立即就可以切换到其它人。”

  也就是说在收银员处需要花1分钟以上的人必须要在收银员处按顺序排6次以上的队。这样一来虽然对于花时间长的人而言变得麻烦了,但是却不再会因为一个人不遵守规定而出现死机现象了。Windows NT就是采用这样的一种结构。

  另一方面苹果公司希望通过采用NeXTSTEP的技术来强化Macintosh的OS。NeXTSTEP和Windows NT一样也采用了“preemptive multitasking”这一技术。而NeXTSTEP是以“UNIX”为基础开发出来的,而UNIX可以回应“preemptive multitasking”。NeXTSTEP和Windows NT一样可以稳定地运行正是苹果公司收购NeXT的原因。就这样Steve Jobs再次回归苹果公司。

  以NeXTSTEP为基础开发出来的OS叫和“Mac OS X”(图3)。而APP的开发使用“ Objective-C”这一点也因此保留了下来。而“Mac OS X”也因此作为iPhone的OS的基础而被采用,这样一来才产生了“iOS”。

  图3:iPhone搭载的“iOS”是以Mac OS X为基础产生出来的。而Mac OS X又是以Jobs创立的NeXT Computer的“NeXTSTEP”为基础产生的。

  现在我们使用iPhone的时候,画面上能够看得到的部分,例如“设置”和Home画面等等都是在Mac OS X的基础上再次添加进去的,只不过是iPhone的表面的软件而已。

  iOS的本质部分是jobs亲自开发的现在仍在延续着的NeXTSTEP和Objective-C。随着iPhone的普及Objective-C的知名度也变得很高。如果去书店查看关于编程类的书籍的话,一定可以看到很多很多的Objective-C的书籍呈现在那里。

  苹果子公司的技术人员创造了Android,而离开苹果公司后的乔布斯的技术成了iOS的来源基础。这多少让人觉得有些讽刺。这也是苹果一直将安卓列为侵权产品的缘由。苹果方面表示,Android系统创始人Andy Rubin有关Android系统的理念之一诞生于他供职苹果期间。另外当时时任谷歌CEO的施密特为苹果董事会成员,乔布斯认为安卓系统赤裸裸剽窃苹果技术。HTC、三星等也都成为了苹果起诉的对象。

一篇文章让你读懂iOS和Android的历史起源的更多相关文章

  1. 一篇文章让你读懂Pivotal的GemFire家族产品

    一篇文章让你读懂Pivotal的GemFire家族产品 学习了:https://www.sohu.com/a/217157517_747818

  2. 一篇文章教你读懂Makefile

    makefile很重要      什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professiona ...

  3. 一篇文章带您读懂List集合(源码分析)

    今天要分享的Java集合是List,主要是针对它的常见实现类ArrayList进行讲解 内容目录 什么是List核心方法源码剖析1.文档注释2.构造方法3.add()3.remove()如何提升Arr ...

  4. 就这?一篇文章让你读懂 Spring 事务

    什么是事务 ▲ 百度百科 概括来讲,事务是一个由有限操作集合组成的逻辑单元.事务操作包含两个目的,数据一致以及操作隔离.数据一致是指事务提交时保证事务内的所有操作都成功完成,并且更改永久生效:事务回滚 ...

  5. 一篇文章让你读懂 OpenStack 的起源、架构和应用

    OpenStack 是一个面向 IaaS 层的开源项目,用于实现公有云和私有云的部署及管理.拥有众多大公司的行业背书和数以千计的社区成员, OpenStack 被看作是云计算的未来.目前 OS 基金会 ...

  6. 一篇文章教你读懂UI绘制流程

    最近有好多人问我Android没信心去深造了,找不到好的工作,其实我以一个他们进行回复,发现他们主要是内心比较浮躁,要知道技术行业永远缺少的是高手.建议先阅读浅谈Android发展趋势分析,在工作中, ...

  7. 一篇文章带您读懂Map集合(源码分析)

    今天要分享的Java集合是Map,主要是针对它的常见实现类HashMap进行讲解(jdk1.8) 什么是Map核心方法源码剖析1.文档注释2.成员变量3.构造方法4.put()5.get() 什么是M ...

  8. 一篇文章让你搞懂 SSL 证书

    关于结婚这件事 那天和同事讨论到底什么才算是真正的「结婚」?这种话题本来是极其不应该存在的.传统意义的领个证书,办个婚礼.吃吃喝喝,但随着社会各族人民身心发展进化,原本那些繁琐流程简直是反人类,貌似现 ...

  9. 五分钟学Java:一篇文章带你搞懂spring全家桶套餐

    原创声明 本文首发于微信公众号[程序员黄小斜] 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 什么是Spring,为什么你要学习spring? 你第一次接触spring框架是在 ...

随机推荐

  1. UOJ Round #1 题解

    题解: 质量不错的一套题目啊..(题解也很不错啊) t1: 首先暴力显然有20分,把ai相同的缩在一起就有40分了 然后会发现由于原来的式子有个%很不方便处理 so计数题嘛 考虑一下容斥 最终步数=初 ...

  2. 详解如何在 Linux 中安装最新的 Python 3.6 版本

    # 下载源码包安装,先装wget,或curl. yum install wget # 再安装解压缩和编译环境: yum install zlib-devel bzip2-devel openssl-d ...

  3. docker swarm学习命令

    引用自:https://blog.csdn.net/wanglei_storage/article/details/77508620 引用自:https://www.cnblogs.com/wj563 ...

  4. Python int 中 add abs 方法

    1+1 实际等于1.__add__(1) __abs__ 取绝对值

  5. thinkphp中AJAX返回ajaxReturn()方法分析

    本文分析了thinkphp中AJAX返回ajaxReturn()方法.分享给大家供大家参考,具体如下: 系统支持任何的AJAX类库,Action类提供了ajaxReturn方法用于AJAX调用后返回数 ...

  6. 040 关于hive元数据的解析

    一:原理 1.整体原理 找到数据库 找到表 先找分区表,然后不找SDS表了,先去找PARTITIONS表,根据这张表的SD_ID找对应的HDFS路劲 再普通表,直接根据SDS表的中SD_ID找到对应的 ...

  7. linux 重要笔记

    nginx 服务器重启命令,关闭   nginx -s reload  :修改配置后重新加载生效 nginx -s reopen  :重新打开日志文件nginx -t -c /path/to/ngin ...

  8. HDU 2048 神、上帝以及老天爷 【递推】【错排】

    题目链接 Problem Description HDU 2006'10 ACM contest的颁奖晚会隆重开始了!为了活跃气氛,组织者举行了一个别开生面.奖品丰厚的抽奖活动,这个活动的具体要求是这 ...

  9. 基于Vue.js的uni-app前端框架结合.net core开发跨平台project

    一.由来 最近由于业务需要要开发一套公益的APP项目,因此结合所给出的需求最终采用uni-app这种跨平台前端框架以及.netcore快速搭建我们的项目,并且能做到一套代码跨多个平台. 当然在前期技术 ...

  10. grant 权限 on 数据库对象 to 用户

    grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to common_ ...