Social Icons

1. Kernel

O sistema GNU/Linux não figura entre os mais utilizados nos computadores pessoais, sua origem, voltada a programadores e servidores, quem sabe explique isso. Porém, o kernel Linux é muito mais abrangente, e está presente nos mais diversos dispositivos e plataformas, de roteadores domésticos à enormes servidores, do MIPS ao x86, em qualquer setor da tecnologia é possível ter algum dispositivo rodando um kernel Linux. Isso ocorro por que o kernel Linux é multiplataforma, e pode ser utilizado nas mais diversas aplicações.
Computador semelhante ao usado por Linus 
Torvalds para o desenvolvimento inicial do Linux

Computador semelhante ao usado por Linus Torvalds para o desenvolvimento inicial do Linux
Ironicamente o kernel Linux não nasceu com o intuito de ser portado para outras plataformas, isso foi ocorrendo em meio a sua evolução. Ele foi desenvolvido primeiramente em um computador desktop padrão, do próprio Linus Torvalds (inventor do kernel Linux), um PC 386-AT, e acreditem, o kernel atual ainda é capaz de rodar nesta arquitetura, necessitando apenas de 8MB de memória RAM e 40MB de armazenamento em disco. Não espere muita coisa além de um terminal padrão e os comandos nativos, porém é impressionante ver a versatilidade do kernel.
O kernel Linux ficou famoso pela sua utilização no sistema operacional GNU/Linux, mas inicialmente Richard Stallman, líder do projeto GNU, tinha como ideia desenvolver seu próprio kernel, chamado de HURD. Após algum tempo, a equipe de desenvolvimento do GNU apresentou o trabalho de Linus Torvalds à Richard Stallman, e este então decidiu por utilizar o Linux como kernel padrão do projeto GNU. Se o HURD tivesse ficado pronto a pouco mais de duas décadas atrás, a história hoje poderia ser outra.

Afinal o que é o kernel?

Seria pretensão demais tentar explicar o kernel em um (ou poucos) parágrafo(s), mas é possível ter uma ideia de sua função para o computador e o sistema operacional. O kernel é o responsável pela comunicação entre o hardware e os aplicativos, é ele que interage diretamente com todos os componentes do computador, gerencia os recursos do sistema e permite que os aplicativos façam uso deles. Se fizer analogia com um carro, o motor seria o hardware; e o piloto do carro os aplicativos; o kernel seria o intermediador entre eles (os pedais, direção, caixa de marchas, etc…). Você pode até trocar o motor do carro por um mais potente, mas isso não vai fazer mudar a forma de dirigir o veículo, afinal, as marchas, pedais e direção são os mesmos.

PCs

Como já foi dito, o kernel Linux foi desenvolvido desde o inicio para rodar em PCs, inicialmente apenas do 386 do Linus Torvalds, mas hoje em dia roda em quase todas as arquiteturas disponíveis, principalmente x86, ARM e PowerPC, frenquentemente encontradas nos PCs. Existem centenas de distribuições do GNU/Linux disponíveis, porém, apesar disto, o Linux não é um forte competidor neste mercado, tendo apenas aproximadamente 1% da quota de mercado.

Celulares

Nokia N900 rodando o Maemo, um dos muitos 
sistemas com kernel Linux
 Nokia N900 rodando o Maemo, um dos muitos sistemas com kernel Linux

Nos celulares o kernel Linux não é uma alternativa com irrisória participação no mercado, como ocorre no mercado dos PCs Desktop, devido a sua excelente portabilidade e a baixa demanda por processamento o kernel Linux está presente como grande competidor nesta área, dentre os SOs mais atuais podemos citar o Android, do Google, BADA, da Samsung, e Meego, que surgiu duma parceria entre a Intel (e o Moblin) com a Nokia (e o Maemo), e o WebOS, da antiga Palm, hoje da HP. Fora outros sistemas baseados em Linux utilizados pela Motorola, LG e outras.

Servidores

Quer um campo aonde o kernel Linux manda, este é o de servidores, principalmente entre os de alto desempenho. A alta confiabilidade do kernel Linux, aliados a liberdade total para modificações e otimizações do código fonte para um hardware especifico faz do kernel Linux o mais utilizado nesta área. Atualmente, na lista dos 500 supercomputadores mais poderosos do mundo, disponibilizada pelo site top500.org, 459 deles rodam sob o kernel Linux, isso mesmo, mais de 90% deles rodam o kernel Linux.

Sistemas embarcados

Servidores IBM BlueGene
Servidores IBM BlueGene
Computadores dimensionados para pequenas aplicações, que na maioria das vezes são feitos sob medida, com propósitos específicos. Dificilmente contam com poder de processamento necessário para rodar aplicações pesadas, requerem alta confiabilidade e dificilmente são modificados após a sua instalação inicial. O kernel Linux cai como uma luva nestes dispositivos, outra vez pela sua alta portabilidade e baixo consumo de recursos, mas também pela sua reconhecida estabilidade e alta confiabilidade. A maioria dos NAS comerciais utiliza de um kernel Linux para gerenciar o hardware e rodar os serviços presentes.

Roteadores

