《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 OSNEXTSTEP 结合,产出了 OS X (我也是学了这段历史才知道,原来 OS X 中的 X 不是代表着极客的意思。。原来就是 OS 10 啊 @_@),或者更准确的说,其实应该是 NEXTSTEP 慢慢结合 Mac OS 的优点而成(因为 OS X 的核心组件 – 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 引用