O Maravilhoso Mundo do Linux 2.6

Joseph Pranevich - jpranevich <at> kniggit.net
�ltima atualiza��o: Wed Jul 28 09:32:43 2004 - Arquivo original em <http://www.kniggit.net/wwol26.html>



O Maravilhoso Mundo do Linux 2.6

Apesar de que parece que foi ontem que est�vamos iniciando nossos primeiros sistemas Linux 2.4, o tempo passou e a equipe de desenvolvimento do kernel est� pr�xima da conclus�o do kernel v2.6. Este documento tentar� descrever muitas das novas funcionalidades do kernel 2.6 (com um �nfase na vers�o para i386 do Linux). Diferente de todos os an�ncios de pr�-releases de softwares closed-source, todas as funcionalidades descritas aqui j� est�o dispon�veis (algumas com menos bugs que outras) no kernel de desenvolvimento 2.5 do Linux (por tradi��o kerneis com n�mero �mpar na vers�o s�o somente para os intr�pidos). Dito isto, algumas das funcionalidades aqui descritas podem vir a ser removidas ou marcadas como "experimental" na vers�o final do 2.6. O desenvolvimento do kernel est� atualmente em uma fase de congelamento de funcionalidades, e � prov�vel que a vers�o final n�o ir� desviar-se muito do que est� descrito aqui. � preciso notar tamb�m que algumas das "novas" funcionalidades aqui discutidas podem vir a ser portadas para a vers�o 2.4 do Linux ap�s aparecerem primeiro no Linux 2.6, ou de forma oficial, ou pelo trabalho de alguma distribui��o.

Para tornar este documento um pouco mais complicado, a numera��o exata da pr�xima vers�o do Linux ainda n�o foi decidida. O n�mero de revis�o mais prov�vel � v2.6, mas existem algumas sugest�es de que seja escolhido o n�mero v3.0 devido � inclus�o do suporte a NUMA e MMU-less nesta vers�o (mais que na anterior). Por conveni�ncia, este documento ir� sempre se referir � pr�xima vers�o do kernel como sendo v2.6, e no tempo presente.

O que voc� est� lendo � o primeiro rascunho deste documento, do dia 13/7/2003, e baseado no kernel de desenvolvimento 2.5.75. Novas revis�es ser�o liberadas, conforme o trabalho final no kernel seja completado, mas este documento n�o ser� "oficialmente" fechado sen�o ap�s o lan�amento da vers�o final do Linux. E, como este � o primeiro rascunho, pode conter erros ou omiss�es. Se voc� encontrar um ou outro e me avisar, eu ficarei feliz em corrig�-los.

A Hist�ria...

O kernel do Linux foi iniciado em 1991 por Linus Torvalds como um Sistema Operacional Minix-like para seu 386. Linus originalmente quis nomear o novo sistema Freax, mas todos tivemos a sorte dele ter mudado de id�ia. A primeira vers�o oficial do Linux 1.0 foi em mar�o de 1994, que incluiu suporte oficial somente para o i386 e somente para m�quinas com um �nico processador. O Linux 1.2 foi lan�ado em mar�o de 1995 e foi a primeira vers�o a incluir suporte oficial para diferentes tipos de sistemas (especificamente, Alpha, Sparc, e MIPS). O Linux 2.0 foi lan�ado em junho de 1996 e incluiu suporte para um n�mero de novas arquiteturas, mas principalmente foi a primeira revis�o a suportar m�quinas multi-processadas (SMP). O Linux 2.2 foi lan�ado em janeiro de 1999 como um melhoramento incremental que tinha uma performance muito melhorada em m�quinas multi-processador e novamente suportava uma gama maior de hardware. E, finalmente, o Linux 2.4 foi lan�ado em janeiro de 2001 como um grande melhoramento de escalabilidade com o SMP, mas tamb�m incluindo a a integra��o de muitas funcionalidades de desktop na linha principal, incluindo USB, suporte a PC Card (aka PCMCIA), plug-and-play interno, etc. O Linux 2.6 n�o significar� apenas um melhoramento nestas funcionalidades, mas tamb�m ser� outro "grande salto" � medida que o Linux trabalha bastante no melhoramento do suporte tanto a sistemas significativamente maiores e significativamente menores (PDAs e outros dispositivos).

Suporte Multi Plataforma

Um dos pontos fortes dos Sistemas Operacionais Linux (como o GNU Operating System, o SO e ambiente C distribu�do com o Linux e que geralmente n�o � reconhecido como uma entidade separada) � que ele suporta um amplo leque de hardware e plataformas. Todas as vers�es desde a 1.2 tem inclu�do suporte para novos tipos de processadores e funcionalidades. A vers�o 2.6 do kernel Linux n�o � exce��o a esta tend�ncia, e, enquanto esta pode n�o impactar diretamente o uso do Linux em sistemas Intel, � muito importante que o Linux esteja t�o largamente dispon�vel quando poss�vel.

Escalando para Baixo -- Linux para Sistemas Embarcados

Uma das principais formas que o Linux 2.6 aumentou seu suporte para m�ltiplas plataformas foi pela aceita��o de muito do projeto uClinux dentro do kernel principal. O projeto uClinux (possivelmente pronunciado "you-see-Linux", mas mais provavelmente pronunciado com o caracter Grego "mu") � o projeto Linux para Micro. Por muitos anos, este desdobramento do Linux tem sido um carro-chefe para o suporte de muitos processadores embarcados, e � excelente t�-lo mais integrado na linha principal do Kernel.

Diferente dos ports normais do Linux, os ports embarcados descritos aqui n�o tem todos as mesmas funcionalidades do Linux normal devido a limita��es de hardware. A diferen�a principal � que estes ports contemplam processadores que n�o tem uma MMU (no mundo Intel, as MMUs foram introduzidas com o 386). Apesar destes sistemas serem sistemas Linux multi verdadeiros, eles n�o tem prote��o de mem�ria (de forma que qualquer programa pode causar falhas em qualquer outro programa) e algumas chamadas de sistema que tratam de novos processos est�o desabilitadas. E como eles n�o tem prote��o de mem�ria (e tamb�m quase toda seguran�a), isto implica que eles n�o s�o �teis para sistemas multi-usu�rios.

Existem quatro linhas principais de processadores embarcados suportados pelo Linux 2.6. O primeiro destes novos ports � para a nova linha Motorola de processadores m68k embarcados. Estes processadores tem nomes como Dragonball e ColdFire e est�o inclu�dos em sistemas e placas de teste feitas pela Motorola, Lineo, Arcturus, e outros. A maioria dos usu�rios Linux ter�o mais familiaridade com estes processadores j� que estes est�o dentro dos Palm Pilots, come�ando com o primeiro (o Palm 1000), at� o Palm III. Infelizmente, o suporte para processadores m68k mais s antigos sem MMUs (como os 68000s usados pelos primeiros Macintoshes) ainda n�o est� coberto por este software. Outras novas plataformas embarcadas suportadas incluem a s�ria H8/300 da Hitachi (ainda n�o inclui o H8S, mas pode vir a ser integrado em breve) e o processador Nec v850.

� dif�cil sub-enfatizar a principal mudan�a de arquitetura que est� acontecendo com o suporte a sistemas sem MMU no Linux 2.6. Todas as vers�es anteriores do Linux foram derivadas, mesmo que indiretamente, das limita��es inerentes ao trabalho inicial de Linus em um Intel 80386. Extrapolando nesta dire��o, � poss�vel que outros hardwares mas antigos tamb�m possam vir a ser suportados no futuro (de fato, existem projetos trabalhando com este objetivo) e muitas e excitantes portas tem sido abertas. Diferente do trabalho em processadores embarcados modernos e em produ��o inclu�dos aqui, o suporte a processadores mais antigos ser� considerado um objetivo de hobby e provavelmente n�o muito �teis para usu�rios finais (e possivelmente n�o ser� considerado importante o suficiente para ser inclu�do nas vers�es oficiais do Linux no futuro).

Apesar de n�o ser tecnicamente uma parte da uni�o com o uClinux (por que inclui uma MMU), vers�es recentes do Linux tamb�m incluem suporte aos processadores ETRAX CRIS ("Code Reduced Instruction Set") da Axis Communications (especificamente, o ETRAX 100LX e mais novos s�o suportados). O suporte para este processador foi inclu�da durante o ciclo de desenvolvimento do 2.4, mas foi introduzido ap�s o 2.4.0, por isto merece uma men��o. � um processador embarcado que � principalmente para uso com equipamentos de rede. O ETRAX100 � um processador relacionado mas sem MMU que � suportado pelo uClinux, mas o suporte para o mesmo na linha principal do kernel Linux n�o foi integrado.

Suporte ao Opteron - Linux 64-bit para o Consumidor

Outro processador que foi integrado durante o ciclo de desenvolvimento do 2.4.x mas que merece ser mencionado aqui � o novo suporte do Linux para os chips AMD Opteron (baseados na arquitetura AMD64). Este � um novo chip com retro-compatibilidade com processadores clones de Intel existentes e que pode receber apoio at� da Microsoft. Se este processador ou algum da fam�lia Itanium da Intel vir� a se tornar o padr�o de facto para produtos 64-bits � algo que ainda veremos.

Enquanto as �ltimas vers�es do kernel 2.4 suportam este processador, existem limita��es que impedem que o mesmo esteja pronto para produ��o. A limita��o mais cr�tica para os usu�rios high-end pode ser a de que as aplica��es est�o limitadas individualmente a 512 MB de RAM cada. Adicionalmente, o suporte para a execu��o de bin�rios x86 (32-bit) na plataforma foi melhorado.

