Różnica koncepcyjna między jądrem Linux a (darmowym) BSD

19

(Już zauważyłem, że pytanie to zostało zadane wcześniej, ale myślę, że nie udzielono na nie odpowiedzi w sposób, który chciałbym zrozumieć.)

Jakie są koncepcyjne i strukturalne różnice między a

  • Jądro Linux
  • Jądro BSD (powiedzmy FreeBSD)

Chociaż na koniec dnia są to oba jądra - przypuszczam, że mogą istnieć różnice w strukturze, funkcjonalności i specjalizacji. W jakich scenariuszach jeden rodzaj jądra miałby przewagę nad drugim? (Serwer sieci Web, baza danych, komputery itp.)

Czy są jakieś wspólne wysiłki w celu skoncentrowania sił na jednym wspólnym jądrze lub niektórych modułach, czy byłoby to i tak bezcelowe?

PS: Różne rodzaje licencji lub metody wysyłki / pakowania / utrzymania nie mają znaczenia w tym kontekście. Naprawdę interesuje mnie zrozumienie, jak różnią się one pod względem strukturalnym, funkcjonalnym / funkcji i specjalizacji.

binaranomalia
źródło
Czy są jakieś wspólne wysiłki w celu skoncentrowania sił na jednym wspólnym jądrze lub niektórych modułach, czy byłoby to i tak bezcelowe? Moją pierwszą myślą jest, co to może mieć ... stworzyć trzecie jądro „oparte w całości na Linuksie i FreeBSD”?
goldilocks
Nie, wcale nie, raczej na odwrót - nawiąż współpracę dla części, które są takie same dla obu. Myślę, że w przypadku niektórych kierowców już tak jest, jeśli się nie mylę.
dwuskładnikowy
1
@ binaryanomaly: różne licencje są bardzo ważne dla obu stron. Do tego stopnia, że ​​można to nazwać ideologią po obu stronach nawy. Na przykład GCC było bolącym punktem w BSD, a FreeBSD przełączył się teraz na Clang jako domyślny z tego właśnie powodu: problemów z licencją.
0xC0000022L
1
@ 0xC0000022L: Z pewnością masz rację i nie chciałem powiedzieć, że pytania licencyjne nie są ważne - po prostu chciałem, aby nie koncentrowało się to na tej konkretnej dyskusji.
dwuskładnikowy
Naprawdę @goldilocks, nie widzisz korzyści z trzeciej rzeczy, która nie jest ani zbyt linuksowa, ani zbyt BSDish, ale w sam raz ?
Josh Rumbut

Odpowiedzi:

22

1. Jakie są koncepcyjne i strukturalne różnice między jądrem Linux a jądrem BSD?

Jeśli chodzi o architekturę i wewnętrznych struktur, istnieją różnice oczywiście od tego, jak rzeczy są zrobione (tj: LVM vs GEOM , wczesnej i kompleksowej więzienia funkcji dla FreeBSD, ...), ale ogólnie rzecz biorąc nie istnieje, że wiele różnic między nimi:

  • Jądro BSD * i jądro Linuksa ewoluowały od czysto monolitycznego podejścia do czegoś hybrydowego / modułowego.

Istnieją jednak fundamentalne różnice w ich podejściu i historii:

  • Jądro BSD korzysta z licencji BSD, a jądro Linux używa licencji GPL .
  • Jądro BSD nie jest samodzielnym jądrem, ale zostało opracowane jako część całości . Oczywiście jest to jedynie filozoficzny punkt widzenia, a nie techniczny, ale daje to spójność systemu .
  • Jądro BSD jest opracowywane z bardziej konserwatywnym punktem widzenia i bardziej obawia się o zachowanie spójności z ich podejściem niż o fantazyjne funkcje.
  • Jądro Linux bardziej dotyczy sterowników, funkcji, ... (im więcej, tym lepiej).

Jak napisano gdzie indziej :

Jest to inteligentny projekt i porządek (BSD *) kontra dobór naturalny i chaos (GNU / Linux).

2. W jakich scenariuszach jeden rodzaj jądra miałby przewagę nad drugim?

Jeśli chodzi o ogólną strukturę i koncepcję, porównując prawie waniliowe jądro Linuksa i jądro FreeBSD, są one mniej więcej tego samego ogólnego poziomu użytkowania , to znaczy bez specjalizacji (nie w czasie rzeczywistym, niezbyt równoległe, nie zorientowane na grę, niewbudowane, ...).

