Jakie są główne różnice między BSD a obszarem użytkownika GNU / Linux?


38

Dużo czytałem na temat Uniksa i Linuksa na temat BSD i GNU itp. Ale nadal nie rozumiem, jakie są rzeczywiste, praktyczne różnice między obszarami użytkownika BSD i GNU, mimo że często się o nich wspominają. Czy ktoś może opracować?

Odpowiadając, proszę w pełni wyjaśnij historyczne powiązania, pamiętając, że nie żyłem wystarczająco długo, aby doświadczyć czasu, w którym GNU / Linux nie był głównym nurtem UNIX (z wyjątkiem OS X).


2
Tutaj opublikowałem listę różnic w stosunku do GNU / Linux w OS X w środowisku wiersza poleceń: reddit.com/r/commandline/comments/4jydnw/ ...
nisetama

Odpowiedzi:


28

Termin „obszar użytkownika” może odnosić się do wielu rzeczy w różnych kontekstach, ale tutaj interpretuję „obszar użytkownika GNU” vs. „obszar użytkownika BSD” jako domyślny, minimalny zestaw programów dostarczanych z dystrybucją.

Główna główna różnica polega na tym, że dwie obszary użytkownika zaczynają się od zupełnie innego kodu źródłowego. Kod źródłowy kota GNU Kod źródłowy kota NetBSD . Już z tego prostego w koncepcji programu widać, że kot NetBSD używa tradycyjnych, jednoliterowych flag wiersza poleceń. Programy GNU mają zwykle flagi jednoliterowe, ale także --something-longopcje typu. Programy GNU również dążą do zgodności z POSIX.

Ta różnica w kodzie źródłowym spowoduje, że dwie obszary użytkownika będą się różnić w niektórych przypadkach.

Wygląda również na to, że NetBSD (przynajmniej) używa własnej wersji libc, standardowej biblioteki C. Wchodzę tutaj, ale libc i dynamiczne linkowanie są dziwnie powiązane między sobą. Ponownie, inny kod źródłowy prowadzi do różnych zachowań.

Myślę, że jako użytkownik powłoki odkryłbyś, że psdziałałby inaczej i lsmógłby dać ci nieco inne wyniki niż zwykle. W przypadku niektórych programów musisz znaleźć równoważne flagi --long-optionlinii poleceń.

Historycznie rozumiem, że obszar użytkownika BSD schodzi bardziej bezpośrednio z V6 i V7 Bell Labs Unix, przez port 32 V do sprzętu VAX. Obszar użytkownika GNU jest nowszy, napisany przynajmniej w odpowiedzi na próby AT&T, by na początku lat 80. zachować ściśle strzeżony sekret kodu. Po zbyciu Bell System w 1983 r. AT&T próbował „zarabiać” na Uniksie. Częściowo miało to na celu licencjonowanie kodu źródłowego w sposób, który uniemożliwiłby większość ludzi go zobaczyć. Richard Stallman i inni mieli z tym problemy. Ich projekt GNU istniał specjalnie po to, aby stworzyć swobodnie udostępniany system podobny do Uniksa.

W międzyczasie do 1993 r. AT&T pozwał system University of California o systemy BSD („B” to Berkeley, gdzie mieści się University of California). Ludzie w Berkeley zastąpili wszystkie oryginalne źródła AT&T nowym kodem, a ten nowy kod stał się przodkiem przynajmniej obszaru użytkownika NetBSD. AT&T i UCB zawarły ugodę w 1994 r., Ujawnione publicznie w 2004 r.

Oczywiście przynajmniej pomysły zapylają się wzajemnie, więc istnieje przynajmniej podobieństwo koncepcyjne między obszarem użytkownika GNU i BSD, ale przypadki narożne zdecydowanie się różnią.


1
Oba linki wskazują jedną lokalizację.

więc czy to zwykle dotyczy praktycznego użycia powłoki? długie flagi i narożniki?
strugee

12
Z mojego doświadczenia wynika również, że GNU traktuje skalowalność poważniej. Może to również liczy się jako „przypadki narożne”, ale jest to bardzo frustrujące, gdy seddławiki na długich liniach wejściowych lub grepsegfault na danych binarnych.
tripleee

jedną wielką różnicą jest to, że GNU nigdy nie miał własnego jądra, podczas gdy BSD opierało się i budowało na swoim własnym jądrze, które częściowo jest szeroko stosowane w komercyjnych systemach uniksowych. MAC OS X używa na przykład Darwina jako jądra opartego na BSK.
wizualizacja

@visualication Istnieje GNU HURD, ale jeszcze go nie wydano
Dmitry Kudriavtsev
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.