Suporte de Subarquiteturas

Al�m das v�rias novas arquiteturas de processador que o Linux 2.6 suporta, a nova vers�o do Linux tamb�m inclui um novo conceito chamado de "subarquiteturas". Anteriormente, o Linux partia da suposi��o de que os tipos de processadores e de hardware andavam juntos. Ou seja, que processadores descendentes do i386 eram somente utilizados em servidores descendentes do PC/AT. No Linux 2.4 esta hip�tese foi abandonada para o i386 com a adi��o do suporte � Visual Workstation da SGI, uma plataforma "legacy-less" rodando um chip Intel (de fato, a hip�tese foi abandonada bem antes em muitas outras arquiteturas - por exemplo, o m68k tem h� muito tempo suportado Amigas, Macintoshes, e outras plataformas). A grande mudan�a no Linux 2.6 � que esta funcionalidade e conceito foi tornada padr�o, de forma que todas as arquiteturas tratam este aspecto de forma similar, mais limpa, que permite uma separa��o mais clara somente dos componentes que precisam ser separados.

Com esta padroniza��o vieram duas novas plataformas para suportar o i386. A primeira � a arquitetura Voyager da NCR. Esta � um sistema SMP (desenvolvido antes da especifica��o Intel MP que � o padr�o atual) que suporta processadores 486-686 em configura��es de at� 32 processadores. O n�mero real de configura��es que foram vendidas com esta arquitetura � relativamente pequeno, e nem todas as m�quinas tem suporte atualmente (as mais antigas n�o s�o mais suportadas). A segunda arquitetura suportada � a plataforma PC-9800, mais difundida, desenvolvida pela NEC na plataforma (praticamente) dominante no Jap�o at� pouco tempo. As m�quinas PC-9800 originais eram vendidas com um processador 8086 e a linha eventualmente evoluiu e amadureceu (em paralelo com os descendentes de AT) at� possuir processadores da classe Pentium e suporte a SMP (obviamente, o suporte para Linux est� limitado ao 80386 ou melhor). Apesar de ser completamente desconhecido nos EEUU, as vers�es dos produtos Microsoft at� o Windows 95 foram portadas para serem executadas neste hardware. A linha foi oficialmente descontinuada pelo fabricante em favor de PCs mais "padronizados".

Ao formalizar o suporte Linux a estes tipos de hardware levemente diferentes, torna-se mais f�cil permitir que o sistema operacional seja portado a outros sistemas, como equipamentos de armazenamento dedicados e outros componentes que usam tipos de processadores dominantes na ind�stria. Para ser claro, esta subdivis�o n�o deve receber excessiva aten��o. Estas sub foram separadas por que certos componentes de baixo n�vel do sistema (como o roteamento de IRQ) s�o um pouco ou radicalmente diferentes. Isto � diferente de executar o Linux em um X-Box, por exemplo, onde relativamente pouco mais que alguns drivers de hardware e algumas esquisitisses separam o sistema de um sistema i386 "gen�rico". O suporte ao X-Box n�o dever� ser uma sub.

Escalando para Cima - NUMA e os Supercomputadores

Al�m do suporte a estes novos tipos de hardware, a nova vers�o do kernel Linux tamb�m inclui funcionalidades que o tornam mais aceit�vel em servidores maiores (alguns com processadores i386, outros n�o). Como este suporte � bem novo no Linux, muito trabalho de otimiza��o ainda precisa ser feito. Esta � uma �rea em que o Linux est� crescendo e amadurecendo rapidamente, e podemos esperar que ele venha a ser um forte contendor neste espa�o em relativamente pouco tempo.

Uma das grandes mudan�as neste respeito � o novo suporte do Linux para servidores NUMA. NUMA (ou "Non-Uniform Memory Access") est� um passo adiante do SMP no mundo do multi-processamento e � um passo adiante para a performance em sistemas que possuem muitos processadores. Os sistemas SMP foram projetados com algumas das mesmas limita��es de suas contra uniprocessadas. Uma das ramifica��es mais limitantes desta escolha de projeto � que � baseado em um �nico conjunto de mem�rias que � igualmente acess�vel a todos os processadores. Em um sistema multi-processado, existe uma taxa de conten��o extremamente alta entre os m�ltiplos processadores para o �nico barramento de mem�ria, levando a gargalos de performance. Os servidores NUMA v�o al�m por introduzir o conceito que, para um processador espec�fico, algumas mem�rias est�o mais perto que outras. Uma maneira f�cil (e n�o muito errada tecnicamente) de imaginar isto � que voc� tem um sistema com placas de expans�o contendo CPUs, mem�ria e possivelmente outros componentes (I/O, etc.). Existem muitas outras placas em um sistemas e mesmo que elas possam todas conversar entre si, � bem claro que as CPUs tem o melhor tempo quando se comunicam com a mem�ria local (a mem�ria na pr�pria placa em vez de em uma placa separada). De v�rias formas, a nova arquitetura NUMA � um exemplo de um cluster bem unido.

Para suportar apropriadamente estas novas m�quinas NUMA, o Linux teve que se adaptar em v�rios aspectos para tornar o novo modelo eficiente. Para come�ar, uma topologia de API interna foi criada para permitir que os componentes internos do kernel entendessem os relacionamentos de um processamento ou um conjunto de mem�rias aos dispositivos de I/O e entre si. Com este suporte, o escalonador de processos do Linux � agora capaz de entender estes relacionamentos e tentar� otimizar as tarefas para o melhor uso dos recursos locais. Adicionalmente, muitas m�quinas NUMA s�o constru�das deforma que possuem "buracos" no espa�o da mem�ria linear "entre" os n�s. O novo kernel � capaz de tratar estes casos de descontinuidade de uma forma bem razo�vel. Existem muitas outras mudan�as internas que foram feitas para permitir ao Linux o suporte a estas m�quinas de alto desempenho, e esta � definitivamente uma �rea de crescimento para o kernel como um todo. No decurso do pr�ximo ano, podemos esperar este suporte efici�ncia e outros melhoramentos no suporte do Linux a estes sistemas de alto desempenho.

Aspectos Internos do Linux

Al�m de suportar mais e novos tipos de hardware, o Linux 2.6 tamb�m oferece melhoramentos no suporte para as plataformas existentes conforme elas (e o Linux) evoluem. Est�o a� inclu�das as otimiza��es espec�ficas de CPU para o Crusoe da Transmeta, o Pentium4 Xeon da Intel, o Pentium 3-M, o Pentium 4-M, e os processadores para dispositivos m�veis AMD. As novas vers�es do Linux tamb�m s�o capazes de contornar um bug em alguns Athlons. E enquanto muitos usu�rios n�o percebem o bug, o Linux 2.6 tamb�m resolveu um problema em que alguns sistemas com mais de 16 processadores congelam ou reiniciam.

Hyperthreading

Apesar de n�o ser novo no Linux 2.6, o kernel come�ou incluindo suporte para "hyperthreading" nos processadores Intel P4 com a vers�o 2.4.17 (esta funcionalidade est� inclu�da aqui porque ela n�o era parte da vers�o inicial do Linux 2.4 e tamb�m devido a grandes mudan�as que ocorreram desde ent�o). O hyperthreading � a capacidade de um �nico processador aparecer como dois (ou mais) processadores a partir da perspectiva do sistema operacional. A coisa mais incr�vel sobre isto � que o Linux foi o primeiro SO a trazer esta funcionalidade ao mercado, apesar de que processadores compat�veis terem sido lan�ados pela Intel quase um ano atr�s. Existem boatos de que a Microsoft n�o est� certa se vai cobrar a licen�a para um processador com hyperthreading como uma ou duas CPUs. O modelo aberto do Linux (e a aus�ncia de licen�as) permitiram ao Linux OS ser o primeiro a suportar esta nova funcionalidade. Obviamente, um �nico processador que finge ser dois ainda � um �nico processador e a performance n�o melhora muito.

Outra coisa que � nova no 2.5 � que o escalonador e outros componentes foram otimizados de forma que o hyperthreading em uma CPU pode representar um ganho. Sob o 2.4, isto n�o acontece sempre e algumas tarefas ficam mais lentas se o hyperthreading est� habilitado.

O Tamanho Importa - Avan�os na Escalabilidade

Al�m do suporte ao NUMA, o Linux 2.6 tamb�m tem outras altera��es para servidores Intel que est�o no topo da cadeia alimentar. Primeiro e principalmente est� o suporte completo para o PAE da Intel ("Physical Address Extension") que permite que a maioria dos novos sistemas 32-bit x86 acessem at� 64 GiB de RAM, mas em um modo paginado. Al�m disso, atrav�s de um suporte melhorado ao APIC e outras mudan�as, o balanceamento de IRQ melhorou significativamente em sistemas multiprocessados.

