BSD 和 GNU/Linux 用户空间之间的主要区别是什么?

BSD 和 GNU/Linux 用户空间之间的主要区别是什么?

我在 Unix 和 Linux 上阅读了很多有关 BSD 和 GNU 等的内容。但我仍然不明白 BSD 和 GNU 用户区之间有哪些实际的、实际的差异,尽管它们经常被提及。有人可以详细说明吗?

回答时,请充分解释历史联系,请记住,我的寿命还不够长,还没有经历过 GNU/Linux 不是主流 UNIX(OS X 除外)的时期。

答案1

术语“用户区”在不同的上下文中可以指代许多事物,但在这里我将“GNU 用户区”与“BSD 用户区”解释为发行版附带的默认的、最小的程序集。

最大的主要区别是两个用户区以完全不同的源代码开始。GNU猫源代码 NetBSD猫源代码。从这个概念简单的程序中,您可以看到 NetBSD 的 cat 使用传统的单字母命令行标志。 GNU 程序往往有单字母标志,但也有--something-long类型选项。 GNU 程序也倾向于 POSIX 兼容性。

在某些情况下,源代码中的差异将使两个用户区产生不同的行为。

看起来 NetBSD(至少)使用自己的 libc 版本,即标准 C 库。我有点难以理解,但 libc 和动态链接之间有着奇怪的相互关联。同样,不同的源代码将导致不同的行为。

我认为作为 shell 用户,您会发现它的ps行为会有所不同,并且ls可能会给出与您习惯的输出略有不同的输出。如果您使用--long-option命令行标志类型,则必须为某些程序找到等效的命令行标志。

从历史上看,我的理解是 BSD 用户空间更直接地从 V6 和 V7 贝尔实验室 Unix 继承而来,通过 32V 端口连接到 VAX 硬件。 GNU userland 是较新的,至少在某种程度上是为了回应 AT&T 在 80 年代初试图严格保守代码的秘密。 1983 年贝尔系统剥离后,AT&T 试图通过 Unix 来“货币化”。其中一部分是以一种阻止大多数人看到它的方式许可源代码。理查德·斯托曼(Richard Stallman)和其他人对此有疑问。他们的 GNU 项目专门为了创建一个可自由共享的类 Unix 系统而存在。

与此同时,到了 1993 年,AT&T 就 BSD(“B”是加州大学所在的伯克利分校)系统起诉了加州大学系统。伯克利的人们用新代码替换了 AT&T 的所有原始源代码,而新代码至少成为 NetBSD 用户区的祖先。 AT&T 和 UCB 于 1994 年达成和解,透露2004年向公众公布。

当然,至少思想是交叉传播的,因此 GNU 和 BSD 用户空间之间至少有概念上的相似性,但极端情况肯定有所不同。

相关内容