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 各种技术层的关系:

下图是 Mac OS X 的衍生关系图:

最后:Mac OS X 其实就是 Unix 的衍生操作系统,属于 BSD 这个分支

关于 Mac OS X 内核技术来源相关推荐

  1. 开篇和第一章:Mac OS X内核故事之“N国语言”

    开篇声明:       1.写作动机和热情来自两方面:一是自乔帮主回归后,苹果公司经历了从濒临破产到全球市值第一的华丽转身,其产品风靡全球.我本人当了4年的苹果用户,3年的weiphoner,在坛子上 ...

  2. 第二章:Mac OS X内核故事之三位一体:

    第二章:Mac OS X内核故事之三位一体(上)       乔帮主年轻的时候玩high了,弄出了人命,也就是他的女儿Lisa(话说这女儿果然像老爸):       尽管乔帮主一开始不愿意承认这个女儿 ...

  3. 《MAC OS X 技术内幕》读书笔记第一章:MAC OS X的起源

    <MAC OS X 技术内幕>读书笔记第一章:MAC OS X的起源 前言 1 System x.x系列 1.1System 1.0(1984年1月24日) 1.2System 2.x(1 ...

  4. Mac OS X 背后的故事(三)Mach之父Avie Tevanian 1

    1975年,美国罗彻斯特大学纽约分校,一组研究员正在做一个名为RIG(Rochester"s Intelligent Gateway)的项目,它由Jerry Feldman主持设计.RIG的 ...

  5. 通过VsPhere体验MAC OS X

    简介 前几天在论坛中看到了基于MAC OS X下的卡巴斯基杀毒(http://support.kaspersky.com/kavmac?level=2)的图片,惊艳于它的美丽也让我对apple的系统有 ...

  6. Mac OS使用技巧之一:查看Finder中的.bash_profile等系统隐藏文件

    作为一个程序员,经常要配置变量,可能要更改hosts文件,或者你闲着没事儿寻找homebrew给你安装的东西在什么地方.Mac OS的内核是Unix,Linux/Unix系统出于系统安全和用户安全的考 ...

  7. Mac OS X上获取鼠标事件

    原文地址:http://www.keakon.net/2011/11/10/监听MacOSX的全局鼠标事件 Mac OS X下怎么监听全局的鼠标事件呢? 首先不能错过的是Cocoa Event-Han ...

  8. 监听Mac OS X的全局鼠标事件

    因为Mac OS X下没有给力的鼠标手势软件,所以昨天突然想自己实现个玩玩,便研究了一番怎么监听全局的鼠标事件. 首先不能错过的是Cocoa Event-Handling Guide这篇文档.它详细介 ...

  9. Mac OS X 背后的故事(四)——政客的跨界

    文/王越 <Mac OS X背后的故事>系列文章将为大家介绍Mac OS X的发行版本.技术历史.相关人物等内容.本文是系列连载的第四篇. 2000年,美国总统大选,由于选票设计问题,时任 ...

最新文章

  1. RHEL5下安装Xen
  2. 在函数调用中,星号运算符是什么意思? [重复]
  3. linux下安装c/c++环境(gcc/gcc+)
  4. matlab如何创建table,MATLAB table数据结构 首篇
  5. UIViewController与UIView的关系
  6. 一、创建Assetbundle 在unity3d开发的游戏中,无论模型,音频,还是图片等,我们都做成Prefab,然后打包成Assetbundle,方便我们后面的使用,来达到资源的更新。
  7. 前端学习(1315):路由
  8. HTML鼠标点击文字语音播放,10款jQuery+HTML5实现的鼠标点 经过播放音频
  9. 【bzoj3530】[Sdoi2014]数数 AC自动机+数位dp
  10. 开发实现物理加速度移动_Cocos Creator 3D 物理模块介绍
  11. php修改mysql排序_php – 自定义MySQL排序
  12. SPSS分析基础——方差分析
  13. 【GZH逸佳君】简约ppt模板-答辩ppt模板-毕业季ppt模板-说课ppt模板-ppt模板免费下载-ppt模板下载免费版
  14. Centos 7 环境实现内网服务访问
  15. CAN总线测试方法——单通道USBCAN及双通道USBCAN
  16. Spring5笔记【狂神说】
  17. ICO 项目被一刀切后,是时候深入探索区块链技术的应用了
  18. 设计模式09_观察者模式
  19. access9磅字体是多_word字体中几号字与多少磅的对应关系
  20. 中国劳动统计年鉴2004

热门文章

  1. 子类重写父类变量_为什么在子类中不重写超类的实例变量
  2. envoy重试_具有Envoy代理的微服务模式,第二部分:超时和重试
  3. java 程序增加 防盗_防盗Java EE –保护Java EE企业应用程序的安全
  4. 悲观锁 引起死锁_悲观锁定时如何避免可怕的死锁-以及Java 8的一些用法!
  5. java 挥发注解_Java的挥发性修饰符
  6. spring预加载与懒加载_通过Spring将继承树加载到List中
  7. 内存映射文件 写入 卡住_在Java中使用内存映射文件时检测(写入)失败
  8. 带有Spring Boot 2支持的Apache Camel 2.22发布
  9. Java Iterator到Java 8 Stream
  10. jsf tree组件_JSF:在传统组件和时尚性能杀手之间进行选择