V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zaizaizai2333
V2EX  ›  macOS

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

  •  
  •   zaizaizai2333 · 6 天前 · 1587 次点击
    XNU: https://github.com/apple-oss-distributions/xnu

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

    Mach 算是一个全新的内核,完全没有版权问题,而且微内核的概念,消息驱动,更好的多进程支持,当时也代表了先进的技术方向。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2582 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:29 · PVG 22:29 · LAX 07:29 · JFK 10:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.