Bsd

BSD 和 GNU/Linux 使用者空間之間的主要區別是什麼?

  • June 14, 2013

我在 Unix 和 Linux 上閱讀了很多關於 BSD 和 GNU 等的內容。但我仍然不明白 BSD 和 GNU 使用者空間之間有哪些實際的、實際的區別,儘管它們經常被提及。有人可以詳細說明嗎?

在回答時,請充分解釋歷史聯繫,記住我還沒有活到足夠長的時間來經歷過 GNU/Linux 不是主流 UNIX(OS X 除外)的時期。

術語“使用者空間”可以在不同的上下文中指代許多事物,但在這裡我將“GNU 使用者空間”與“BSD 使用者空間”解釋為預設的、隨發行版提供的最小程序集。

最大的主要區別在於兩個使用者區以完全不同的原始碼開始。GNU 貓原始碼 NetBSD 貓原始碼。從這個概念簡單的程序中,您可以看到 NetBSD 的 cat 使用傳統的單字母命令行標誌。GNU 程序往往有單字母標誌,但也有--something-long類型選項。GNU 程序也傾向於 POSIX 兼容性。

在某些情況下,原始碼的差異將賦予兩個使用者區不同的行為。

它看起來也像 NetBSD(至少)使用它自己的 libc 版本,標準 C 庫。我在這裡不知所措,但是 libc 和動態連結奇怪地相互關聯。同樣,不同的原始碼會導致不同的行為。

我認為作為一個 shell 使用者,你會發現它的ps行為會有所不同,並且ls可能會給你帶來與你習慣的稍有不同的輸出。如果您使用命令行標誌的--long-option類型,您必須為某些程序找到等效的命令行標誌。

從歷史上看,我的理解是 BSD 使用者空間更直接地從 V6 和 V7 Bell Labs Unix 通過 32V 埠下降到 VAX 硬體。GNU 使用者空間較新,至少在某種程度上是為了回應 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 使用者空間之間至少存在概念上的相似性,但極端情況肯定是不同的。

引用自:https://unix.stackexchange.com/questions/79355