Em muitos outros aspectos, os limites internos tem sido aumentados quando poss�vel. O n�mero de usu�rios �nicos em um sistema Linux saltou de 65.000 para mais de 4 bilh�es (16-bit para 32-bit). Isto torna o Linux mais pr�tico em grandes servidores de arquivo e autentica��o, em que era poss�vel atingir o limite anterior. De forma semelhante, o n�mero de PIDs (Process IDs) antes de retornar ao in�cio aumentou de 32.000 para 1 bilh�o. Esta altera��o, combinada com outras efici�ncias no subsistema PID, ir� ajudar a melhorar a performance inicial de aplica��es em sistemas bastante atarefados ou com vida longa. Apesar do n�mero m�ximo de arquivos abertos n�o ter sido aumentado, com o kernel 2.6 o Linux n�o ir� exigir que voc� pr�-configure o limite, este n�mero ir� auto-escalar. E, finalmente, o Linux2.6 ir� incluir um suporte 64-bit melhorado para dispositivos de bloco que suportarem o mesmo, mesmo em plataformas 32-bit como o i386. Isto permite filesystems de at� 2TB.

Interatividade e Responsibilidade do Kernel

Uma das �reas de foco do Linux 2.6 tem sido tornar o sistema mais responsivo para usu�rios de desktop e outros usos que necessitam de um alto grau de controle sobre quando os eventos acontecem. Cada um destes objetivos tem desafios bem diferentes, mas existem muitas altera��es que podem beneficiar a ambos.

Uma altera��o interna principal presente no kernel 2.6 que n�o pode ser subestimada � que o pr�prio kernel � agora preemptivo. Em todas as vers�es anteriores do Linux, quando o SO estava fazendo alguma coisa no kernel, ele n�o poderia ser interrompido (e em m�quinas multi-processadas, isto era verdadeiro em uma base por-CPU). A partir do Linux 2.6, o kernel agora permite que seja interrompido em meio a uma tarefa de forma que as aplica��es possam continuar a ser executadas mesmo se o kernel esteja fazendo alguma coisa complicada (para evitar as race conditions �bvias que esta funcionalidade pode causar, o kernel tem certas se��es de c�digo bloqueadas, de forma que n�o possam ser interrompidas enquanto em execu��o). O benef�cio prim�rio desta altera��o � que a performance interativa (para usu�rios de desktop, por exemplo) recebeu um melhoramento, e o sistema ir� "parecer" mais r�pido para coisas como entrada de usu�rio.

Uma outra mudan�a que ir� ajudar a fazer do Linux um sistema operacional mais responsivo com aplica��es que suportam o mesmo � a inclus�o do suporte para novas "futextes" (ou "Fast User-Space Mutexes", se isto ajuda). Futexes s�o uma forma em que m�ltiplos processos ou threads podem serializar eventos de forma que eles n�o se atropelem (uma "race condition"). Diferente das opera��es mutex tradicionais que a maioria das bibliotecas de threading suportam, este � parcialmente baseado no kernel (mas somente no caso de conten��o) e tamb�m suporta a configura��o de prioridades para permitir que aplica��es ou threads de prioridade elevada acessem o recurso concorrido primeiro. Ao permitir que um programa especifique que uma tarefa em espera � mais importante que outra, ele permite maior responsividade no que podem ser as �reas mais cr�ticas de tempo de uma aplica��o.

Os subsistemas de I/O tamb�m tem experimentado grandes altera��es para permitir que se torne mais responsivos sob todos os tipos de carga. Estas altera��es incluem uma reescrita completa do subsistema de escalonamento de I/O, o c�digo do kernel que determina quais processos v�o ler os dispositivos e quando. A camada rec�m reescrita tem agora uma melhor capacidade de garantir que nenhum processo fique travado aguardando em linha por I/O por muito tempo, ao mesmo tempo que permite as antigas otimiza��es que certificam-se que as leituras, por exemplo, aconte�am na ordem mais eficiente para o hardware.

Enquanto os programadores de aplica��es "real time" (RTOS) ir�o beneficiar-se destas mudan�as, o Linux 2.6 n�o ser� um kernel real-time completo. Entretanto, esta e outras mudan�as criam as bases para que uma vers�o completamente RTOS do Linux seja poss�vel, e patches externos tem sido disponibilizados (embora ainda n�o aprovados e integrados em uma vers�o oficial do kernel) que podem oferecer este suporte para usu�rios e programadores que precisam da mesma agora.

Subsistema de M�dulos - Drivers de Dispositivos

O susbsitema de m�dulos � outra �rea que avan�ou bastante com o advento do Linux 2.6. Muito do c�digo foi reescrito com a inten��o de melhorar a estabilidade e tornar o sistema mais transparente. Al�m destas altera��es externas �bvias, muitas coisas mudaram internamente, na forma que o kernel v� e usa os m�dulos.

A primeira e mais �bvia mudan�a (pelo menos funcionalmente) nos drivers de dispositivos no Linux 2.6 � que a extens�o dos arquivos mudou. Em vez de ser ".o" (uma extens�o comum para arquivos "objeto", arquivos geralmente criados durante a compila��o de qualquer programa, antes que a fase de linking seja feita para criar uma aplica��o execut�vel), a nova extens�o � ".ko" ("kernel object"). Esta � uma altera��o apenas cosm�tica, e apenas torna mais claro que os m�dulos n�o s�o realmente arquivos intermedi�rios.

Completamente n�o cosm�tico � o trabalho extensivo para eliminar as race conditions que tem estado presentes no c�digo por muitas revis�es. O xis do problema � que era poss�vel ter um dispositivo usando um m�dulo enquanto o mesmo estava sendo descarregado, mas ap�s o m�dulo ter feito as verifica��es para garantir que ningu�m o estava usando. O novo c�digo de m�dulos do kernel torna esta condi��o mais dif�cil de disparar. Para levar esta solu��o um passo adiante, tamb�m � agora poss�vel simplesmente desabilitar a descarga de m�dulos em geral.

Uma maior transpar�ncia � outra funcionalidade no novo subsistema de m�dulos. Em quase todas as vers�es anteriores do Linux, os m�dulos eram espertos o suficiente para detectar dispositivos que podiam suportar fazendo pesquisas nos barramentos (como o PCI, ISA PnP, e PC Card) por IDs de dispositivos que ele reconhecia. No Linux 2.6, muito deste suporte foi padronizado e tornado externo ao kernel, de forma que ser� f�cil para programas externos e carregadores de m�dulos ver quais dispositivos um m�dulo em particular ir� suportar. Isto ir� permitir que os v�rios programas de gerenciamento de hardware (como o "kudzu" da RedHat) tomar decis�es inteligentes sobre hardware, mesmo quando eles n�o est�o familiarizados com os dispositivos em que est�o trabalhando. E, no caso de voc� saber mais que a vers�o atual do driver, ainda � poss�vel (via uma interface com o novo filesystem "sys", veja abaixo) for�ar um driver a tentar trabalhar com um dispositivo espec�fico, mesmo se ele n�o sabe que � suportado.

Outros Melhoramentos

Al�m das muitas altera��es descritas acima, existem outras mudan�as internas gen�ricas no Linux que ir�o melhorar a performance em muitos casos. Estas incluem mais remo��es do "Big Kernel Lock" (travas n�o granulares que eram usadas nos prim�rdios do suporte do Linux a multi-processadores), otimiza��es nas leituras e escritas do filesystem, e manipula��o de pequenos arquivos, e outras.

Existe mais um problema de estabilidade que foi resolvido com o Linux 2.6: n�o � mais poss�vel alocar mais que a quantia m�xima de RAM (mais swap) que voc� tem no sistema. Anteriormente, o Linux iria permitir que a chamada a malloc() ("memory allocation") tivesse sucesso em alguns casos, mesmo quando n�o houvesse mais mem�ria livre. A l�gica de sobrecompromisso foi revisada e este caso dever� ser agora imposs�vel (obviamente, se voc� usar toda a RAM do sistema, mesmo sem exceder o m�ximo, voc� tem problemas piores para se preocupar).

O Linux sempre foi um divulgador dos benef�cios dos padr�es abertos. Uma das grandes altera��es internas � que a infraestrutura de threading do Linux foi reescrita para permitir que a Native POSIX Thread Library (NTPL) seja executada sobre ele. Isto representa um grande melhoramento de performance para o processador Pentium Pro e processadores superiores em aplica��es que fazem uso extensivo de threading em muito dos grand�es na �rea do "enterprise" tem pedido por isto (a RedHat fez um backport deste suporte para o Linux 2.4 e inclui o mesmo no RedHat 9.0). Isto inclui novos conceitos ao espa�o de thread do Linux incluindo grupos de thread, mem�ria local para threads individuais, sinais no estilo POSIX, e outras mudan�as. Um dos maiores problemas � que aplica��es (como o Java da Sun) que n�o foram escritas segundo padr�es e que esperam o comportamento de antigos Linuxismos ir�o falhar se o novo suporte estiver habilitado. Como os benef�cios superam o custo (e com tantos jogadores grand�es no jogo), � claro que as aplica��es mais importantes ir�o suportar as altera��es n�o muito tempo depois que o novo kernel seja lan�ado.

E, finalmente, apesar de n�o haver um benef�cio direto para a maioria das aplica��es do Linux, o kernel 2.6 agora inclui a capacidade de desabilitar completamente o suporte a swap durante a compila��o. Isto ir� permitir que o Linux seja executado com um consumo de mem�ria um pouco menor e pode ser �til para dispositivos embarcados, em que � pouco prov�vel que um dispositivo de swap venha a ser usado.

Modelo Unificado de Dispositivos

