现在主流的操作体系有很多,比如计算机体系有Unix,linux,windows,mac os等,手机操作体系分为安卓(基于linux内核),ios,windows phone(和windows电脑是同一个内核)等,这些操作体系从内核角度来讲就分为宏内核(Macrokernel)和微内核(Microkernel kernel)。
从字面意思其实也可以初步的领会,宏内核:宏字代表的就是大、多等特点,那么对应过来就是宏内核的集成的功能多。而微内核呢,从微字我们就可以知道,微内核就是精简的内核,集成的功能相对宏内核来说要少,要实现其他的功能可能需要在内核之外写程序,并且通过内核来调用实现。
Mach(Multiple Asynchronously Communication Hosts) 一个由卡内基梅隆大学开发的操作体系内核,Mach的开发是为了取代BSD的UNIX核心。
Mach 内核的设计目标其中一个是要兼容 Unix 体系。
当初他们的设想是,真正的操作体系可以小编认为一个用户态的程序跑在 Mach 内核上。
Mach 内核开发的时候以 4.3BSD 为基础进行开发。
他们在论文上称这是”为 UNIX 开发的一个新内核”。
Mach 内核开源且无任何 licensing 约束。由此可见任何人都可以免费发行 Mach 内核。
嫌弃传统 UNIX 内核什么都干,过于臃肿。因此 Mark 的设计目标是要取代 UNIX 内核,让 UNIX 跑在 Mach 内核的用户空间里。这个特性在 Mach 3.0 真正实现了。然而众所周知 Mach 内核并不提供文件体系和网络实现,因此依然需要和 UNIX 做大量的数据交换。这种交换的方式就是通过 Mach 的 IPC 通信。而让几乎所有进程都在两个空间之间做 IPC 通信是非常低效的。
因此 NEXTSTEP 体系修改了 Mach 内核的实现,让 Mach 和 BSD 都跑在同样的内核空间上,所谓的混合内核 XNU 出现了,同时让用户空间发起的文件、网络请求等本来要通过 IPC 调用的接口都改成 system call。
Mach 继承卡内基梅隆大学的 Accent kernel,Mach 项目主导人理查德·拉希德曾于微软的研究部门担任高质量人员,后成为微软副总裁。另一位 Mach 开发者阿瓦德斯·特凡尼安(Avie Tevanian)曾是 NeXT 首席程序员,之后担任苹果电脑软件技术部门主管直到2006年。
该项目在1985年启动,并且在1994年由于 mach3.0 的显著失败而告终。然而 Mach 却一个真正的微核。GNU Mach 就是 Mach 的延续,现在 GNU Mach的规划与GNU HURD联系紧密。Debian GNU/Hurd 就是基于 GNU Mach 的。
史蒂夫·乔布斯(Steve Jobs) 1985 年创办的 NeXT 团队使用了卡耐基梅隆大学的 Mach 内核和部分 BSD 代码库来创建 NeXTSTEP 操作体系。
苹果计算机在 1997 年 2 月将 NeXT 买下,NeXTSTEP 成为 Mac OS X 的基础。
Apple 的工程师们开始使用 NeXTSTEP 4.2 作为新 Macintosh OS 的起点,并开始了为期三年的研发,将 Unix 核心的 OS 转变为一般消费者使用的作业体系。此计画的第一个专案的代号为“Rhapsody”。
1999 年 3 月发布 Mac OS X Server 1.0,这是第一个、也是唯一一个商业版本的 Rhapsody,体系核心技术则来自 NeXTSTEP。
2001 年 3 月 24 日,Apple 开始发售第一个正式版本的 Mac OS X v 10.0,由 Yellow Box 为基础开发的“Cocoa”API、图形显示技术“Quartz”以及其他来自 NeXT 的技术,最终与 Rhapsody 整合得到 Mac OS X v 10.0,Rhapsody 演化为 OS X
Darwin 是一种 类 Unix 的操作体系,整合数种的技术,包含开放源码的 XNU 核心 和 Mach 微核心,操作体系的服务和 userland 工具是以 4.4BSD,特别是以 FreeBSD 为基础。Darwin 软件本身来自于 NeXT 公司开发的 NextStep 操作体系的 BSD 层。
2005年5月苹果公司关闭了基于 Intel 架构的 Darwin 的源代码。苹果公司同时宣布,他们将继续完全开放基于PowerPC架构的Darwin的源代码。
Mac OS X 的内核中含有早期 Mach 的组件,Mac OS X 使用混合内核 XNU,XNU 是将卡耐基梅隆大学开发的 Mach 内核和 FreeBSD 组件整合而成的混合内核。
NeXT 不久后释出了NEXTSTEP体系程序开发中用到的API,NeXT将这个组API命名为 OPENSTEP。随后NeXT在1993年中止了硬件业务,转为专注于 OPENSTEP 的软件市场开发上。这里有疑问,到底是命名为 OpenStep 还是 OPENSTEP?
OpenStep 是一组面向对象的 API。1993年,NeXT 和 Sun 公司联合发布的一个针对 NEXTSTEP 体系的标准规范。OpenStep 在自在软件基金会的实现名称称为 GNUStep。除了这些之后还有一个 Linux 版本,命名为 LinuxSTEP。
OPENSTEP 是由 NeXT 开发的一个 OpenStep 的独特实现。OPENSTEP 作为 NeXT 的主要作业体系产品,直到 1997 年被苹果电脑收购。接下来,OPENSTEP 与现存的 Mac OS 的相关技术相结合,产生了 Mac OS X。
NEXTSTEP(官方写法很多种,一开始叫做 NextStep、NeXTstep、 NeXTSTEP,最终才叫做 NEXTSTEP。)是由 NeXT 所开发的操作体系。
NEXTSTEP 是操作体系,又它衍生了一组面向对象的 API,是一种操作体系的标准规范,叫 OpenStep。
OPENSTEP 是操作体系,它一个 OpenStep 的独特实现。
Mac OS X 就是奠基于 OPENSTEP 和 NEXTSTEP 的基础上。
XNU 是内核,由 Mark 和 BSD 体系内核混合构建而成。XNU 最早出现在 NEXTSTEP 中,后来的 OPENSTEP 也是以 XNU 为内核。
Darwin 是操作体系,而且是最为底层的操作体系,称为核心操作体系,由 XNU 和其它苹果技术及相关工具构建而成。Darwin 是在 Mac OS X 中才出现的。
Darwin 首次出现在 1999 发布的 Mac OS X Server 1.0 中,以 XNU 为核心,然而把 4.4BSD 更新成了 FreeBSD 的代码,把 Mark 更新成了OSFMK 的 Mach 3.0 和部分来自 University of Utah 的 Mach 4 项目。
早期苹果甚至提供了 Darwin 安装包,可以小编认为一个独立体系安装到 x86 和 PowerPC 机器上。不过现在只开放源代码了。
严格来说现在我们接触到的 macOS 内核,官方叫做 Darwin,它的核心是 XNU,可以独立安装。严格意义上 XNU 和 Darwin 并不完全相等,较真地讲 XNU 只是 Mach/BSD 部分。在前面的文章里我基本上把 Darwin 和 XNU 当做同义词,这并不严谨。然而根据我的考证,目前 Darwin, XNU 和 macOS Kernel 基本等同于一个意思,只要读者朋友不会产生歧义即可。
Rhapsody 基于 NeXT 的 OPENSTEP 开发,可以认为是 Mac OS X 的过渡产品。
2007 年 10 月 26 日正式发布的 Mac OS X v10.5 (Leopard) 得到 The Open Group 的“Single UNIX Specification”认证,成为正式的 UNIX
最终:Mac OS X 其实就是 Unix 的衍生操作体系,属于 BSD 这个分支