Muitos roteadores podem ter seus recursos ampliados através de firmwares modificados que rodam o kernel Linux, os mais famosos são os projetos OpenWRT e DD-WRT, que rodam em diversos roteadores Linksys, D-Link, TP-Link, Belkin e outros. Estes firmwares adicionam opções avançadas para compartilhamento e gerenciamento da conexão, servidor de impressão, compartilhamento de arquivos, além de uma performance geralmente melhor que os firmwares oficiais dos fabricantes. Usuários de redes P2P relatam melhoras até no uso da internet após a modificação dos roteadores com estes firmwares.
Não são somente estas as possíveis aplicações do kernel Linux, existem até mesmo relógios de pulso que rodam o Linux para algum propósito específico. Se quiser ficar impressionado com as diversas utilizações do kernel Linux é só dar uma conferida no site Linux Devices.

Novidades recentes
A ultima versão estável do kernel Linux é a 2.6.37, publicada no inicio do ano (2011), mas outra versão já encontra-se em desenvolvimento. No entanto, vamos citar as principais evoluções das ultimas versões lançadas do kernel, a partir da 2.6.30.
O kernel 2.6.30 é datado de Junho de 2009, e trouxe como uma das principais novidades o suporte as instruções Intel AVX e a compactação do kernel via BZIP2 e LZMA, sendo 10% e 33% mais eficiente que o atual GZIP. Porém o principal foco deste novo kernel foi mesmo aumentar o desempenho através de um suporte melhorado a multitarefa, melhorias na performance dos sistemas de arquivos ext2 e ext3, e também de diversas placas de rede wireless. O tempo de boot também recebeu uma atenção especial e foi melhorado.
USB 3.0, o kernel Linux foi o primeiro a 
adicionar suporte a este padrão
USB 3.0, o kernel Linux foi o primeiro a adicionar suporte a este padrão