Geralmente visto como um componente separado de um sistema operacional, um modelo de dispositivo � essencial para um SO que seja projetado para executar em uma grande variedade de hardware. Em resumo, o modelo de dispositivos � a infraestrutura dentro do kernel que detecta e determina o uso de recursos de todos os componentes opcionais do sistema. Todos os sistemas operacionais (e algumas vers�es do Linux) possuem intrinsecamente algum conceito de dispositivo. Vers�es mais antigas do Linux (2.2 e anteriores), possuem apenas uma abordagem crua ao gerenciamento de dispositivos. Existem drivers para diferentes tipos de barramentos de hardware e os v�rios barramentos possuem v�rias e incompat�veis APIs para o tratamento de v�rias opera��es. O Linux 2.4 foi o primeiro est�gio para um modelo de dispositivos "unificado" ao reunir PCI, PC Card e ISA Plug-and-Play em uma �nica estrutura de dispositivos com uma interface comum. O Linux 2.6 expandiu enormemente estes esfor�os para produzir uma vis�o completamente nova de como o kernel Linux v� o hardware em que est� sendo executado e que � universal no sistema.

Abstra��o de Objetos do Kernel

O n�cleo central da nova infraestrutura de modelo de dispositivos � uma nova interface orientada a objetos que todos os tipos de dispositivos de baixo n�vel precisam usar. Esta estrutura de objetos dispositivos do kernel (chamada "kobject") inclui todas as interfaces para contagem de refer�ncia e para tratamento de sub-dispositivos. Os dispositivos de n�vel mais baixo (como barramentos de sistema) agora usam esta camada comum para apresentar uma vis�o unificada do sistema tanto no kernel como no user-space. Agora que tudo isto foi centralizado, � poss�vel para o Linux fazer muitas coisas �teis com estas informa��es.

Com estas novas informa��es todas no kernel, � poss�vel ao Linux oferecer um suporte melhorado para sistemas em que um conhecimento profundo do hardware � necess�rio. Um exemplo �bvio de onde esta informa��o � �til ocorre no gerenciamento de energia. O novo padr�o de gerenciamento de energia nos �ltimos anos � o ACPI. O suporte a ACPI, "Advanced Configuration and Power Interface", foi introduzido inicialmente no Linux 2.4. Diferente do APM, os sistemas com esta nova interface devem informar individualmente todos os dispositivos compat�veis no sistema que eles precisam mudar seu estado de energia. O novo sistema do kernel � exatamente o que o doutor prescreveu para permitir que o sistema controle os dispositivos que precisam ser desligados ou que precisam de outras altera��es. Um segundo exemplo onde esta informa��o � �til � com barramentos que suportem "hot plug". A capacidade de um dispositivo de ser acrescentado a um sistema depois da inicializa��o agora parece bastante comum e direta, mas o suporte real do Linux a estes dispositivos n�o apareceu at� o Linux 2.2. Desde o Linux 2.4, este suporte foi melhorado e foi acrescentado suporte para fot-plugging de dispositivos PCI, PC Card, USB, e Firewire. A nova revis�o do sistema centralizado de dispositivos do kernel expande este suporte ao remover as diferen�as entre dispositivos hot-plug e dispositivos legados. Quando voc� inicia o seu computador, a rotina de detec��o de dispositivos sistematicamente "pluga" todos os dispositivos em seu sistema. Como um objeto de kernel � criado para todos os objetos no sistema quando eles s�o descobertos, e como isto � essencialmente igual se o dispositivo � descoberto durante a inicializa��o ou mais tarde, muito da infraestrutura que trata dos dispositivos plug�veis foi simplificada.

O Filesystem do Sistema

Possivelmente, a mais �bvia ramifica��o vis�vel ao usu�rio deste novo modelo de gerenciador � a cria��o de um novo filesystem de sistema (unindo-se ao 'proc' dos processos, 'devfs' para dispositivos, e 'devpts' para os pseudo-terminais UNIX98), chamado 'sysfs'. Este filesystem (que se pretende seja montado em '/sys') � uma representa��o vis�vel da �rvore de dispositivos, como o kernel v� a mesma. O kernel obt�m toda a informa��o atrav�s do acoplamento com o subsistema de objetos de kernel: quando um objeto de kernel � criado, tamb�m � criado um arquivo ou diret�rio apropriado (� poss�vel para um kobject explicitamente n�o ter um registro no sysfs, se houver uma raz�o para tal).

Uma vez que cada dispositivo (ou cada kobject) no sistema recebe uma �nica estrutura de diret�rio, o pr�ximo passo l�gico foi exportar os v�rios atributos conhecidos (nome do dispositivo, modo de energia, irq, e este tipo de coisas) do dispositivo para a �rvore de forma que eles pudessem ser lidos e escritos por um administrador de sistema. Isto trouxe um efeito colateral ben�fico (apesar de inicialmente confuso) de que muitos usos de /proc/sys espec�ficos para dispositivos puderam ser movidos para /sys, ou o ser�o em uma data futura.

Suporte a Hardware B�sico

� medida que o Linux avan�ou pelos anos e em dire��o � popularidade, cada itera��o do kernel pareceu um salto e estava melhor amarrada que as vers�es anteriores em termos dos tipos de dispositivos suportados tanto em termos de suporte a tecnologia emergentes (USB no 2.4) e de suporte a velhas tecnologias "legadas" (MCA no 2.2). Entretanto, quando chegamos no kernel 2.6, o n�mero de dispositivos que o Linux n�o suporta � relativamente pequeno. Existem poucos, se os houver, ramos do universo de hardware PC ainda a conquistar. � por esta raz�o que a maior parte (mas certamente n�o a totalidade) do melhoramento no suporte a hardware PC (incluindo o modelo de dispositivos, descrito acima) est� relacionado ao fortalecimento do suporte que j� est� presente.

Barramentos de Dispositivos Internos

Quase t�o importante quanto o processador, os barramentos em um sistema s�o a cola que mant�m as partes unidas. O mundo do PC tem sido aben�oado com abund�ncia das tecnologias de barramento, desde a velha ISA (encontrada no IBM PC original) aos barramentos seriais externos e wireless modernos. O Linux tem sido sempre r�pido em se adaptar a novos barramentos e tipos de dispositivos conforme eles tem se tornado populares com os dispositivos comercializados, e significantemente menos r�pido a se adaptar a tecnologias que s�o de relativamente pouco uso.

Um exemplo em que o Linux veio a suportar um tipo de barramento tardiamente foi quando finalmente foi inclu�do suporte � extens�o ISA Plug-and-Play (PnP) no Linux 2.4, muito depois que os SOs comerciais populares inclu�ram suporte ao mesmo (era poss�vel fazer com que o mesmo funcionasse utilizando alguns utilit�rios meia-boca de user-space antes do 2.4). O Linux 2.6 inclui uma atualiza��o enorme neste subsistema, tornando-o praticamente completo no que toca a funcionalidades e melhor integrado com o resto do novo modelo de dispositivos. As novas funcionalidades incluem suporte completo a PnP BIOS, um banco de dados de nomes de dispositivos, e outras altera��es que tornam o suporte mais robusto. A soma de todas estas modifica��es resulta que agora o Linux � um "verdadeiro" SO Plug-and-Play e pode ser configurado como tal em qualquer BIOS de m�quinas compat�veis.

As alternativas (relativamente impopulares) ao PnP na era do ISA eram o MCA (ou Microchannel Architecture) e EISA (ou Extended Industry Standard Architecture). Os dois subsistemas receberam algumas atualiza��es durante o ciclo de desenvolvimento do 2.6 para suportar o novo modelo de dispositivo. Al�m disto, o EISA recebeu alguma padroniza��o com os outros subsistemas atrav�s da inclus�o de um banco de dados de dispositivos.

Al�m destes pontos importantes, houveram v�rias outras mudan�as no suporte do Linux a barramentos de hardware. O barramento PCI do Linux, o mais prevalente e importante de todos os barramentos, recebeu um �nfase durante o desenvolvimento do Linux 2.6, incluindo um suporte melhorado a hot-plug e gerenciamento de energia. De forma semelhante, a nova vers�o tamb�m inclui suporte para sistemas com m�ltiplas AGPs ("accellerated graphics ports" -- um barramento de alta velocidade separado que tamb�m usa o protocolo PCI), como as workstations gr�ficas de alto desempenho. Em termos de suporte a estes aspectos internos do PC, o Linux est� acompanhando as tend�ncias de hardware do mercado.

Em acr�scimo a todos os barramentos de dispositivos "reais", o Linux 2.6 acrescentou (pelo menos internamente) o conceito de barramento "legado". Este � um tipo de barramento que � espec�fico a cada arquitetura que cont�m todos os dispositivos que se espera encontrar. Em um PC, por exemplo, este pode incluir portas on-board seriais, paralelas e PS/2 -- dispositivos que existem mas que n�o s�o enumerados por nenhum barramento real no sistema. Em algumas plataformas, este suporte legado pode envolver coisas mais complicadas (tais como consultar o firmware), mas em geral � apenas uma camada que permite que estes dispositivos sejam tratados de uma forma padronizada dentro do novo paradigma.

Barramentos de Dispositivos Externos

