《iOS三问》 -- Mac OS 小史记

如果我们现在讨论计算机与操作系统谁先有之这个问题,就像是在讨论先有鸡还是先有蛋一样,你即可以说ENIAC诞生在操作系统出生之前,也可以说早在计算机制作之前冯诺依曼就已经设计出了程序与系统方案。但是无可争议的是,计算机系统与操作系统一直都是紧密联系不可分割的,比如我们今天要共同学习的Mac OS就是一套运行于苹果Macintosh系列电脑上的操作系统,它伴随Macintosh电脑而产生,是首个在商用领域成功的图形用户界面。

Macintosh就是我们今天常说的Mac电脑,关于Mac的历史,推荐大家看看池大写的《人生元编程》(此文章访问比较慢,建议感兴趣的童鞋买此书看看)。Macintosh的项目经理叫杰夫·拉斯金(Jeff Raskin),是一位技术牛人,是苹果的第31位员工。

拉斯金在自己的博士论文里写着,计算机应该是给人用的,不仅仅是给极客黑客各种客用的,除了神秘的命令行,还得有图形界面。所以他对世界宣布:“I have a dream,那就是 为大众制造价廉物美的电脑”!
想到做到,1979年,拉斯金说服了当时苹果公司的管理者迈克·马库拉,成立了一个小规模的项目组用来研发廉价的、同时具备图形界面和命令行的电脑.

从中我们可以看到,当时Mac OS的目标是“易用性”,我认为,当时的他确实达到了。

1 昔日经典 – Mac OS Classic

Mac OS 在 OSX之前被称之为Mac OS Classic,这是《深入解析MAC OSX & iOS操作系统》书里说的。我觉得Classic这个词很值得玩味,不知是否是作者自身或后人对之的称呼,因为这个词即说明了当时这个Mac OS的老态与陈旧,也表明了此开山之作留下的经典。实质上,最初搭载在Macintosh上的Mac OS的命名代码为System xx,比如System 1.0就含有桌面、窗口 、图标、光标、菜单和滚动条等项目(这些控件的发明在今天看起来没什么,已经习以为常了,但是在整个UI发展史来说,我认为是开天辟地的)。

ios-system-os-system

直到System7.5之后,System 系列才正式改名为Mac OS。我们可以从下图看到,其界面更加色彩缤纷与华丽了。

ios-system-os-classic

这里有个有趣的小插曲我得提一下,哈哈

Mac OS 9 是Mac OS 8.6的改进版本, 1999 年10月23 日发布。2002年,Mac OS 9.2发布。在2002 年5月, 苹果计算机公司在加利福尼的亚圣约瑟召开全世界开发商会议, CEO史蒂夫恶搞了一下: 他穿上黑色西装为OS 9进行了一个葬礼。此意目的是宣布苹果计算机公司将停止OS 9 的所有发展。 Mac OS 9.2.2 是Mac OS 9 的最终版本, 这是一款经典的操作系统。

1.1 Mac OS Classic 的问题

正如其名Classic一样,此系统终究轮为“经典”,因为其中还是存在不少的弊端。

首先,他是协作式多任务操作系统。这是啥意思呢?就是说 一个任务得到了 CPU 时间, 除非它自己放弃使用 CPU ,否则将完全霸占 CPU。也就是说,他要求为之写代码程序员个个聪明善良,在做完自己任务后主动让位,保证系统的高效。这个想法是优美的,但是现实却是非常骨感~如果系统上运行一个流氓程序,永远不释放自己的CPU时间,那么别人就别想玩了。

2 NEXTSTEP

NextStep、NeXTstep还是NEXTSTEP? 无所谓了,反正这是乔帮主1985年离开苹果后所创立公司的产品。这家公司叫NeXT,产品就是NeXT计算机及其上运行着的专有操作系统NEXTSTEP。即使是没有搞Macintosh,乔帮主还想着个人PC与操作系统,可见他对此真是真爱啊。

