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

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

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