Enquanto estes padr�es antigos de dispositivos amadureceram mas tiveram poucas funcionalidades novas acrescentadas, este n�o � o caso com o USB. O Universal Serial Bus viu numerosos melhoramentos durante o ciclo de desenvolvimento mais recente. A mudan�a mais not�vel � que o novo kernel ir� suportar dispositivos USB 2.0. O USB2 � o novo padr�o que suporta uma largura de banda de dispositivo de at� 480 megabits por segundo (compare com os 12 mbit/seg do USB atual). Os dispositivos que suportam este padr�o geralmente s�o chamados de dispositivos USB de "alta velocidade" e est�o gradualmente tomando conta do mercado. Um padr�o novo e relacionado, o USB On-the-Go (ou USB OTG), uma variante ponto-a-ponto no protocolo USB para conectar dispositivos diretamente (por exemplo, para conectar uma c�mera digital a uma impressora sem ter um PC no meio) atualmente n�o � suportado no Linux 2.6 (alguns patches para esta funcionalidade est�o dispon�veis, mas ainda n�o fazem parte da vers�o oficial). Al�m do suporte a dispositivos, muito da forma que os dispositivos USB s�o enumerados internamente foi revisado, de forma que agora � poss�vel ter muitos mais dispositivos do mesmo tipo, todos acess�veis no Linux. Este aspecto ir� beneficiar primeiro grandes servidores de impress�o e armazenamento (apesar de que os �ltimos provavelmente ir�o usar um barramento de armazenagem dedicado). Esta � definitivamente uma �rea em que a tecnologia cresceu significantemente os �ltimos anos, e o Linux est� trabalhando para se manter no ritmo do mercado.

Dispositivos Wireless

A tecnologia wireless tornou-se realmente popular nos �ltimos anos. �s vezes parece que cabos (exceto os de energia) ser�o uma coisa do passado em alguns anos. Os dispositivos wireless englobam tanto os dispositivos de rede (o tipo mais comum atualmente), e tamb�m dispositivos mais gen�ricos, como PDAs, etc.

Em se tratando de dispositivos de rede wireless, os dispositivos podem ser geralmente divididos em dispositivo de longo alcance (por exemplo, o AX.25 sobre dispositivos de r�dio amador) e curto alcance (normalmente 802.11, mas existem alguns protocolos mais antigos). O suporte a ambos os tipos tem sido uma marca do Linux desde as primeiras vers�es (v1.2) e os dois receberam atualiza��es durante o desenvolvimento do 2.6. A maior mudan�a aqui � que os principais componentes da pequena gama de subsistemas para as v�rias placas e protocolos suportados foram reunidos em um �nico subsistema e API "wireless". Esta uni�o resolveu um certo n�mero de pequenas incompatibilidades na forma que diferentes dispositivos tem sido tratados e fortaleceu o suporte do Linux para os mesmos ao criar um conjunto central de ferramentas para o userspace que ir�o funcionar com todos os dispositivos suportados. Al�m da padroniza��o, o Linux 2.6 introduz um certo n�mero de melhoramentos, incluindo uma capacidade melhorada de notificar eventos como uma mudan�a de estado (como quando um dispositivo que tenha um estado "roaming") e altera��es ao TCP para tratar melhor os pulsos de atraso peri�dicos que ocorrem em dispositivos wireless. Devido a press�o de melhorar o suporte a dispositivos wireless no Linux 2.4, muitas destas altera��es j� est�o presentes no kernel dispon�vel.

No espa�o de dispositivos wireless, houveram tamb�m alguns avan�os similares. O IrDA (o protocolo para infravermelho que recebeu o nome do grupo Infrared Data Associates) recebeu alguns avan�os desde a �ltima vers�o principal, como gerenciamento de energia, e integra��o no novo modelo de drivers do kernel. Os avan�os reais foram feitos no suporte do Linux a dispositivos Bluetooth. O Bluetooth � um novo protocolo wireless que foi projetado para ter um alcance curto e baixo consumo de energia, mas n�o tem as mesmas limita��es de linha de visada que o IrDA tem. O Bluetooth, como um protocolo, foi projetado para ir "em qualquer lugar" e tem sido implementado em dispositivos como PDAs, celulares, impressoras, e coisas mais bizarras como equipamentos automotivos. O protocolo em si tem dois tipos diferentes de links de dados: SCO, ou "Synchronous Connection Oriented", para aplica��es atenuadas de �udio, e L2CAP, ou "Logical Link Control and Adaptation Protocol", para uma conex�o mais robusta, que suporta retransmiss�o, etc. O protocolo L2CAP tamb�m suporta v�rios sub-protocolos (incluindo o RFCOMM para redes ponto-a-ponto e BNEP para redes tipo Ethernet). O suporte Linux para as coisas que o Bluetooth pode fazer continua crescendo e podemos esperar que amadure�a significativamente � medida que mais dispositivos chegam �s m�os dos consumidores. Tamb�m deve ser mencionado que o suporte inicial para o Bluetooth foi integrado nas �ltimas edi��es do kernel 2.4.

Suporte a Dispositivos de Bloco

Barramentos de Armazenagem

Barramentos dedicados de armazenagem, como o IDE/ATA e o SCSI, tamb�m receberam uma atualiza��o durante o ciclo do 2.6. As principais altera��es est�o centradas no sub-sistema IDE, que foi reescrito (e novamente reescrito) durante o desenvolvimento do novo kernel, resolvendo muitos problemas de escalabilidade e outras limita��es. por exemplos, drives CD/RW IDE agora podem ser escritos diretamente no driver de disco IDE real, uma implementa��o muito mais limpa que a anterior (anteriormente era tamb�m necess�rio usar um driver especial de emula��o SCSI o que era confuso e geralmente dif�cil). A camada IDE agora � capaz de consultar a BIOS da m�quina quando encontra um controlador que n�o � reconhecido de forma que pode usar valores razo�veis para temporiza��es e outros dados necess�rios. No lado dos SCSI, houveram tamb�m pequenos melhoramentos espalhados pelo sistema tanto tratando de um maior suporte quanto escalabilidade. Um melhoramento espec�fico para sistemas antigos � que agora o Linux suporta dispositivos multivias SCSI-2 que possuem mais que 2 LUNs em um dispositivo (o SCSI-2 era a vers�o anterior do padr�o de dispositivos SCSI, de 1994). Outra mudan�a importante � que o Linux agora pode retornar ao teste de m�dia como o Microsoft Windows faz, para ser mais compat�vel com dispositivos que n�o seguem completamente a especifica��o. Conforme estas tecnologias se estabilizaram no tempo, tamb�m o suporte do Linux �s mesmas tamb�m estabilizou-se.

Apesar de n�o ser propriamente um barramento de armazenagem, o Linux agora inclui suporte para acessar a nova BIOS EDD (Enhanced Disk Device) diretamente para ver como o servidor v� seus pr�prios dispositivos de disco. A EDD BIOS inclui informa��es sobre todos os barramentos de armazenagem que est�o conectados ao sistema que a BIOS conhece (incluindo tanto IDE quanto SCSI). Al�m de obter informa��es de configura��o e outras informa��es dos dispositivos conectados, h� outras vantagens nisto. Por exemplo, esta nova interface permite que o Linux saiba de qual dispositivo o sistema foi inicializado, o que � �til em novos sistemas em que isto nem sempre � �bvio. Isto permite que programas de instala��o inteligentes considerem estas informa��es quando est�o determinando onde colocar o GRUB (o carregador de boot do Linux), por exemplo.

Al�m de todas estas altera��es, deve ser enfatizado novamente que todos os tipos de barramentos de dispositivos (hardware, wireless, e armazenamento) foram integrados no novo subsistema de modelo de dispositivos do Linux. Em alguns casos, estas mudan�a s�o cosm�ticas. Em outros casos, existem mais altera��es significantes envolvidas (em alguns casos, por exemplo, mesmo a l�gica de como os dispositivos s�o detectados teve de ser alterada).

Filesystems

O uso mais �bvio para um dispositivo de blocos no Linux (ou outro sistema) � para montar um filesystem no mesmo, e o suporte do Linux para filesystems avan�ou bastante desde a vers�o 2.4 em v�rios aspectos. Uma mudan�a chave � o suporte para atributos estendidos e controles de acesso no estilo POSIX.

O segundo (e terceiro) filesystem estendido, o sistema que a maioria das instala��es de Linux usam como padr�o, tem sido a que mais melhorou durante o desenvolvimento do Linux 2.6. A principal altera��o � o suporte a "atributos estendidos", ou metadados que podem ser inseridos no pr�prio filesystem para um arquivo espec�fico. Alguns destes atributos estendidos ser�o usados pelo sistema e s� poder�o ser lidos e escritos pelo superusu�rio. Muitos outros sistemas operacionais, como o Windows e o MacOS, fazem uso extensivo deste tipo de atributos. Infelizmente, a heran�a UNIX de sistemas operacionais geralmente n�o inclui um excelente suporte a estes atributos e muitas ferramentas de usu�rio (como o 'tar', etc) dever�o ser atualizadas para poderem salvar e restaurar esta informa��o adicional. Esta � outra �rea de crescimento do Linux, e o suporte a atributos estendidos est� amadurecendo.

O primeiro uso do novo subsistema de atributos estendidos � a implementa��o de listas de controle de acesso POSIX. O controle de acesso POSIX � um superconjunto das permiss�es padr�o do UNIX, que permitem um controle mais granular. Quando necess�rio (por exemplo, ao exportar arquivos via NFS), estes controles podem ser mapeados (cuidadosamente) para as permiss�es de usu�rio/grupo padr�o.

Al�m destas altera��es ao ext3, existem v�rias outras pequenas altera��es. O tempo de execu��o do journal do filesystem pode ser configurado para ficar mais apropriado para os usu�rios de laptop (que podem precisar aumentar a rota��o do disco se ele estiver em um modo de economia de energia), op��es padr�o de montagem podem agora ser armazenadas no pr�prio filesystem (e, portanto, n�o precisam ser informados na montagem), e pode-se agora marcar um diret�rio como "indexado" para aumentar a velocidade de pesquisa de arquivos neste diret�rio.

