NEXTSTEP的内核和其他系统的区别在于整个内核是围绕Mach这个微内核构建的。而Mach最初来源于罗切斯特大学一个一个实验性项目RIG。RIG的目标是为不同的设备创建一个统一的接口。例如磁带机,打印机,制图机乃至于网络上的另一台计算机在RIG中都是统一的资源。这个计划诞生了Aleph内核,这个内核的特点是所有的进程都可以发送消息通信。每一个进程有一些port可以用来接收信息。如果进程X想要发一个消息给Y,那只需要指定Y的port号即可直接发送。由于消息的目的地并不是进程而是port,这个机制允许一个进程拦截另一个进程的信息,构建更加强大的系统。然而,由于RIG在1975年诞生,运行的硬件有诸多限制,例如没有虚拟内存,对port使用没有保护,以及由于内存限制每条消息最多只能2KB。因此这个项目很快就被搁置了。
随后,一名RIG的研究人员到卡耐基梅隆大学继续做着类似的研究。吸取RIG的经验,以及有了更新的硬件,一个新的内核Accent诞生了。Accent最大的改进是支持了虚拟内存,因此消息没有了大小限制,并且port有了权能作为保护措施。Accent更进一步地将跨进程通信的能力拓展到了网络上,一台计算机可以通过一个中转进程向另一台计算机的进程发送消息而不用担心它在网络的什么位置。然而Accent还是有一些问题,例如它不能支持多个处理器,并且不能兼容Unix的程序,也就意味着Accent没有成熟的生态。
为了进一步修补这些问题,Mach诞生了。Mach相对于Accent加入了完整的多处理器支持,并且要能兼容Unix。最后,开发者希望这个新内核要比Unix内核简单,因为Unix在当时已经有了15年的历史,内核臃肿程度让Mach开发者之一Richard Rashid将它成为“充满了特性或者功能的垃圾场”。因此,Mach使用4.3BSD作为起点,逐步替换掉复杂的Unix内核,并用更加简单的Mach微内核的功能代替。终于,在1986年Mach诞生了。Mach和Accent相比更加完善,但还是保留了从RIG以来就有的消息和port系统用于任务间通信(Mach将进程process称作任务task)。Mach相比Unix也改进了虚拟内存子系统。原本的4.3BSD虚拟内存需要一个连续的物理内存空间映射,而Mach的虚拟内存允许将多个分散的物理内存空间组合在一起使用,并且Mach保留了Accent的CoW技术,让内存使用更加充分。这个虚拟内存子系统的抽象非常完善,以至于理论上应用程序可以用同样的系统调用直接使用另一台计算机的内存而不会注意到任何区别。现在的OpenBSD的虚拟内存子系统就是以Mach的为基础做成的。
在Mach1和2中,由于整个系统是从4.3BSD修改的,BSD和Mach依然在同一个内存空间中,也就是说Mach还不是真正的微内核。从Mach3开始,Mach内核彻底脱离了BSD,BSD成为了一个用户空间程序,而不直接触及硬件。所有的底层调用全部由Mach内核完成。这个版本的Mach将硬件也抽象成了一个可以接收消息的port,让人物和硬件接口统一。此时的Mach内核更像一个虚拟机,可以让直接另一个操作系统运行在Mach内核上。然而,将操作系统运行在微内核上意味着需要在不同的系统之间来回切换,并且Mach使用的IPC机制尽管强大但有着不小的性能开销,因此Mac OS X使用了Mach2的做法,让BSD和Mach内核运行在同一个空间中以减小开销。随着Mach的成熟以及NEXTSTEP的收购,属于OS X的历史即将开始。