Mac OS X和BSD有多紧密相关?

Boo*_*ean 46 unix macos operating-system kernel linux-kernel

我读到Mac OS X和bsd是相关的.他们有多紧密相关.可以在BSD上调整和安装Mac OS X软件吗?

Jer*_*myP 31

回到OS X 10.4的时代,我花了一些时间未能为OS X编写VFS.在那些日子里,在内核的主要子系统中,只有网络堆栈和VFS仍然是真正的BSD.那时,甚至VFS也被部分重写以使其更加模块化(所有BSD VFS数据结构都成为不透明的指针,而API则通过所谓的KPI函数).我相信网络堆栈的方式是一样的.在userland的界面上还有一个薄层,使操作系统看起来像BSD到用户程序.

其他所有东西都被重写或替换:内存管理,流程管理等来自Mach微内核; 设备驱动程序子系统是Apple公司从头开始编写的.

在用户态编程方面,OS X与BSD非常相似,为BSD编写的程序应该易于移植.但是,OS X有很多在BSD中不可用的API.这几乎包括与用户界面有关的一切 - 图形,声音等.在BSD中还有其他接口,例如启动API,这是OS X启动后台进程的首选方式.


Nor*_*ray 20

维基百科的BSD文章很好(并且符合我自己的理解,这是值得的).它说,构建Apple Mac OS X的系统Darwin是4.4BSD-Lite2和FreeBSD的衍生产品,并指出4.4BSD是Berkeley参与的最后一个版本.

所以,达尔文就像你能得到的BSD一样(就像所有其他的BSD一样!).OS X指的是分发中那些非开源的部分,主要是GUI,但包括各种框架,依赖于这些部分的任何东西都不可移植.

OS X作为一个整体是UNIX 03系统.这相当于一个真正的POSIX兼容系统(而不是像POSIX一样).

正如其他答案所指出的那样,对于拥有大量unix经验的人来说,操作系统的用户区部分并不令人惊讶,而且我很难在OS X上构建portable-unix软件.

相比之下,操作系统的非用户区部分非常不同.Apple似乎愿意相当愉快地在这些领域进行创新.我认为(但我不是肯定的)这些变化正式成为达尔文的一部分.最明显的区别之一是launchd取代了cron,at,inetd和大部分启动基础设施.


Bor*_*lid 7

如果在Mac软件使用可可,苹果公司的专用显示库(这,如果它在Mac上运行一个GUI,也不需要启动X服务器),那么你可能需要在运行正常的BSD系统的代码中的一些问题.

如果您的代码仅使用POSIX指定的函数,它将干净地移植到Linux,BSD甚至Windows.

Mac OS X和BSD确实是相关的.虽然它们具有不同的内核,但它们共享共同的祖先和重要的用户区代码.显然,我无法量化"多近" - 这是主观的.


Chr*_*zig 5

Mac OS XBSD Unix 的一种。正如 Borelaid 已经指出的那样,这并不一定意味着将 Mac 应用程序移植到其他版本的 BSD 会很容易甚至易于管理,远不如其他常见的 BSD 版本。他们每个人都带来了自己的细节,而 OS X 比大多数人都多。

将程序从其他BSD 风格移植到 OS X 也涉及工作,并不总是工作(顺利或根本),但通常更直接。