O Linux tamb�m apresenta v�rios melhoramentos na camada de filesystem para melhorar a compatibilidade com o sistema operacional de PC dominante. Para come�ar, o Linux 2.6 agora suporta o Logical Disk Manager do Windows (aka "Dynamic Disks"). � um novo esquema de tabela de parti��o que o Windows XP e os posteriores adotaram que permitem o f�cil redimensionamento e a cria��o de m�ltiplas parti��es (obviamente, � improv�vel que os sistemas Linux venham a usar o novo esquema para novas instala��es t�o cedo). O Linux 2.6 tamb�m possui um suporte melhorado (e reescrito) ao filesystem NTFS (que agora � tamb�m usado em produtos comerciais) e agora � poss�vel montar um volume NTFS para leitura/escrita. O suporte � escrita ainda � experimental e est� sendo gradualmente melhorado, e pode ou n�o estar habilitado na vers�o final do kernel. E, finalmente, o suporte Linux para FAT12 (o filesystem DOS utilizado em sistemas realmente antigos e disquetes) foi melhorado para contornar alguns bugs presentes em alguns MP3 players que usam aquele formato. Manter-se atualizado com as outras tecnologias PC � uma das �reas principais de foco das novas revis�es do kernel Linux.

A compatibilidade com outros sistemas operacionais tamb�m foi melhorada. O suporte a atributos estendidos no filesystem HPFS (usado pelo OS/2 e outros) foi atualizado. Os atributos no estilo OS/2 foram separados em um espa�o de nomes diferente. O filesystem XFS tamb�m foi atualizado para ser compat�vel em disco com o sistema operacional IRIX.

Al�m destas altera��es, h� um grande n�mero de altera��es espalhadas pelo suporte a filesystems do Linux. O suporte a quotas foi reescrito para permitir que um n�mero maior de usu�rios seja suportado em um sistema. Diret�rios individuais podem agora ser marcados como s�ncronos, de forma que todas as altera��es (arquivos adicionais, etc.) sejam at�micas (esta caracter�stica � mais �til para sistemas de correio e bancos de dados baseados em diret�rio, al�m de apresentar uma recupera��o melhor caso ocorra uma falha de disco). Compress�o transparente (uma extens�o �nica ao Linux) foi acrescentada ao filesystem ISO9660 (o filesystem utilizado em CD-ROMs). e, finalmente, um novo filesystem baseado em mem�ria ("hugetlbfs") foi criado exclusivamente para oferecer um suporte melhorado a bancos de dados de mem�ria compartilhada.

Dispositivos de Entrada / Sa�da

Um dos lados mais "externos" de qualquer sistema computacional s�o os dispositivos de entrada e sa�da, as partes importantes que nunca parecem importantes. Estas incluem as coisas mais �bvias como mouse e teclados, placas de v�deo e som, e menos �bvias como joysticks e dispositivos de acessibilidade. Muitos dos subsistemas de usu�rio final do Linux foram expandidos durante o ciclo de desenvolvimento do 2.6, mas a maioria dos dispositivos comuns j� estava bem amadurecida. Em sua maioria, os melhoramentos do Linux 2.6 a estes dispositivos derivam diretamente do suporte melhorado do kernel a barramentos externos, como teclados wireless Bluetooth, e similares. Existem, entretanto, um n�mero de �reas em que o Linux fez grandes melhoramentos.

Dispositivos de Interface Humana

Uma mudan�a interna not�vel no Linux 2.6 � que a camada de interface humana foi revista. A camada de interface humana � o centro da experi�ncia do usu�rio de um sistema Linux, incluindo a sa�da de v�deo, mouse e teclados. Na nova vers�o do kernel, esta camada foi reescrita e modularizada em uma extens�o nunca feita antes. � poss�vel agora criar um sistema Linux completamente "headless" sem a inclus�o de nenhum suporte para display ou outra coisa. Os primeiros benef�cios desta modularidade podem ser para os desenvolvedores de dispositivos embarcados que podem fazer dispositivos que s� possam ser administrados pela rede ou pela porta serial, mas o benef�cio aos usu�rios finais � que foi feita uma modulariza��o de todas as suposi��es internas sobre dispositivos e arquiteturas foram modularizadas. Por exemplo, anteriormente era assumido que se voc� tivesse um PC, voc� precisaria do suporte a um controlador padr�o AT (i8042) de teclado. A nova vers�o do Linux remove esta exig�ncia de forma que o c�digo desnecess�rio pode ser mantido fora de sistemas sem componentes legados.

O suporte ao tratamento da sa�da de monitor do Linux tamb�m recebeu v�rias altera��es, apesar que a maioria destas s�o �teis somente em configura��es que usam o susbsitema interno de framebuffer console do kernel (a maioria dos computadores Intel Linux n�o s�o configurados desta forma, mas este n�o � o caso para muitas outras arquiteturas). Na minha humilde opini�o, a melhor funcionalidade � que o logo de boot (um pinguinzinho bonitinho, caso voc� nunca tenha visto-o) agora suporta resolu��es de at� 24bpp. Fora isto, outras novas funcionalidades para o console incluem redimensionamento e rota��o (para PDAs e similares) e expandiu o suporte a acelera��o para mais hardwares. E, finalmente, o Linux agora incluiu suporte no kernel � consulta a monitores VESA para obter informa��es de capacidades, apesar que o XFree86 e a maior parte dos sistemas de instala��o de distribui��es j� cobriu este detalhe em user-space.

Al�m das altera��es mais extensas, o Linux 2.6 tamb�m inclui um certo n�mero de pequenas altera��es para a intera��o humana. Touch screens, por exemplo, agora j� s�o suportadas. Os drivers de keyboard e mouse foram atualizados e padronizados para somente exportar um �nico n� de dispositivo (/dev/input/mouse0, por exemplo), sem preocupar-se com o hardware ou protocolo subjacentes. Mouses bizarros (com m�ltiplas rodas, por exemplo) agora tamb�m s�o suportados. Mapeamentos de teclas tamb�m foram atualizados para seguir o "padr�o" Windows de teclas estendidas. O suporte a joystick tamb�m foi melhorado n�o s� gra�as � adi��o de novos drivers (incluindo o XBox gamepad), mas tamb�m por incluir novas funcionalidades, como o force-feedback. E, finalmente (mas n�o menos importante), a nova vers�o tamb�m inclui suporte para o dispositivo braille TTY Tieman Voyager, que permite que usu�rios deficientes visuais tenham um melhor acesso ao Linux (esta funcionalidade � importante o suficiente para que tenha sido back-ported para o Linux 2.4).

Como uma nota lateral, cabe comentar que o Linux tamb�m mudou a interface de "system request", para suportar melhor os sistemas sem teclado. A interface system request ("sysrq") � o m�todo para os administradores de sistema obterem informa��o de depura��o, for�ar um reboot do sistema, remontar filesystems read-only, e fazer outras coisas do tipo no console local. Como o Linux 2.6 agora suporta um sistema completamente headless, agora tamb�m � poss�vel disparar estes eventos usando o filesystem /proc (obviamente, se o seu sistema congelar e voc� precisar for�ar que ele fa�a alguma coisa, isto pode n�o ser de muita ajuda).

�udio

Uma das novas funcionalidades mais antecipadas para os usu�rios desktop do Linux 2.6 � a inclus�o do ALSA (a "Advanced Linux Sound Architecture") em lugar do velho sistema de som. O velho sistema, conhecido como OSS, de "Open Sound System", serviu o Linux desde os primeiros dias, mas possu�a muitas limita��es na sua arquitetura. O primeiro grande melhoramento com o novo sistema � que ele foi projetado desde o in�cio para ser protegido de threads e sistemas SMP, corrigindo problemas com muitos dos velhos drivers onde eles n�o podiam funcionar fora do paradigma "desktop-significa-uma-�nica-cpu" esperado. Mais importante, os drivers foram projetados para serem modulares desde o in�cio (usu�rios de vers�es antigas do Linux ir�o lembrar que a modularidade foi adaptada no sistema de som pelo Linux 2.2), e que isto permite um suporte melhorado para sistemas com m�ltiplas placas de som, incluindo m�ltiplos tipos de placas de som. N�o importa o qu�o bonitos estes aspectos internos s�o, o novo sistema n�o seria um melhoramento para os usu�rios se ele n�o tivesse novas funcionalidades, e o novo sistema de som h� muitas destas. Uma das mais importantes � o suporte para hardwares mais novos (incluindo dispositivos USB de �udio e MIDI), playback e grava��o full-duplex, mixing n�o entrela�ado e de hardware, suporte para a "combina��o" de dispositivos de som, e outras coisas. Seja voc� um audi�filo, ou s� algu�m que gosta de tocar MP3s, o suporte melhorado a sons no Linux � um avan�o bem-vindo.

Multim�dia

Muito al�m de simples �udio, hoje em dia, o que os usu�rios querem � suporte para o hardware realmente legal, como webcams, adaptadores de r�dio e TV, e gravadores de v�deo digital. Em todos os tr�s casos, o suporte do Linux foi melhorado com a vers�o 2.6.

