Quali sono le principali differenze tra BSD e GNU / Linux userland?


38

Ho letto molto su Unix e Linux su BSD e GNU, ecc. Ma ancora non capisco quali siano alcune differenze effettive e pratiche tra le aree utente di BSD e GNU, nonostante siano spesso menzionate. Qualcuno può elaborare?

Quando rispondi, ti preghiamo di spiegare completamente le connessioni storiche, tenendo presente che non sono stato in vita abbastanza a lungo da aver vissuto un momento in cui GNU / Linux non era il principale UNIX (tranne OS X).


2
Ho pubblicato un elenco di differenze rispetto a GNU / Linux in OS X nell'ambiente della riga di comando qui: reddit.com/r/commandline/comments/4jydnw/… .
nisetama,

Risposte:


28

Il termine "userland" può riferirsi a molte cose in contesti diversi, ma qui interpreto "GNU userland" vs "BSD userland" come l'insieme minimo predefinito di programmi fornito con una distribuzione.

La grande differenza principale è che le due aree utente iniziano con un codice sorgente completamente diverso. Codice sorgente gatto GNU Codice sorgente gatto NetBSD . Proprio da quel programma semplice, puoi vedere che il gatto di NetBSD usa flag tradizionali a riga di comando a una lettera. I programmi GNU tendono ad avere flag a lettera singola, ma anche le --something-longopzioni di tipo. I programmi GNU tendono anche alla compatibilità POSIX.

Tale differenza nel codice sorgente conferirà ai due utenti diverse comportamenti in alcuni casi.

Sembra anche che NetBSD (almeno) usi la propria versione di libc, la libreria C standard. Sto entrando in testa qui, ma libc e il collegamento dinamico sono stranamente inter = correlati. Ancora una volta, un codice sorgente diverso porterà a comportamenti diversi.

Penso che come utente shell, scopriresti che psavrebbe funzionato diversamente e che lspotrebbe darti un output leggermente diverso da quello a cui sei abituato. Dovresti trovare flag di riga di comando equivalenti per alcuni programmi, se usi il --long-optiontipo di flag di riga di comando.

Storicamente, la mia comprensione è che l'area utente di BSD discende più direttamente da V6 e V7 Bell Labs Unix, tramite la porta da 32 V all'hardware VAX. Le aree utente di GNU sono più recenti, scritte almeno in qualche modo in reazione ai tentativi di AT&T di mantenere il codice un segreto strettamente custodito nei primi anni '80. Dopo la cessione del Bell System del 1983, AT&T ha cercato di "monetizzare" Unix. Parte di ciò consisteva nel concedere in licenza il codice sorgente in un modo che impediva alla maggior parte delle persone di vederlo. Richard Stallman e altri hanno avuto problemi con questo. Il loro progetto GNU esisteva specificamente per creare un sistema simile a Unix liberamente condivisibile.

Nel frattempo, nel 1993, AT&T fece causa al sistema dell'Università della California per via dei sistemi BSD ("B" è Berkeley, dove si trova l'Università della California). La gente di Berkeley aveva sostituito tutta la fonte originale di AT&T con un nuovo codice, e quel nuovo codice divenne l'antenato almeno della terra degli utenti di NetBSD. AT&T e UCB hanno raggiunto un accordo nel 1994, rivelato al pubblico nel 2004.

Naturalmente, almeno le idee impollinano, quindi c'è almeno una somiglianza concettuale tra GNU e BSD userland, ma i casi angolari differiscono sicuramente.


1
Entrambi i tuoi collegamenti puntano a una posizione.

quindi tende ad essere per l'uso pratico della shell? bandiere lunghe e astucci d'angolo?
Strugee,

12
La mia esperienza è anche che GNU prende più seriamente la scalabilità. Forse questo conta anche come "casi angolari", ma è davvero molto frustrante quando sedsoffocate su lunghe linee di input o grepsegfault su dati binari.
Tripleee

una grande differenza è che GNU non ha mai avuto il proprio kernel mentre si basava su BSD e si costruiva sul proprio kernel, che, in parte, è ampiamente usato nei sistemi unix commerciali. MAC OS X usa Darwin come un kernel basato su BSK per esempio.
visualizzazione

@visualication C'è GNU HURD ma non è stato ancora rilasciato
Dmitry Kudriavtsev il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.