我读到Mac和bsd是相关的。它们之间的关系有多密切。Mac OS X软件可以调整并安装在BSD上吗?
发布于 2010-08-10 10:37:02
回到OSX10.4的日子里,我花了一些时间来写一个OS的VFS。在那些日子里,在内核的主要子系统中,只有网络堆栈和VFS仍然是真正的BSD。当时,甚至VFS也被部分重写,以使其更加模块化(所有BSD VFS数据结构都变成了不透明的指针,API是通过所谓的KPI函数实现的)。我相信网络堆栈也是这样的。在userland的界面上也有一层薄薄的层,这使得OS在userland程序中看起来像BSD。
其他的一切都被重写或替换了:内存管理、进程管理等都来自于Mach微内核;设备驱动器子系统是由Apple从头开始编写的。
在用户端编程方面,OS非常类似于BSD,为BSD编写的程序应该很容易移植。然而,OS有许多在BSD中不可用的API。其中包括几乎所有与用户界面相关的东西--图形、声音等。还有其他一些界面在BSD中是不存在的,比如启动API,这是OS X启动后台进程的首选方式。
发布于 2010-08-10 13:04:29
维基百科的BSD article是好的(而且符合我自己的理解,这是有价值的)。它说,构建苹果Mac的达尔文系统是4.4BSD-Lite2和FreeBSD的衍生系统,并指出4.4BSD是伯克利参与的最后一个版本。
所以,Darwin是您能得到的最好的BSD (就像所有其他BSD一样!)。OS指的是发行版中那些不是开源的部分,主要是GUI,但包括各种框架,任何依赖这些框架的东西都不能移植。
作为一个整体,OS是一个UNIX 03系统。这相当于成为一个真正兼容POSIX的系统(而不是类似于POSIX)。
正如其他答案所指出的那样,对于任何有丰富unix经验的人来说,OS的用户区部分并不令人惊讶,而且我在OS上构建可移植的unix软件几乎没有任何困难。
相比之下,操作系统的非用户部分则非常不同。苹果似乎乐于在这些领域进行创新。我认为(但我不是很肯定)这些变化是正式的达尔文的一部分。最明显的区别之一是launchd已经取代了cron、at、inetd和许多启动基础设施。
发布于 2010-08-10 05:20:20
如果Mac软件使用苹果专有的显示库Cocoa (如果它在Mac上使用GUI运行,并且不需要启动X服务器),那么在正常的BSD系统上运行代码可能会出现一些问题。
如果您的代码只使用POSIX指定的函数,它将干净利落地移植到Linux、BSD甚至Windows。
确实,Mac和BSD是相关的。尽管它们拥有不同的内核,但它们拥有共同的祖先和重要的用户代码。显然,我不能量化“有多接近”--这是主观的。
https://stackoverflow.com/questions/3446231
复制相似问题