我想知道 Unix 和 Linux 之间的实际区别是什么。
- 它们共享同一个内核吗?
- Linux 是基于 Unix 构建的吗?
- 为 Linux 编写的程序可以在 Unix 上运行吗?反之亦然?
答案1
Unix 不是一个东西,而是一个庞大的相关操作系统家族的名称,这些操作系统在不同程度上共享历史和架构。Solaris、DEC Unix、IRIX、HP-UX 都是 Unix 的变体。它们在某种程度上与应用程序兼容,因为它们在不同程度上实现了 POSIX 标准,这意味着它们公开了类似的命令和 API。
它们的内核并不相同,但如果你查看“unix 家族树”,你会看到这些变体如何像生物一样相互进化的有趣历史。也就是说,雀科和燕子不是同一种动物,但它们有很多共同之处。
Linux 是从头开始重写类 Unix 操作系统的。程序是否为某个 Unix/Linux 编写是一个复杂的问题,但在某些情况下是的。
答案2
不,不,是的(来源)
为了真正理解答案,了解这两个操作系统的历史会有所帮助。
Unix 是由 Ken Thompson 在 AT&T 贝尔实验室发明的。他的同事 Dennis Ritchie 也参与了 C 语言的开发,并编写了 C 编译器。多年来,加州大学伯克利分校也贡献了代码,AT&T、Sun、IBM 等公司也做出了进一步努力。
它最终在一系列名为 POSIX 的出版物中被标准化。总体而言,该代码是专有的,因为它的版权归 AT&T 所有,然后出售或授权给其他公司,这些公司多年来对其进行了大量重写,但保留了各种权利。
20 世纪 90 年代出现了两个“自由 Unix”分支。其中一个是Linux,它是一个克隆,其编写方式类似于 Unix,但并不包含任何实际的 Unix 代码。
另一支目前以 NetBSD 形式存在,紧接着是FreeBSD,之后是您可能听说过的其他 *BSD。这些项目与 Linux 略有不同,因为它们是“部分克隆”。它们包含“真正的 Unix”源代码(主要由加州大学伯克利分校免费授权的部分)和一些新编写的“克隆”代码以及其他后来作为重写的一部分或根据需要出现的代码,以支持现代 HW 和现代 Posix 规范。
Linux 之所以更受欢迎,是因为 NetBSD 和 FreeBSD 曾一度卷入 AT&T 和 UCB 之间的一场诉讼。尽管最终 BSD 胜诉,但他们从未从这场拖延中恢复过来,至少在受欢迎程度方面是如此。
因此,Linux 和商用 Unix 没有任何共同的内核代码,尽管商用 Unix 和 *BSD 曾经确实有很多共同之处。来自授权供应商的 Unix 内核包含他们自己编写的代码,也许其中还保留着一些原始的 AT&T 代码。Linux 内核由 Linus Torvalds 和其他作者编写的代码组成。
“Unix 软件”是使用 Posix API 编写的软件,通常可以在所有版本的 Unix、Linux、NetBSD 和 FreeBSD 上运行。理论上,Posix SW 可以在“非 Unix”系统上运行,但效果似乎不太好。如今,“Unix”在技术上是一个商标,但往往被非正式地用作商业 Unix、Linux 和 BSD 系列的名称。
答案3
大多数人谈论 unix 时,他们的意思是“符合 POSIX 标准的类 Unix 操作系统”,Linux 就是如此。
它们共享同一个内核吗?不,Linux 是一个内核,而不是操作系统。从技术上讲,Linux 发行版使用 Linux 内核和 GNU(参见 gnu.org)“用户空间”。用户空间是将大型应用程序和用户任务与内核的低级 API 连接起来的基本程序和库等。
Linux 是基于 Unix 构建的吗?不是,它是一个克隆版本。它旨在为低端台式电脑提供免费、可用的 Unix 版本。
为 Linux 编写的程序可以在 Unix 上运行吗?反之亦然?有时。例如,在 FreeBSD 上,有一个 Linux ABI 模拟器,它基本上可以检测到程序是为 Linux 编写的,并提供一组不同的内核调用。Linux 可以使用类似的东西来运行标准 Unix System V 的东西(或者一些流行的商业版本的 unix),但它很少使用,因为大多数程序都是 POSIX 兼容源代码,并且可以在 Linux 上轻松编译。此外,大多数 unix 二进制程序可直接用于 Linux。FreeBSD 是一个较小的问题,没有这种奢侈。在 Linux 中,从其他系统加载二进制文件的系统最常用于运行 java 程序、windows 程序(尽管这是不明智的)等。
Unix 是一个商标,因此 Linux 不能使用该名称。Unix 是官方的旧版本(尽管有官方版本),不太方便用户使用。大多数其他版本的 unix 设计得稍好一些,但实际效果不一定那么好。事实就是这样。许多曾经使用 Unix 的公司现在都使用 Linux。
如果您想了解各种类 Unix 操作系统之间的差异,请获取 FreeBSD、OpenSolaris 和 Debian 的副本。我之所以特意提到这些发行版,是因为它们更容易比较,尽管其他一些发行版(如 pc-bsd、nexenta 和 ubuntu)可能更出色。
答案4
UNIX 历史这不是你问题的答案,但也许很有趣。