为啥苹果不用 freeBSD 作为内核,而使用 XNU/Darwin?而且 XNU 的代码仓库根本没有来自外部的代码提交。

8 天前
 zaizaizai2333
XNU: https://github.com/apple-oss-distributions/xnu

这样的好处是不是避免了 Android 用 Linux kernel 带来的大量无用代码和版本管理的问题?
1632 次点击
所在节点    macOS
10 条回复
Remember
8 天前
XNU 本身就是基于 FreeBSD 的魔改啊。
icyalala
8 天前
steveshi
8 天前
这俩就同源吧,苹果为了自家硬件做了定制
agagega
8 天前
FreeBSD 第一个版本发布于 1993 年,此前只有 BSD ; NeXTSTEP 第一个版本发布于 1989 年。至于为什么没全用 BSD 而用了 Mach ,可能是技术上的倾向或者当时 BSD 对 m68k/ppc 的支持还不够好?
ysc3839
8 天前
NeXTSTEP 开发的时候连 FreeBSD 都没,而且当时 BSD 还有官司问题。再者选 Mach 可能是想要个微内核作为基底,BSD 是宏内核,可能不适合内核模式 GUI 的开发。类似的还有微软的 Windows NT ,也是微内核+内核模式 GUI 等的模式。
xarthur
8 天前
Darwin 现在基本上和 FreeBSD 差不多了,用了大量的 FreeBSD 代码。
saranz
8 天前
@agagega 当时不用全 BSD ,不是因为版权的问题还没吵完么。谁用 BSD 谁就要沾上官司,但是 Mach 作为 BSD 内核的代替,当然是用 March 了。
holulu
6 天前
应该是为了内核模式 GUI
ChaimeLonic
6 天前
苹果的 cocoa 层 GUI 不是用户态的吗?除了依赖的 IOKit 。考虑到当初 BSD 发展现状决定的吧,apple 一直对 GUI 有自己的独特想法就注定它会进行较大程度的改造,BSD 不能很好满足自己的需求,而且 NeXTSTEP 当初技术核心团队就有一位来自 mach 的核心开发人员,再加上那个年代微内核概念很火,其实技术前沿上来看确实没多大必要最下层还得映射到 Mach 的 port 机制,不过是个优秀的工程产物,而且方便移植架构。
seanzxx
6 天前
主要原因是 ATT 和 BSD 的官司吧,那时候 BSD 只能提供给拥有 ATT 授权的企业。

Mach 算是一个全新的内核,完全没有版权问题,而且微内核的概念,消息驱动,更好的多进程支持,当时也代表了先进的技术方向。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1051696

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX