Os 25 anos de desenvolvimento do kernel Linux podem ser qualificados ou abstraídos em termos leigos? [fechadas]

12

O kernel do Linux tem quase 25 anos . Se eu tivesse que apresentar a versão curta do histórico de desenvolvimento do kernel Linux desde 1991 (sua data de criação) e, em parte, desde 1994 (1.0.0) até hoje, não poderia. O melhor que eu poderia fazer antes de ler todas as notas de versão do kernel seria fornecer o seguinte, quais são os recursos gerais de versão adicionados ao kernel até a versão 3.11 (notas e links omitidos):

  • A versão 1.0 do kernel do Linux foi lançada em 14 de março de 1994. Esta versão do kernel do Linux suportava apenas sistemas de computador baseados em i386 de processador único. A portabilidade se tornou uma preocupação e, portanto, a versão 1.2 (lançada em 7 de março de 1995) ganhou suporte para sistemas de computadores usando processadores baseados nas arquiteturas Alpha, SPARC e MIPS.
  • A versão 2.0 foi lançada em 9 de junho de 1996. Havia 41 lançamentos na série. O principal recurso do 2.0 era o suporte SMP (ou seja, suporte a vários processadores em um único sistema) e suporte a mais tipos de processadores.
  • A versão 2.2 (lançada em 26 de janeiro de 1999) removeu o spinlock global e forneceu suporte aprimorado para SMP e adicionou suporte para as arquiteturas m68k e PowerPC, bem como para novos sistemas de arquivos (incluindo suporte somente leitura para NTFS da Microsoft).
  • A versão 2.4.0 , lançada em 4 de janeiro de 2001, continha suporte para ISA Plug and Play, USB e PC Cards. Também incluiu suporte para o processador PA-RISC da Hewlett-Packard. O desenvolvimento do 2.4.x mudou um pouco, pois mais recursos foram disponibilizados ao longo da série, incluindo: suporte para Bluetooth, LVM (Logical Volume Manager) versão 1, suporte a RAID, sistemas de arquivos InterMezzo e ext3.
  • A versão 2.6.0 foi lançada em 18 de dezembro de 2003. O desenvolvimento do 2.6.x mudou ainda mais para incluir novos recursos ao longo da duração da série. Entre as mudanças que foram feitas na série 2.6, estão: integração do µClinux às fontes principais do kernel, suporte ao PAE, suporte para várias novas linhas de CPUs, integração do ALSA às fontes principais do kernel, suporte para até 32 usuários ( de 2 16 ), suporte para até 2 29 IDs de processo (somente 64 bits, arcos de 32 bits ainda limitados a 2 15), aumentou substancialmente o número de tipos de dispositivos e o número de dispositivos de cada tipo, suporte aprimorado de 64 bits, suporte para sistemas de arquivos que suportam tamanhos de arquivo de até 16 terabytes, preempção no kernel, suporte para a biblioteca de threads POSIX nativa (NPTL), integração Linux no modo de usuário nas fontes principais do kernel, integração SELinux nas fontes principais do kernel, suporte InfiniBand e muito mais. Também são notáveis ​​a adição de vários sistemas de arquivos nas versões 2.6.x: FUSE, JFS, XFS, ext4 e muito mais. Detalhes sobre o histórico da série 2.6 do kernel podem ser encontrados nos arquivos ChangeLog na área de liberação do código fonte da série 2.6 do kernel.org.
  • A versão 3.0 foi lançada em 22 de julho de 2011. Torvalds anunciou que a grande mudança foi: "NADA. Absolutamente nada". Em 30 de maio de 2011, Torvalds anunciou: "... vamos ter certeza de que realmente faremos o próximo lançamento não apenas um número totalmente novo, mas também um bom kernel". Após o esperado processo de desenvolvimento de 6 a 7 semanas, ele seria lançado próximo ao 20º aniversário do Linux.
  • Em dezembro de 2012, Torvalds decidiu reduzir a complexidade do kernel, removendo o suporte aos processadores i386, tornando a série 3.7 do kernel a última ainda suportando o processador original. A mesma série de suporte unificado para o processador ARM.
  • A versão 3.11 , lançada em 2 de setembro de 2013, adiciona muitos novos recursos, como o novo sinalizador O_TMPFILE para open (2) para reduzir vulnerabilidades temporárias de arquivos, gerenciamento de energia dinâmico experimental AMD Radeon, pesquisa de rede de baixa latência e zswap (cache de troca compactado).