A versão 2.6.31, datada de Setembro de 2009, adicionou o suporte ao novo padrão USB 3.0, antes mesmo das primeiras placas mães com este padrão começarem a aparecer. O Linux largou na frente e foi o primeiro a oferecer suporte ao novo padrão. Outras melhorias como suporte via kernel das placas de vídeo ATI Radeon do R100 até o R500 (Radeon X1000 Series) também apareceram nessa versão. Algumas funções importantes dos netbook da Acer e ASUS também foram incorporadas nativamente a esta versão do kernel.
O suporte ao ACPI 4.0, o mais recente e avançado sistema de gerenciamento de energia atual, foi a principal novidade do kernel Linux 2.6.32, datado de Dezembro de 2009, o Linux novamente foi o pioneiro no suporte a este padrão. Além do suporte ao ACPI 4.0, outras melhorias foram feitas com relação ao gerenciamento de energia, que agora pode ser comandado genericamente pelo kernel, não dependendo mais de uma implementação própria via driver. Na área de virtualização, foi incluído o KSM, que permite desduplicação de porções de memória'1, com isso a Red Hat anunciou que consegue sustentar 52 máquinas virtuais rodando o Windows XP com 1GB de RAM, em um servidor com apenas 16GB de memória RAM.
('1 = O XP usa 128MB de RAM mas na virtualização se coloca 1GB, nessa desduplicação basicamente ele pega só o que esta usando sem reservar 1GB inteiro se vai usar 128MB)
No kernel 2.6.33, os drivers da nouveau, mais avançado que o antigo nv, foram finalmente adicionados ao kernel, permitindo uma melhoria do desempenho das placas gráficas da nVidia, sem depender do driver proprietário. Outra grande novidade foi o suporte ao ATA TRIM para os SSDs, melhorando a performance e vida útil destes. Melhoras na área de virtualização também foram vistas. O kernel 2.6.33 é datado de Fevereiro de 2010.
O ext4 é a principal novidade do kernel Linux na versão 2.6.34, que é datado de Maio de 2010, e que segundo Linus Torvalds “não trouxe nada de interessante […] mas é assim que eu gosto”. O suporte ao ext4 que antes acontecia via módulo, carregado após o kernel, agora é nativo. Apesar de ter sido muito questionado por administradores de sistemas, por ser muito imaturo ainda, o ext4 tem mostrado bastante estável e maduro, atualmente é a opção padrão para instalação na maioria das distros. Outras melhorias também aconteceram no campo da virtualização (KVM e VMWare). O sistema de trocas de GPU nVidia Optimus também passou a ser suportado de forma parcial neste novo kernel, dependendo da atualização de alguns outros componentes do SO.

O suporte ao ATA TRIM permitiu melhoras no 
desempenho e vida utíl dos SSDs
O suporte ao ATA TRIM permitiu melhoras no desempenho e vida utíl dos SSDs

A parceria da AMD com o desenvolvimento do kernel Linux mostrou-se muito produtiva para o kernel 2.6.35, que trouxe suporte ao Turbo Core dos processadores AMD Phenom II X6 e suporte a decodificação via hardware de vídeos em H.264 pelas GPUs AMD Radeon bem como suporte a gerenciamento de energia delas, os chipsets Intel Ironlake também foram beneficiados com decodificação de H.264. O Google colaborou com novos recursos para computação na nuvem e processamento pela rede. O kernel 2.6.35 é datado de Agosto de 2010.
O kernel 2.6.36, datado de Outubro de 2010, trouxe uma novidade interessante, pela primeira vez na verão 2.6 (quem sabe a primeira da história) o kernel sofreu uma redução de tamanho. O Zram, um recurso para compactação de memória, foi adicionado, bem como o AppArmor, uma aplicação de controle de segurança muito eficiente. Os recursos do Intel Intelligent Power Sharing, tecnologia presente nos processadores Core ix que realiza um “overclock” automático na GPU quando o CPU não está à pleno vapor, ou reduz o consumo de ambos quando estão ociosos, também foram implementados nesta versão do kernel.
A ultima versão estável é a 2.6.37, datada de Janeiro de 2011, e tem como principal novidade a remoção total do Big Kernel Lock, um termo usado para quando um processo com baixos privilégios necessitava usar uma área com altos privilégios, travando momentaneamente a execução do kernel, para execução deste processo. Distribuições relatam melhoras na ordem de mais de 250 vezes o numero de iterações por segundo na gestão de memória. Um salto impressionante em desempenho multitarefa. Ocorreram também melhorias no sistema de arquivos ext4.

Considerações Finais

Apenas para demonstrar como o desenvolvimento do kernel Linux vem crescendo ao longo dos anos, serão apresentados alguns dados referentes ao código fonte do kernel. A versão 0.01 do kernel Linux que foi lançada em Setembro de 1991 possuía 10.239 linhas de código. Alguns anos depois, em Março de 1994, a versão 1.0.0 foi lançada, com 176.250 linhas de código. Cerca de um ano depois, em Março de 1995, o Linux 1.2.0 foi lançado, com 310.950 linhas de código.
Linus Torvalds, criador do kernel Linux

Linus Torvalds, criador do kernel Linux

A versão 2.2.0 do Linux, lançada em Janeiro de 1999 já continha 1.800.847 linhas de código. A próxima grande versão, a 2.4.0, lançada em Janeiro de 2001 continha quase o dobro deste número, com 3.377.902 linhas de código. Em Dezembro de 2003 é apresentada a versão 2.6.0 com 5.929.913 linhas de código. E como não foi possível encontrar números oficiais para a versão atual (2.6.37), a versão 2.6.36, de Outubro de 2010, contém miseras 13.499.457 linhas de código, nota para que a versão 2.6.36 possivelmente foi a primeira a apresentar uma redução no numero de linhas de código, em comparação com a sua anterior.
Linux Torvalds já declarou uma vez que o kernel Linux está se tornando muito inchado e sem melhorias visíveis no desempenho, desde que ele reassumiu o desenvolvimento do kernel parece disposto a enxugá-lo e deixá-lo menor. Quem sabe isto represente uma diminuição na velocidade do desenvolvimento, ou então uma melhora considerável na performance do mesmo. Só o tempo dirá.
O desenvolvimento do kernel Linux conta com a colaboração de importantes empresas do ramo de tecnologia. Google, Intel, AMD, Oracle, IBM, HP são apenas algumas das empresas que dedicam parte do seu pessoal para o desenvolvimento do kernel Linux. Não é possível deixar de fora da lista a Microsoft, principal concorrente dos sistemas Linux, que também já colaborou com códigos para o kernel Linux.
E para fechar, algumas pequenas, e interessantes, curiosidades sobre o kernel Linux:
  • Linus Torvalds desenvolveu o kernel Linux enquanto estudava na Universidade de Helsinki em 1991.
  • No ano passado, 75% do código criado para o kernel Linux foi desenvolvido por programadores que trabalham em empresas privadas.
  • 95% dos servidores que se utilizam nos estúdios de Hollywood para os filmes de animação rodam o kernel Linux.
  • O primeiro longa-metragem de sucesso produzido em servidores que rodavam o kernel Linux foi Titanic em 1997.
  • James Cameron também escolheu servidores com kernel Linux para produzir o filme Avatar.
  • Os servidores de Google rodam sob o kernel Linux.
  • Google contribuiu apenas 1,1% do código do atual kernel do Linux.
  • O kernel Linux está-se estendendo rapidamente no mercado de smartphones e outros dispositivos eletrônicos dentro do mercado de consumo.
  • Baixo a licença GPL, qualquer programador ou empresa que distribua o kernel do Linux deve proporcionar também o código fonte dentro do próprio pacote.
  • Em 1994, um tal William Della Croce Jr. registrou a marca Linux nos Estados Unidos e começou a pedir royalties às diferentes distribuições Linux.
  • Torvalds e seus advogados ganharam esta batalha em 1997 para recuperar o registro da marca Linux.
  • Estima-se que em um meio de desenvolvimento comercial o código fonte do kernel Linux custaria em torno dos 7,3 bilhões de dólares.
  • A analista IDC contempla que em 2012 as vendas de suporte para Linux superem 1 bilhões de dólares.

via http://blogs.forumpcs.com.br/espaco_aberto/2011/01/31/curiosidades-do-kernel-linux/4/

Nenhum comentário:

Postar um comentário