Apesar de o Linux j� ter suporte (em maior ou menor medida) placas de r�dio (quase sempre em userspace) por muitas itera��es, o suporte a sintonizadores de televis�o e c�meras de v�deo somente foi acrescentado na �ltima revis�o, ou na anterior. Aquele subsistema, conhecido como Video4Linux (V4L), recebeu uma extensa atualiza��o durante o trabalho na nova edi��o do kernel, incluindo tanto uma limpeza na API quanto o suporte a mais funcionalidades das placas. A nova API n�o � compat�vel com a anterior e muitas aplica��es que suportam a mesma precisar�o atualizar-se com o kernel.

E, seguindo um caminho completamente novo, o Linux 2.6 inclui o primeiro suporte interno para equipamentos de Digital Video Broadcasting (DVB). Este tipo de equipamento, comum em computadores set-top, pode ser usado para tornar o servidor Linux em um dispositivo como o Tivo, com o software apropriado.

Avan�os de Software

Os melhoramentos do Linux n�o est�o apenas focados em suporte de hardware e infraestrutura. Sem o software de suporte (como filesystems e protocolos de rede), o hardware suportado � s� um peso morto.

Redes

Infraestrutura de rede moderna sempre foi um dos principais valores do Linux. O Linux, como SO, j� tem suporte a maioria dos protocolos de rede dominantes no mundo, incluindo o TCP/IP (v4 e v6), AppleTalk, IPX, e outros (de fato, os �nicos comuns que v�m � mem�ria s�o os protocolos NetBIOS/NetBEUI da Microsoft).

Como a maioria das altera��es nos outros subsistemas, grande parte das altera��es a suporte de equipamento de rede no Linux 2.6 est� escondida na capa e n�o � �bvia. Entre estas est�o inclu�das as altera��es de baixo n�vel que aproveitam-se do modelo de dispositivo e atualiza��es a muitos dos drivers de dispositivos. Por exemplo, o Linux inclui agora um subsistema MII (Media Independent Interface, ou IEE 802.3u) separado que � usado em por v�rios drivers de dispositivos de rede. Este novo subsistema substitui muitas c�pias em que cada driver estava tratando o suporte MII do dispositivo de diferentes formas e com c�digo e esfor�o duplicados. Outras altera��es incluem atualiza��es substanciais no ISDN e em outras coisas.

Do lado do software, uma das maiores altera��es � o novo suporte do Linux para os protocolos IPsec. O IPsec, ou IP Security, � uma cole��o de protocolos para o IPv4 (o IP "normal") e o IPv6 que permitem o uso de seguran�a criptogr�fica no n�vel de protocolo de rede. E como a seguran�a est� no n�vel de protocolo, as aplica��es n�o precisam tomar conhecimento do mesmo. Isto � similar ao SSL e outros protocolos de t�nel/seguran�a, mas a um n�vel muito mais baixo. A criptografia suportada atualmente pelo kernel inclui v�rios sabores do SHA ("secure hash algorithm"), DES ("data encryption standard"), e outros.

Fora do aspecto de protocolo, o Linux melhorou o seu suporte a redes multicast. Redes multicast s�o redes em que um pacote � enviado para ser recebido por v�rios computadores (compare com as redes ponto-a-ponto tradicionais, onde voc� est� conversando com apenas um outro computador por vez). Em princ�pio, esta funcionalidade � utilizada por sistemas de mensagens (como o Tibco), e softwares de confer�ncia com �udio/v�deo). O suporte do Linux 2.6 melhorou ao incluir v�rios protocolos SSM (Source Specific Multicast) novos, incluindo o MLDv2 (Multicast Listener Discovery) e o IGMPv3 (Internet Group Messaging Protocol). Estes s�o protocolos padr�o que s�o suportados pela maioria do fabricantes de equipamento de rede de primeira linha, como o Cisco.

O Linux 2.6 tamb�m tem uma pilha LLC separada. O LLC, ou protocolo Logical Link Control (IEEE 802.2), � um protocolo de baixo n�vel que � usado abaixo de v�rios protocolos de rede de n�vel mais elevado como o NetBEUI da Microsoft, o IPX, e o AppleTalk. Como parte desta mudan�a, os drivers do IPX, AppleTalk, e Token Ring, foram reescrito para aproveitar-se do novo subsistema comum. Al�m disto, uma fonte externa colocou uma pilha NetBEUI funcional e ainda veremos se ela ser� integrada no kernel oficial.

Al�m destas altera��es, existem v�rias outras altera��es menores. O IPv6 recebeu muitas altera��es e agora pode rodar em redes Token Ring. O suporte do Linux a NAT/mascaramento foi estendido para suportar melhor protocolos que requerem m�ltiplas conex�es (H.323, PPTP, etc.). No front do Linux router, o suporte � configura��o de VLANs no Linux n�o est� mais marcado como "experimental".

Filesystems de Rede

Sobre o robusto suporte a protocolos de rede do Linux est� o tamb�m robusto suporte para filesystems de rede. A montagem (e algumas vezes a exporta��o) de um filesystem de rede � uma das poucas opera��es de alto n�vel de rede que o kernel toma conta diretamente (a outra opera��o �bvia, o "network block device", n�o recebeu muitas altera��es para o 2.6 e � geralmente utilizado para aplica��es especializadas, em que se acaba fazendo algo parecido com um filesystem com ela, de qualquer forma). Todas as outras opera��es de redes foram relegadas ao user-space e fora do dom�nio dos programadores do kernel.

No mundo Linux e dos clones UNIX, o tipo mais comum de filesystem de rede � o Network File System, ou NFS. O NFS � um protocolo de compartilhamento de arquivos complicado que tem ra�zes profundas no UNIX (e especialmente na excelente implementa��o do Sun Solaris). O protocolo prim�rio de transporte pode utilizar TCP ou UDP, mas v�rios sub-protocolos adicionais s�o necess�rio, cada um com um protocolo RPC ("remote procedure call") separado. Estes incluem protocolos separados de "mount" para autentica��o e NLM ("network lock manager") para bloqueios de arquivos (a implementa��o comum tamb�m est� associada a outros protocolos comuns baseados em RPC, incluindo o NIS -- "network information service" -- para a autentica��o. O NIS n�o � utilizado comumente em m�quinas Linux devido a problemas fundamentais de seguran�a). Talvez por conta desta complexidade que o NFS n�o recebeu uma aceita��o maior como protocolo "Internet".

No Linux 2.6, este filesystem b�sico Linux recebeu muitas atualiza��es e melhoramentos. O maior dos melhoramentos � que agora o Linux suporta experimentalmente a nova vers�o do protocolo NFSv4, ainda n�o muito popular, tanto em sua implementa��o servidor quanto cliente (vers�es anteriores do Linux inclu�am suporte para as vers�es v2 e v3 do protocolo). A nova vers�o suporta autentica��o mais segura (com criptografia), um bloqueio de arquivos mais inteligente, suporte para pseudo-filesystems, e outras mudan�as. Nem todas as novas funcionalidades do NFSv4 foram implementadas no Linux, mas o suporte est� relativamente est�vel e pode ser utilizada para algumas aplica��es de produ��o. Al�m disto, a implementa��o do servidor NFS Linux foi melhorada para ser mais escal�vel (at� 64 vezes mais usu�rios concorrentes e filas de solicita��o maiores), para ser mais completa (suportando o servi�o por TCP, al�m de UDP), mais robusta (drivers de filesystems individuais podem adaptar a forma que os arquivos est�o sendo exportados para atender suas particularidades), e de manuten��o mais f�cil (o gerenciamento � feito via um novo filesystem nfsd, em vez de system calls). Existem tamb�m outras altera��es internas, incluindo a separa��o de lockd e nfsd e o suporte para zero-copy networking nas interfaces suportadas. O lado do cliente NFS tamb�m beneficiou-se de v�rios melhoramentos na implementa��o do protocolo RPC, incluindo uma estrutura de cache, controle de conex�o por UDP, e outros melhoramentos para o TCP. O suporte Linux ao uso de volumes compartilhados NFS como filesystem root (para sistemas disk-less) tamb�m foi melhorado, j� que o kernel agora suporta NFS sobre TCP para isto.