而这里我觉得比较有意思的就是,虽然乔布斯并不是程序员,但是他老人家弄出来的技术活还真是另我佩服(反正我觉得)。不信?你看看他出来单干搞的NeXT:

  1. NEXTSTEP采用Mach微内核系统,由卡内基梅隆大学开发;
  2. 使用的开发语言是我们今天无比熟悉的Objective-C,这就难怪我们今天用的很多基础类以NS开头了(NextStep嘛)。
  3. 面向对象的思想贯穿整个操作系统。提供了很多框架(framework)和工具包(kit)。开发都使用这些对象库快速开发GUI,这些对象都基于NSObject。
  4. 应用程序和库以自包含的Bundle形式发布。
  5. 设备驱动开发环境也是面向对象的框架(DriveKit)。

当然他还有其它牛逼之处,比如系统采用48x48的全彩icon,是当时最大最细致的位图标系统等。

ios-system-os-nextstep

我们可以发现,现在无论是OSX还是iOS,都有大量的NEXTSTEP的影子。但是拥有如此牛逼的系统,Next怎么会混到要被苹果收购的地步呢?百度知道上有个回答我觉得有那么点意思(去看看)

但是,无论如果,历史就是这样。虽然Next混不下去了,但是苹果也混得不怎么样,危难之中,苹果想到了乔布斯 – 于是就发生了我们后面熟知的事情 – 乔帮主重回苹果撑舵,并且带来了他最爱的NEXTSTEP操作系统。

3 进化与蜕变 – 达尔文

这也许是一个很有趣的角度,但事实还真往往这样,就是我们从一个产品的名字往往就可以看出其作者对之赋予的寄望。随着乔帮主带来NEXTSTEP,苹果对其原有的Mac OS进行了彻彻底底的重构。最终,Classic Mac OS与NEXTSTEP结合,产出了OS X,或者更准确的说,其实应该是NEXTSTEP慢慢结合Mac OS的优点而成(因为OSX的核心组件 – Cocoa、Mach、IOKit、Xcode等都来自NEXTSTEP)。其内核代号就是 – Darwin(达尔文)。

“弱肉强食,适者生存”,这个代号仿佛在向世人述说着达尔文的这个理论。这两个系统 – 一个有着伟大的GUI但设计糟糕,一个设计很棒但是GUI平淡 – 最终融合而成一个集美貌与智慧于一身的全新操作系统。

OSX系统的发展历史我这里就不用文字累赘了,我将其总结在如下的脑图中。后面如果有新的系统与功能出现,我会在本文后再作添加。

4 走向移动 – iOS

最早的iOS版本名为”Alpine”(有玩越狱的朋友应该会猛然醒悟,这不就是默认root的密码吗~),发布于2007年,发布时代码为”Heavenly天堂”。那之后,随着iPhone销量的一发不可收拾,苹果也保持了基本每年发布一个新系统并将版本号加1的传统。

从本质上看,iOS实际上就是适配手机功能的Mac OSX,但是他们之间又有些显著区别:

  • iOS基于ARM架构。OSX是基于Inte架构的。
  • iOS内核依然闭源;
  • iOS的GUI是SpringBoard,OSX为Aqua(后改为了LaunchPad)。
  • iOS的内存管理更严格,权限也更严(应用程序都跑在沙盒中)。

从中可以看出,苹果竭力将iOS做成一个封闭的系统,我觉得这确实是乔布斯一直所追求的,而其封闭性也确实造就了一个了不起的生态环境。但是,并不是所有人都喜欢这片封装的“天堂”,于是就出现了越狱(jailbreaking)。越狱后用户将拥有最高的系统权限,突破苹果的封锁,比如我们后面很多章的学习,就会用到越狱的系统,在里面做些研究,从而更加生动地了解我们工作的这片土壤。

通过本章的一起学习,我们了解了OSX及iOS的发展史,主要是Mac OS的发展史。我们说,看过去,是为了将来走的更远。在IT研发人员这条路上,其实也适用于达尔文的这套“适者生存”,逆水行舟不进则退,让我们共勉。

5 引用

坚持原创技术分享,您的支持将鼓励我继续创作!