Diferença conceitual entre o Linux e o kernel BSD (gratuito)

19

(Eu já notei que essa pergunta foi feita antes, mas acho que não foi respondida de uma maneira que eu gostaria de entender o tópico.)

Quais são as diferenças conceituais e estruturais entre um

  • Kernel do Linux
  • Kernel do BSD (digamos FreeBSD)

Enquanto no final do dia eles são ambos os kernels - eu assumiria que pode haver diferenças na estrutura, funcionalidade e especialização. Em quais cenários um tipo de kernel teria vantagem sobre o outro? (Servidor web, banco de dados, computação etc.)

Existem esforços conjuntos para concentrar forças em um kernel comum ou em determinados módulos ou isso seria inútil de qualquer maneira?

PS: Diferentes tipos de licença ou abordagens de envio / empacotamento / manutenção não são importantes neste contexto. Estou realmente interessado em entender como eles diferem em nível estrutural, funcional / de recursos e especialização.

binaryanomaly
fonte
Existem esforços conjuntos para concentrar forças em um kernel comum ou em determinados módulos ou isso seria inútil de qualquer maneira? Meu primeiro pensamento é que ponto isso poderia ter ... para criar um terceiro kernel "baseado inteiramente em uma mistura de linux e freeBSD"?
goldilocks
Não, de maneira alguma, ao contrário - estabeleça uma cooperação para partes iguais para ambas. Eu acho que, para certos drivers, esse já é o caso, se não me engano.
Binaryanomaly
1
@ binaryanomaly: licenças diferentes são muito importantes para ambos os lados. Até certo ponto, isso poderia ser chamado de ideologia em ambos os lados do corredor. Por exemplo, o GCC costumava ser um ponto sensível nos BSDs e o FreeBSD agora mudou para Clang como padrão por esse motivo: problemas de licença.
0xC0000022L
1
@ 0xC0000022L: Você certamente está certo e eu não queria dizer que as questões de licenciamento não são importantes - eu só queria que não se tornasse o foco principal nesta discussão em particular.
Binaryanomaly
Realmente @goldilocks, você não pode ver o benefício de uma terceira coisa que não é nem muito linuxy nem muito BSDish, mas apenas certa ?
Josh Rumbut 02/07/2015

Respostas:

22

1. Quais são as diferenças conceituais e estruturais entre um kernel Linux e um kernel BSD?

Com relação à arquitetura e estruturas internas, é claro que existem diferenças em como as coisas são feitas (por exemplo: lvm vs geom , recurso de prisão antecipada e complexa para o FreeBSD, ...), mas no geral não há muitas diferenças entre os dois:

  • O kernel BSD * e o Linux evoluíram de uma abordagem puramente monolítica para algo híbrido / modular.

Ainda assim, existem diferenças fundamentais em sua abordagem e história:

  • O BSD-kernel está usando licença BSD e o Linux-kernel está usando licenças GPL .
  • O BSD-kernel não é um kernel independente, mas é desenvolvido como parte de um todo . Certamente, este é apenas um ponto de vista filosófico e não técnico, mas isso dá coerência ao sistema .
  • O BSD-kernel é desenvolvido com um ponto de vista mais conservador e mais preocupação em manter a consistência com sua abordagem do que ter recursos sofisticados.
  • Linux-kernel são mais sobre drivers, recursos, ... (quanto mais, melhor).

Como muito dito em outro lugar :

É Design e Ordem Inteligente (BSD *) versus Seleção Natural e Caos (GNU / Linux).

2. Em quais cenários um tipo de kernel teria vantagem sobre o outro?

Sobre sua estrutura e conceito geral, enquanto comparam um kernel Linux quase baunilha e um kernel FreeBSD, eles são mais ou menos do mesmo nível de uso geral , sem especialização específica (não em tempo real, nem muito paralelo, não jogo orientado, não incorporado, ...).

É claro que existem algumas diferenças aqui e ali, como o suporte nativo ao ZFS ou a arquitetura geom para o FreeBSD versus os muitos drivers ou vários sistemas de arquivos para Linux. Mas nada que algum software geral, como servidores da Web ou bancos de dados, realmente usaria para fazer uma diferença real. As comparações nesses casos provavelmente terminariam em alguma batalha de sintonia entre os dois, nada importante.

Mas, alguns argumentariam que o OpenBSD tem uma abordagem profunda e consistente à segurança, enquanto distribuições Linux mais rígidas são "apenas" versões modificadas do kernel Linux baunilha. Isso pode ser verdade para um sistema altamente especializado, como o Steam-OS seria o número um em jogos.

3. Há algum esforço conjunto para concentrar forças em um kernel comum ou em determinados módulos?

Não um esforço conjunto para concentrar forças em um núcleo comum, pois existem importantes licenças, questões filosóficas ou de abordagem.

Se existem alguns esforços comuns, como o OpenZFS , na maioria das vezes, trata-se de drivers e conceitos retirados ou inspirados um do outro.

Ouki
fonte
Generalizações breves sobre os BSDs geralmente estão erradas. Observe aqui, por exemplo, que o BSD do DragonFly existe porque ser conservador não é uma generalização que se possa aplicar ao mundo do BSD.
JdeBP # 28/17
5

Resposta parcial abordando alguns dos pontos

As muitas opções são muitas vezes percebidas como algo ruim quando, por fora, estuda o desenvolvimento de código aberto, mas pensa nisso como na natureza, existem muitas espécies (geralmente) de um tipo de animal, dizem pinguins. Existem 17 . Cada um deles é especializado em um conjunto específico de requisitos, assim como em projetos de código aberto (normalmente). A seleção natural cuidará de eliminar o código aberto menos adequado ao longo do tempo.

Existem esforços conjuntos para concentrar forças em um kernel comum ou em determinados módulos ou isso seria inútil de qualquer maneira?

Seria meio inútil, às vezes é uma duplicação de esforços, mas as pessoas que trabalham com esses componentes também não fazem isso no vácuo. Eles analisarão o que os outros estão fazendo e, se houver uma abordagem ou algoritmo, eles a incorporarão quando fizer sentido.

Não posso falar sobre as diferenças de estrutura em relação às suas outras balas, mas achei que pelo menos trataria de duas delas.

slm
fonte
Você certamente tem um ponto lá com especialização. Por outro lado, eu também apostaria que o DNA dos pinguins é uma porcentagem muito alta exatamente igual (como para macacos e humanos) e que difere apenas em pequenas áreas. A natureza é muito boa em evitar esforços redundantes, mas diferencia apenas quando e onde é necessária. Bilhões de iterações naturais (reprodução) decidem então (seleção) qual dos padrões é melhor adaptado às condições ambientais dadas. (Está ficando filosófico;)
binaryanomaly
@ binaryanomaly - esse é o problema das analogias 8-). Eu provavelmente não levaria esse nível, pois a correlação das linguagens de programação / código é mais complicada de se correlacionar com o DNA.
Slm
Boa resposta e uma boa comparação usando pinguins. Muitas vezes esquecemos que a duplicação de esforços nem sempre é ruim e que um garfo de um projeto nem sempre é o fim. É realmente mais um processo evolutivo, que precisa acontecer e pode criar novas idéias ou falhar miseravelmente.
Raphael Ahrens 28/09