7 razões (evidências) que fazem o Kernel Linux muito superior ao do Windows
Todo sistema operacional possui um núcleo (kernel), inclusive o MS-Windows. Obviamente cada qual possui suas peculiaridades, e o da Microsoft é bem mais acoplado ao Sistema Operacional que o kernel do Linux. O objetivo deste texto, é mostrar evidências, coisas fáceis de verificar, que demonstram que o kernel do Linux é bastante superior ao dos seus concorrentes nos seguintes aspectos:
1- Rapidez de preparo e uso de hardware
De fato, uma das coisas mais evidentes, é comparar o tempo em que um pendrive, que nunca foi inserido na máquina, leva para ler o conteúdo da memória flash. Foi a primeira coisa que percebi quando migrei para o Linux. E isto vale não só para memórias flash, serve para qualquer equipamento, principalmente os com interface USB: webcam, mouse e etc...
Isto acontece principalmente porque os drivers, que fazem estes equipamentos físicos funcionarem, que são inicialmente desenvolvidos separadamente, posteriormente são unidos ao pacote principal do kernel, e compilados conjuntamente. Isso explica também porque é tão fácil e automático instalar novas peças em sistemas linux, e também como é tão simples migrar para um novo hardware (ex. trocar a placa mãe - desde que não mude a arquitetura) sem mudar sequer uma vírgula de configuração no sistema.
Diferentemente, no MS-Windows, você precisa aguardar aquele tempão o sistema instalar o dispositivo, sem contar que na maioria das vezes você precisa instalar antes os drivers indicando os arquivos .inf e muitas vezes reiniciar o sistema.
2- Atualização e testes no mesmo Sistema Operacional
Essa é uma das coisas mais fantásticas que o kernel linux pode realizar. É muito comum nas atualizações do Ubuntu, Fedora, etc, atualizar também o núcleo do sistema, que contém o kernel. Atualmente no Ubuntu, são cerca de 35MB, e qualquer nova função, driver ou característica do novo kernel, estará disponível automaticamente assim que a máquina for reiniciada.
Se você não limpar manualmente, as outras versões de kernel ficarão disponíveis nos sistemas Linux, e você poderá voltar a estas versões se houver qualquer problema. Isso é possível através do menu do inicializador GRUB - acessado quando pressionando SHIFT durante o processo de boot.
3- As opções de depuração
Já passei por problemas variados, que só pude resolver por ter acesso às mensagens de log do sistema disponíveis geralmente em /var/log/messages. O fato é que algumas vezes são variáveis demais a se considerar, e estes erros difíceis de rastrear geralmente são problemas no hardware, algumas vezes o problema é na integração hardware-software.
O kernel linux registra por exemplo, erros de entrada e saída (IO) - quando um disco está com blocos danificados, também inacessibilidade ou falhas de dados na memória, má configuração de dispositivos diversos (ex. resolução não suportada pela placa de vídeo), etc.
O Windows geralmente não lhe oferece nada, ou se oferece, é geralmente incompleto e genético demais para a resolução dos problemas. Cabe a você neste caso recorrer à tentativa e erro, testando timtim por timtim às cegas!
4- Interação em baixo nível
Talvez você não ligue pra isso. Aliás, este é um ponto até meio controverso, pois supostamente um usuário comum do sistema não deveria ter acesso a tal peculiaridade. O fato é, estamos falando de um componente muito básico, e é bom termos o maior controle possível de tudo o que roda na máquina, mesmo que você não precise, é bom ter a opção.
É comum em algumas placas de vídeo, ser necessário desativar algumas configurações de vídeo não muito genéricas através do parâmetro nomodeset, especialmente ao iniciar um LiveMedia; isso normalmente antes de instalar o sistema operacional na máquina. É até natural o entendimento da questão, diferentes partes físicas, necessitam de diferentes configurações, é uma tarefa extremamente desafiadora "adivinhar" quais os requisitos de cada placa previamente.
Praticamente tudo pode ser parametrizado e configurado em tempo de inicialização através do menu do inicializador (boot). Basta saber como, e quais opções disponíveis. Posso citar por exemplo o iommu, que já me foi útil, e também o parâmetro mem, que configura a quantidade de memória que será "enxergada" pelo sistema, muito importante para testes e simulação de situações para desenvolvedores.
5- Arquitetura modular enxuta
Infelizmente é desafiador para qualquer sistema funcionar em todo e qualquer dispositivo. Existe uma variedade enorme de hardware, e isto são "variáveis" que os desenvolvedores não podem controlar. Para a Microsoft é muito mais fácil, ela não se responsabiliza por fazer funcionar dispositivos de terceiros, eles que desenvolvam seus drivers e que façam funcionar suas peças na plataforma Windows. Infelizmente alguns fabricantes não têm interesse em fazer funcionar seus produtos no Linux, e alguns destes, quando justifica (são bons), acabam passando por engenharia reversa e tendo uma versão livre de seus drivers disponibilizados para o Linux.
Bom, o ponto em questão é, mesmo que alguns apontem o produto da Microsoft suportando uma maior parcela das peças disponíveis, o Linux funciona em uma parcela muito mais variada de dispositivos. Como Androids, DVRs, Roteadores, e em sistemas embarcados dos mais diversos. Isso é devido ao fato de que a arquitetura é muito bem organizada, e compensa reutilizar boa parte do código existente para dar vida aos fios de cobre e blocos de silício.
6- Desenvolvido por várias pessoas e entidades
O primeiro ponto a se ponderar a respeito desta característica (trunfo), é a organização necessária para que isto não se torne um caos. Qualquer um que já trabalhou numa equipe de desenvolvimento de software sabe o quão complicado é dividir o trabalho, e fazer com que duas pessoas representem o dobro de esforço convertidos em benefícios ao sistema.
Não existem tantas pessoas assim desenvolvendo diretamente o kernel Linux, mas são bem mais de duas. Além do mais, existem mais desenvolvedores que criam módulos que interferem diretamente no funcionamento e integração com o kernel. Alguns deles querem adicionar novas funcionalidades, por exemplo algum fabricante de processadores que quer fazer com que seus chips funcionem melhor. Pode ser também empresas que desejam fazer seus smartphones consumirem menos bateria, enfim, até algumas provedoras de serviços que desejam diminuir a quantidade de servidores necessários para desempenhar determinado papel.
É esta diferença de objetivos e variedade de mentes que fazem com que o kernel linux tenha tão clara, bem definida e crescente lista de melhorias.
7- Auditoria livre
Outra importantíssima característica, que já foi a muito tempo percebida por grandes provedores de serviços, mas que a cada dia se torna mais evidente, é a liberdade de verificar o que de fato implementa certo pedaço de código. Isto impacta gigantescamente (não existe palavra para expressar) na segurança dos sistemas.
Algumas falhas são extramente difíceis de descobrir e explorar, e com o código aberto, é mais fácil chegar numa qualidade melhor, porque é possível testes mais dirigidos. Em qualquer sistema, falhas podem ficar dormentes durante anos, isso foi demonstrado recentemente por uma falha no OpenSSL, se fosse um sistema caixa-preta, talvez o bug não teria sido encontrado, e muito provavelmente a correção teria demorado muito mais para surgir.
E o pior, é a questão ética envolvida. Você está a mercê das empresas detentoras dos direitos dos sistemas fechados. Pode ser que elas por interesse próprio, não divulguem a falha para não causar constrangimentos, pode ser que estes mantenham as falhas "controladas" para tirar proveito a seu bel prazer. Infelizmente, corrupção existe!
Conclusões
Poderíamos citar outras questões, como por exemplo eficiência/eficácia e performance, mas estas características são um pouco mais complexas de descrever, e muitas vezes não é senso comum. Comentem portanto deixando sua opinião e perspectiva a respeito dos kernels disponíveis no mercado!
Não existe produto perfeito, tudo pode e deve melhorar!