Linux kernel 和 macOS Kernel 都是基于 UNIX 的,有人说 macOS 就是「Linux 换个了壳」,也有人说由于命令和文件系统层次结构的相似性,Linux 和 Mac 两者兼容。本文系统极客就向大家简要介绍,Linux 内核和 Mac 内核之间的差异和相似之处。
macOS内核
1985 年,由于与 CEO(John Sculley)和苹果公司董事会意见不合,Steve Jobs 离开苹果成立了一家名为 NeXT 的新电脑公司。Steve Jobs 希望快速发布(带有新操作系统的)新计算机,为了节省开发时间和发布周期,NeXT 团队使用了 Carnegie Mellon 大学的 Mach 内核和部分 BSD 代码库来创建 NeXTSTEP 操作系统。
也许 Steve Jobs 继承了在苹果公司大手笔花钱的习惯,NeXT 在财务上一直没能取得巨大成功。苹果此时也曾多次试图(甚至与 IBM 合作)更新其操作系统,1997 年以 4.29 亿美元收购了 NeXT。作为收购交易的一部分,Steve Jobs 也重新回到了 Apple,NeXTSTEP 也因此成为了 macOS 和 iOS 的基础。
Linux内核
与 macOS 内核不同,Linux 不是因为商业目的而创建。相反,它是由计算机学生 Linus Torvalds 于 1991 年作为开源项目创建。最初,Linus Torvalds 为了用上他的新 80386 处理器,所以才开始写 Linux 内核。从 1991 年 8 月在网上发布了他的新内核代码开始,很快就收到了来自全球的代码和资源建议。第二年 Orest Zborowski 将 X Windows 移植到了 Linux,也让 Linux 很快就支持了图形用户界面。
macOS内核资源
macOS 内核官方称为 XNU,根据 Apple 的官方 Github 页面,XNU 是将 Carnegie Mellon 大学开发的 Mach 内核与 FreeBSD 和 C++ 组件结合起来,的混合内核。代码的 BSD 子系统部分 通常在微内核系统中作为「用户空间」服务器实现,Mach 部分则负责低级工作,例如:多任务、受保护的内存、虚拟内存管理、内核调试和控制台 I/O。
与 Linux 不同的是,XNU 内核允许其中的一部分(停止下来)进行维护,而另一部分则继续工作,这也成就了 macOS 内核的稳定性。
Linux内核资源
macOS 内核结合了微内核与 Mach 和 BSD 这样的单片内核的功能,而 Linux 则只是一个单片内核。单片内核负责管理 CPU、内存、进程间通信、设备驱动程序、文件系统和系统服务调用,也就是说它在完成所有事情时都不进行细分。
很多人认为单片内核除了速度慢之外还更容易出错,这让 Linus Torvalds 和其它开发人员引起了很多议论,而 Linux 每年的表现都恰恰与之相反,而且可以向混合内核方向进行优化。此外在 RedHat 的帮助下,Linux Kernel 已经拥有了 Live Patch 能力,允许实时维护而无需重启。
macOS(XNU)和Linux内核之间的差异
- macOS Kernel(XNU)存在时间比 Linux Kernel 长,并且基于「久远」代码库的组合,这非常有利于稳定性。
- Linux Kernel 代码更新,属于从头开始编写并已经在许多设备上使用。
- 分别为 macOS 与 Linux 编写的驱动程序不能互用
- 比较奇特的是 Linux 有一系列 macOS 守护进程,包括 CUPS 打印服务。