Eu também poderia acrescentar que há muitos anos a Linux Foundation tem relatado sobre o desenvolvimento do kernel. Estes são os Destaques do Desenvolvimento do Kernel 2012-2013:

  • Quase 92.000 conjuntos de alterações foram mesclados de 3.738 desenvolvedores individuais, representando 536 empresas (que conhecemos).
  • Uma vasta gama de novos recursos importantes foi mesclada na linha principal. Isso inclui operação sem ticks completa, namespaces de usuário, virtualização KVM e Xen para ARM, rastreamento de carga por entidade no planejador, ponto de verificação / reinicialização do espaço do usuário, suporte à arquitetura ARM de 64 bits, suporte a arquitetura ARM de 64 bits, sistema de arquivos orientado a flash F2FS, muitas melhorias de rede destinadas nos problemas de latência e bufferbloat, dois subsistemas independentes que fornecem armazenamento em cache rápido para dispositivos de armazenamento em bloco e muito mais.
  • A disputa de longa data sobre os recursos do kernel específicos do Android desapareceu completamente em segundo plano. O discutido recurso "wakelocks" foi silenciosamente substituído por uma solução principal diferente, usada nos dispositivos Android mais recentes.
  • O uso de ferramentas automatizadas para encontrar bugs nos kernels de desenvolvimento aumentou significativamente durante esse período. Ferramentas como o testador de fuzz "trinity" e o sistema de compilação e inicialização de dia zero estão encontrando um grande número de bugs nos kernels de pré-lançamento, encurtando o ciclo de desenvolvimento e permitindo que a comunidade forneça lançamentos de qualidade superior.
  • As contribuições das indústrias móveis e incorporadas continuam a aumentar. Linaro, Samsung e TI, por exemplo, contribuíram em conjunto com 4,4% das alterações na versão anterior deste artigo; para o período até 3,10, eles contribuíram com quase 11% de todas as alterações.
  • O projeto do kernel participou do Programa de Extensão para Mulheres pela primeira vez, levando a 41 inscrições para 7 vagas disponíveis. Durante o processo de aplicação, 374 patches foram enviados ao kernel e mais de 1/3 desses patches foram aceitos na versão 3.10 do kernel. O processo interno está em andamento, mas os resultados não começarão a aparecer até as futuras versões do kernel.

Além disso, quantificar o que está acontecendo com o kernel não é muito difícil, pois temos métricas além das confirmações individuais . Por exemplo, sabemos que o kernel 1.0.0 em 1994 tinha 176 250 linhas de código; e sabemos que um kernel contemporâneo como o 3.10 possui 15 803 499 linhas de código. Consideravelmente mais. A frequência de liberação do kernel aumentou (63 dias para a 3.10), bem como a taxa de alteração (9 confirmações por hora ou mais, enquanto falamos). Para citar a Linux Foundation:

A capacidade de sustentar essa taxa de mudança por anos é sem precedentes em qualquer projeto de software público anterior.

Mas tudo isso traz pouca percepção na minha opinião. Portanto, eu perguntaria:

  1. A evolução deste quarto de século pode ser resumidamente qualificada além da adição linear de todos os recursos listados que compõem esse kernel ao longo do tempo?
  2. E isso traz alguma ideia sobre o que é o kernel do Linux ou para onde está indo? Após 25 anos de desenvolvimento, algumas conclusões certamente podem ser tiradas sobre isso?

À procura de uma resposta abstrata em termos leigos, que diz tudo sem recorrer a dizer tudo.


fonte
"suporte para até 229 IDs de processo" meio que saltou para mim, então pesquisei isso e a única referência é, ao que parece, a fonte original desse parágrafo . Eu achava que os IDs de processo têm um intervalo (assinado) de 16 bits, ou seja, ~ 16.000, mas pode ser muito mais do que isso . Certamente não são algumas centenas.
precisa
3
Essa pergunta é muito ampla porque está procurando o artigo da Wikipedia sobre o assunto.
Gilles 'SO- stop be evil'
Você pretende escrever um artigo aqui? Tudo bem, mas, se você for específico sobre o que está tentando fazer, ajudaria, aconselhando-o. Presumo que não é apenas para ter um bom resumo pronto para a sua próxima noite no boteco local;)
Goldilocks
1
Lembro-me vagamente de haver pelo menos algumas pessoas planejando escrever dissertações sobre isso, ou algo semelhante. Eu suspeito que você encontrará literatura acadêmica sobre o assunto ... Além de apontar para as publicações existentes, parece que suas perguntas exigiriam meses de pesquisa para serem respondidas.
derobert
Em sua pergunta, talvez você precise nos falar sobre os termos dos leigos, a fim de obter uma boa resposta aqui. Além disso, poste-o no lkml e obtenha feedback sobre sua cronologia. Se você perdeu algo importante, eles o farão saber.
Bananguin

Respostas:

11

Você pergunta:

A evolução deste quarto de século pode ser resumidamente qualificada além da adição linear de todos os recursos listados que compõem esse kernel ao longo do tempo? E isso traz alguma ideia sobre o que é o kernel do Linux ou para onde está indo?