Al�m de melhorar o suporte a filesystems de rede no estilo UNIX, o Linux 2.6 tamb�m traz v�rios melhoramentos aos filesystems de rede estilo Windows. O filesystem compartilhado padr�o para servidores Windows (bem como para o OS/2 e outros sistemas operacionais) tem sido o protocolo SMB (//"server message block"//), e o kernel Linux tem um excelente suporte cliente para o protocolo SMB h� v�rias vers�es. Entretanto, o Windows 2000 padronizou em um superconjunto atualizado do protocolo SMB, conhecido como CIFS (//"common internet filesystem"//). A inten��o por tr�s desta atualiza��o � limpar e refinar certos aspectos do SMB que haviam se tornado uma confus�o completa (o protocolo em si foi definido de forma vaga e t�o geralmente extendido que haviam casos em que a vers�o do Win95/98/ME era incompat�vel com a vers�o do WinNT/Win2k). O CIFS foi desenvolvido com esta inten��o e acrescentou o suporte a UNICODE, melhorou o bloqueio de arquivos, os links f�sicos, eliminou os �ltimos vest�gios de depend�ncias do NetBIOS, e acrescentou algumas outras funcionalidades para os usu�rios Windows. Como os usu�rios Linux n�o gostam de ficar no escuro por muito tempo, o Linux 2.6 agora inclui um suporte completamente reescrito para a montagem nativa de filesystems CIFS. O Linux 2.6 tamb�m inclui suporte �s extens�es SMB-UNIX aos protocolos SMB e CIFS, que permitem que o Linux acesse tipos de arquivos n�o-Windows (como n�s de dispositivos e links simb�licos) em servidores SMB que suportam o mesmo (como o Samba).

Apesar de n�o ser t�o comum atualmente, o Linux n�o esqueceu completamente os usu�rios de Novell NetWare. O Linux 2.6 permite que os clientes Linux montem at� um m�ximo de 256 compartilhamentos em um �nico volume NetWare usando seu driver de filesystem NCP ("NetWare Core Protocol") interno.

O Linux 2.6 tamb�m inclui um suporte melhorado para o dom�nio relativamente novo dos filesystems distribu�dos de rede, sistemas em que os arquivos em um �nico volume l�gico podem estar espalhados por v�rios n�s. Al�m do filesystem CODA, introduzido no Linux 2.4, o Linux agora inclui algum suporte para dois outros filesystems distribu�dos: AFS e InterMezzo. O AFS, ou Andrew FileSystem (tem este nome por que foi desenvolvido originalmente na CMU) atualmente � bastante limitado e restrito a opera��es de leitura. O segundo filesystem novo, o InterMezzo (tamb�m desenvolvido na CMU), tamb�m est� debutando no Linux 2.6 e permite mais funcionalidades avan�adas, como opera��o desconectado (permitindo que voc� trabalhe em arquivos que est�o no cache local) e � apropriado para aplica��es de alta disponibilidade, em que voc� precisa garantir que a armazenagem nunca est� indispon�vel (ou simulada, se estiver fora do ar). Ele tamb�m tem aplica��es para manter os dados em sincronia entre m�ltiplos computadores, como um laptop ou PDA e um computador desktop. Muitos dos projetos que fornecem suporte a estes novos tipos de filesystem foram inicialmente desenvolvidos no Linux, colocando o Linux bem al�m da curva em termos de suporte a estas novas funcionalidades.

Funcionalidades Miscel�nea

Seguran�a

Outra das grandes altera��es no Linux 2.6 que n�o recebe aten��o suficiente � a riqueza de novas altera��es relacionadas � seguran�a. Mais fundamentalmente, toda a seguran�a baseada em kernel (os poderes do super usu�rio em um sistema operacional UNIX-like) foi modularizado para ser um de um n�mero potencial de outros m�dulos de seguran�a alternativos (atualmente, o �nico modelo de seguran�a � o padr�o e um m�dulo exemplo de como fazer o seu pr�prio). Como parte desta mudan�a, todas as partes do kernel agora foram atualizadas para usar "capabilities" como a base do acesso de usu�rios granular, em vez do velho sistema do "superusu�rio". Quase todos os sistemas Linux continuar�o a ter uma conta "root" que tem acesso completo, mas este esquema possibilita que um sistema Linux-like seja criado que n�o tenha esta suposi��o interna. Outra altera��o relacionada � seguran�a � que os m�dulos bin�rios (por exemplo, drivers disponibilizados por um fabricante de hardware) n�o podem mais "sobrepor" as chamadas de sistema com as suas pr�pria e n�o podem mais ver e modificar a tabela de chamadas de sistema. Esta provid�ncia restringe significativamente o acesso que m�dulos n�o open-source podem ter ao kernel e possivelmente fecha alguns furos em torno da GPL. A mudan�a final que � de alguma forma relacionada � seguran�a � que o Linux com o novo kernel pode agora usar geradores de n�meros aleat�rios de hardware (como os que est�o presentes em alguns novos processadores), em vez de basear-se em uma fonte de entropia (que at� que � boa) baseada em flutua��es rand�micas de hardware.

Virtualizando o Linux

Uma das mais interessantes das novas funcionalidades do Linux 2.6 � a inclus�o de uma arquitetura de "user-mode". Esta � essencialmente um port (como para uma diferente fam�lia de hardware) do Linux para si mesmo, permitindo que seja executado um ambiente Linux-no-Linux completamente virtualizado. A nova inst�ncia do Linux � executada como se fosse uma aplica��o normal. "Dentro" da aplica��o, pode-se configurar interfaces de rede falsas, filesystems, e outros dispositivos atrav�s de drivers que se comunicam com a c�pia h�spede do Linux de uma forma segura. Esta funcionalidade � bastante �til, tanto para desenvolvimentos (profiling, etc.) quanto para an�lises de seguran�a e honeypots. Apesar da maioria dos usu�rios nunca precisar deste tipo de suporte, esta � uma funcionalidade incrivelmente "cool" para ter no seu computador (impressione seus amigos!).

Laptops

Al�m de todo o suporte gen�rico descrito acima (APM e ACPI melhorados, melhoramentos no suporte a wireless, etc.) o Linux tamb�m inclui duas outras funcionalidades dif�ceis de classificar, que ajudar�o mais aos usu�rios de laptops. A primeira � que a nova edi��o do kernel agora suporta completamente a funcionalidade software-suspend-to-disk para o usu�rio Linux. A nova vers�o tamb�m suporta a habilidade de processadores modernos para sistemas m�veis de mudar a velocidade (e necessidades de energia) baseado no fato de voc� estar ou n�o conectado.

Suporte Legado

Apesar de o Linux 2.6 representar um grande avan�o, a diferen�a para as aplica��es de usu�rio ser� praticamente inexistente. Uma exce��o a esta regra parece estar na threading: algumas aplica��es podem fazer coisas que funcionavam nas vers�es 2.4 e 2.2, mas n�o ser�o mais permitidas. Estas aplica��es ser�o a exce��o � regra. Obviamente, aplica��es de baixo n�vel, como ferramentas para m�dulos definitivamente n�o ir�o funcionar. Al�m disto, alguns dos arquivos e formatos nos diret�rios /proc e /dev mudaram, e qualquer aplica��o que dependa disto pode n�o funcionar corretamente (isto � especialmente verdadeiro � medida que mais coisas s�o colocadas no novo filesystem virtual /sys. No caso do /dev, a compatibilidade com nomes de dispositivos pode ser facilmente configurada).

Al�m dos avisos padr�o, existe um n�mero de outras pequenas altera��es que podem afetar alguns ambientes. Primeiro, arquivos de swap muito antigos (do Linux 2.0 ou anteriores) precisar�o ser reformatados antes que possam ser usados com o 2.6 (arquivos de swap n�o cont�m nenhum dado permanente, este procedimento n�o dever� ser nenhum problema para os usu�rios Linux). O daemon kHTTPd que permite que o kernel sirva p�ginas WEB diretamente tamb�m foi removido, j� que a maioria dos gargalos de performance que impediam que o Apache, Zeus, et. al. de responderem na mesma velocidade do kernel foram resolvidos. O suporte para "disk managers" DOS antigos, como o OnTrack e o EzDrive, para discos r�gidos bem antigos e compatibilidade com o DOS foram removidos. O suporte para o uso de um setor de boot com o kernel para iniciar o computador com um disquete tamb�m foi removido, de forma que o SysLinux deve ser utilizado no seu lugar. E, finalmente, o suporte a "soundmodem" (para brincadeiras ac�sticas com a placa de som, fazendo-a um modem) foi removida, h� uma vers�o para user-space com melhor manuten��o e mais atualizada.

Finalizando

Este documento foi montado principalmente a partir de longas horas de observa��o dos changelogs do BitKeeper, examinando o kernel e brincando com o c�digo fonte, lendo mensagens das listas de email, e muitas e muitas pesquisas no Google e Lycos por documenta��o disto e daquilo. Por isto, podem haver trechos em que algo pode ter sido esquecido ou mal compreendido, e lugares em que alguma coisa pode ter retornado ap�s o fato (eu fui bastante cuidadoso com as duas vers�es do suporte IDE que estavam funcionando durante este per�odo, mas existem outros exemplos). Eu tamb�m tentei examinar cuidadosamente de p�ginas web de projetos que foram integrados no kernel, j� que elas geralmente est�o "um pouco adiante" do que est� suportado oficialmente. Se voc� encontrar algum erro neste documento ou quiser mandar uma mensagem perguntando como estou, pode faz�-lo no email jpranevich <at> kniggit.net.

Para pessoas com mentalidade mais t�cnica que querem apenas uma lista de itens, Dave Jones montou um excelente resumo do progresso do Linux 2.5 em http://www.codemonkey.org.uk/post-halloween-2.5.txt. Qualquer semelhan�a entre este documento e o trabalho dele � puramente coincid�ncia, j� que ambos est�vamos usando os fontes originais e ambos estamos mais ligados ao i386.

Este documento tem o Copyright 2003, Joseph Pranevich. A redistribui��o online sem modifica��es � permitida, mas por favor mande um email se voc� est� interessado em distribui��o offline (revistas, etc). Como cortesia, eu gostaria de receber uma mensagem em qualquer caso, como uma nova vers�o dispon�vel.


Nota do Tradutor

Esta tradu��o tem o Copyright (C) 2003, C�sar Grossmann. Todas as limita��es do texto originais aplicam-se a esta tradu��o. Pe�o que quaisquer erros e imprecis�es deste texto n�o sejam encaminhadas ao autor original, Joseph Pranevich, mas ao tradutor, no email cesarakg@bol.com.br.

Este documento foi produzido com o aux�lio do txt2tags, que pode ser encontrado em http://txt2tags.sf.net/. O arquivo original est� aqui.

1