Oczywiście istnieje kilka różnic tu i tam, takich jak natywna obsługa ZFS lub architektura geom dla FreeBSD w porównaniu z wieloma sterownikami lub różnymi systemami plików dla Linuksa. Ale tak naprawdę żadne ogólne oprogramowanie, takie jak serwery sieciowe lub bazy danych, nie zrobiłoby prawdziwej różnicy. Porównania w tych przypadkach najprawdopodobniej zakończyłyby się bitwą tuningową między nimi, nic poważnego.

Jednak niektórzy twierdzą, że OpenBSD ma głębokie i spójne podejście do bezpieczeństwa, podczas gdy zahartowane dystrybucje Linuksa są „tylko” zmodyfikowanymi wersjami waniliowego jądra Linuksa. Może tak być w przypadku tak mocno wyspecjalizowanego systemu, w którym Steam-OS byłby numerem jeden do grania w gry.

3. Czy podejmowane są wspólne wysiłki w celu skoncentrowania sił dla jednego wspólnego jądra lub niektórych modułów?

Nie ma wspólnych wysiłków, aby skoncentrować siły dla jednego wspólnego jądra, ponieważ istnieją poważne licencje, kwestie filozoficzne lub podejścia.

Jeśli istnieją pewne prawdziwe wspólne wysiłki, takie jak OpenZFS , w większości przypadków chodzi raczej o sterowniki i koncepcje wzięte lub zainspirowane od siebie.

Ouki
źródło
Uogólnienia Glib dotyczące BSD są zwykle błędne. Zauważ tutaj, na przykład, że DragonFly BSD istnieje, ponieważ zachowanie konserwatywne nie jest uogólnieniem, które można zastosować w świecie BSD.
JdeBP
5

Częściowa odpowiedź dotycząca kilku punktów

Wiele opcji jest często postrzeganych jako zła rzecz, gdy na zewnątrz patrzy się na rozwój open source, ale pomyśl o tym, jak w naturze, istnieje wiele gatunków (często) danego rodzaju zwierząt, na przykład pingwiny. Jest 17 . Każdy z nich specjalizuje się w określonym zestawie wymagań, podobnie jak w projektach typu open source (zazwyczaj). Dobór naturalny zajmie się wyeliminowaniem otwartego oprogramowania, które z czasem będzie mniej trafne.

Czy są jakieś wspólne wysiłki w celu skoncentrowania sił na jednym wspólnym jądrze lub niektórych modułach, czy byłoby to i tak bezcelowe?

Byłoby to trochę bezcelowe, czasami jest to powielanie wysiłku, ale ludzie, którzy pracują nad tymi komponentami, również nie robią tego w próżni. Rozejrzą się wokół tego, co robią inni, a jeśli istnieje podejście lub algorytm, włączają je, gdy ma to sens.

Nie mogę rozmawiać o różnicach w strukturze innych twoich pocisków, ale pomyślałem, że rozwiążę przynajmniej 2 z nich.

slm
źródło
Na pewno masz rację ze specjalizacją. Z drugiej strony założę się, że DNA pingwinów jest w bardzo wysokim odsetku dokładnie takie samo (jak w przypadku małp i ludzi) i różni się tylko w małych obszarach. Natura jest dość dobra w unikaniu zbędnych wysiłków, ale różnicuje tylko wtedy, gdy jest potrzebna. Miliardy naturalnych iteracji (reprodukcja) decyduje wtedy (wybór), który z wzorów najlepiej pasuje do danych warunków otoczenia. (Robi się filozoficzny;)
binarna anomalia
@ binaryanomaly - to jest problem z analogiami 8-). Prawdopodobnie nie wziąłbym tego na ten poziom, ponieważ korelacja języków programowania / kodu jest trudniejsza do skorelowania z DNA.
slm
Dobra odpowiedź i dobre porównanie przy użyciu pingwinów. Często zapominamy, że powielanie wysiłków nie zawsze jest złe, a rozwidlenie projektu nie zawsze jest końcem. To tak naprawdę proces ewolucyjny, który musi się wydarzyć i może stworzyć nowe pomysły lub ponieść porażkę.
Raphael Ahrens,