Duvido que essas perguntas tenham respostas bem definidas. No entanto, acho que não é difícil entender as forças que estão impulsionando o desenvolvimento do kernel do Linux.

Primeiro, os computadores são coisas cada vez mais importantes. Chomsky observa em algum lugar que eles são centrais para qualquer economia industrializada. Um computador não é nada sem um sistema operacional, o que torna os sistemas operacionais importantes.

Por um tempo nos anos 80 e 90, os sistemas operacionais proprietários se tornaram ascendentes. Em certo sentido, esse era um estado de coisas não natural. O Windows da Microsoft foi dominante por um tempo e, em certo sentido, ainda é, mas apenas manteve sua posição explorando os efeitos da rede.

Com o surgimento da internet, tornou-se possível produzir um sistema operacional comunitário. No entanto, esse sistema operacional só seria útil se, por sua vez, não pudesse ser proprietário. A família de sistemas operacionais BSD não estava nessa categoria. Daí a ascensão do kernel Linux como o coração de um sistema operacional da comunidade que não podia ser proprietário.

Observe que muitos grandes fabricantes de computadores estão por trás do kernel do Linux. Por quê? Os indivíduos se preocupam com a liberdade. As comunidades se preocupam com a liberdade. As empresas se preocupam apenas com lucro e estratégias associadas. Eu acredito que muitas empresas de computadores fizeram as pazes com a noção de um sistema operacional "comoditizado", um "campo de jogo nivelado", se você preferir. Eles olharam para o exemplo da Microsoft que ganha muito dinheiro com a propriedade de um sistema operacional, mas nem todos podem ser da Microsoft, e ter um único fornecedor em uma posição de poder é, para dizer o menos problemático, mesmo que isso aconteça. uma vantagem injusta do ponto de vista das outras empresas.

Portanto, acho que, como a maioria das empresas não está em posição de se tornar Microsoft, e talvez não queira estar, decidiu apoiar um sistema operacional de "commodity". Mais uma vez, igualdade de condições. Assim, todos podem usar esse sistema operacional para qualquer finalidade que desejem, e ninguém no grupo está em vantagem com relação a mais ninguém. Outra maneira de ver é que ter algo tão básico quanto um sistema operacional se tornar proprietário é uma grave interferência nos princípios do livre mercado. Em geral, as empresas não são especialmente favoráveis ​​ao livre mercado, se puderem estar do lado vencedor, mas se não puderem, estarão.

A maioria das características do kernel Linux pode realmente ser deduzida dessa dinâmica. Por exemplo, a natureza modular e maleável de um sistema operacional do tipo Unix é adequada para um sistema operacional projetado para ser "mercadoria". Além disso, em parte, a natureza em movimento rápido do projeto do kernel é porque ele está tentando satisfazer todas essas demandas corporativas para ser o que elas precisam. Embora muita atividade esteja centrada no suporte / drivers de hardware, também há muita atividade fora dessa área; desenvolvimento constante de novos recursos e manutenção e aprimoramento dos existentes.

Obviamente, não devemos desconsiderar os desejos da comunidade, comumente chamada de comunidade de software livre, ou, às vezes, FOSS (Software Livre e de Código Aberto), de ter um sistema operacional gratuito para uso por pessoas comuns, que não é controlado por empresas. Afinal, projetos como o Debian e o Fedora são executados por voluntários que acreditam nesses valores. No entanto, acho que o papel desempenhado pelas empresas também não deve ser subestimado.

Faheem Mitha
fonte
1
+1 Por levantar a questão das forças sociopolíticas que fizeram o Linux combinado com o GNU desconcertante no mainstream. Eu acho que esse é um aspecto muito significativo das origens, que, embora possa parecer uma "questão não técnica", é na verdade uma característica definidora das mãos no desenvolvimento do sistema operacional - veja particularmente os escritos de Eric S. Raymond - e grande parte da dinâmica de sua adoção por uma ampla gama de fabricantes de hardware e como a plataforma historicamente predominante da Internet.
GOLDILOCKS
^ Nota muitas pessoas têm um kernel linux em sua casa e não sabe mesmo por causa disso (o seu router, sua caixa de DVR, etc.)
Goldilocks
Recomendo sua resposta por situar o kernel no tempo e apelar para a dinâmica que prevaleceu - a evolução da computação; o apelo comercial; as forças do mercado; a Internet; liberdade de computação; licenciamento; e como tudo isso afeta a implementação no kernel, com uma visão do Linux como um todo. Eu tenho que ler em sua declaração sobre um "estado de coisas não natural" que talvez não tenha uma perspectiva histórica para avaliar adequadamente isso - e isso é importante. Embora eu estivesse realmente focado no kernel em si, pensarei mais sobre seus pontos e comentários acima. Obrigado!
1
@ goldilocks: para não mencionar seus telefones Android.
slebetman