和前辈 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的存在。