和前辈 OS 9 相比,OS X 算是一个技术奇迹。整个操作系统从内至外全部重新设计了,而且改头换面成为了目前最具创新性的操作系统。不论是图形用户界面(GUI)还是底层的编程 API 接口,OS X 的很多特性都仍然算是创新的,而且很多特性正在快速地向 Windows 和 Linux移植(甚至可以说是被抄袭)。
苹果的官方OS X和iOS文档展示了一种非常优雅分层的方法,当然这个层次结构有一点过于简化:
- 用户体验层:包括 Aqua、Dashboard、Spotlight 和辅助功能(accessibility)等。在 iOS 中,用户体验层包括 SpringBoard,同时还支持 Spotlight。
- 应用框架层:包括 Cocoa、Carbon 和 Java。而在 iOS 中只有 Cocoa(严格地说应该是 Cocoa的衍生品 Cocoa Touch)。
- 核心框架:有时候称为图形和媒体层。包括核心框架、Open GL 和 QuickTime。
- Darwin:操作系统核心——包括内核和 UNIX shell 环境。
在这些层次中,Darwin 是完全开源的,是整个系统的基础,并提供了底层 API。而上面那些层次则是闭源的,属于苹果私有的知识产权。
简化到这个抽象程度时,两个系统的架构都可用这幅图表示。但是深入其中,还是可以发现差别的。例如,两个系统的用户体验层是不一样的:OS X 使用的是 Aqua,而 iOS 使用的是 SpringBoard。框架大体上是相似的,但是 iOS 包含一些 OS X 不包含的框架,OS X 也包含一些 iOS 不包含的框架。
尽管图 2-1 很好看也很整洁,但是太简化了,无法满足我们的需求。每一层都可以进一步分解为多个组件。本书关注的主要内容是 Darwin,而 Darwin 本身并不是一个单层的组件,而是一个层次化的架构,如图 2-2 所示。
这幅图揭示了一个恼人的事实:XNU实际上是由两种技术混合在一起的:Mach和BSD,此外还添加了一些其他的组件,主要是IOKit。意料之中的是,苹果提供的简图和文档都没有达到这个细节层次。事实上,苹果几乎不愿意承认Mach的存在。