Drivers Drivers sao programas escritos para fazer a comunicacao do sistema operacional com seu hardware de maquina, essa comunicacao e independente de dispositivo, que o software cuida para que a solicitacao seja executada, permitindo que o software interaja com o dispositivo desejado. Um driver nao e um processo ou tarefa gerado pelo sistema, mas sim um conjunto de tabelas contendo informacoes sobre cada periferico, bem como os fluxos de informacao circulante entre o computador e o periferico, pode ser visto em alguns casos como parte do processo que esta em execucao. Vantagens Os drivers que sao executados no modo usuario provem varios beneficios importantes para os usuarios do sistema operacaional; como o uso de bibliotecas do sistema operacional e um otimos sistema de depuracao avancado, e claro faz o isolamento entre o sistema operacional e o kernel, esse isolamento e para que futuras falhas no driver no modo usuario nao afete totalmente o sistema. Desvantagens Segundo a Microsft 89% dos erros reportados pelos usuarios, sao causados pelos drivers; esses erros sao devido a falta de profissionais eficientes em programacao de drivers e a grande quantidade de drivers diversos disponibilizados por fabricantes para o mesmo disposistivo. Drivers acoplados ao kernel Versoes inferiores do Linux, o kernel ja vinha com a maioria dos drivers mais usados pelos usuarios acoplados ao seu kernel, quando o usuario necessitasse de um novo dispositivo, seu driver era inserido no kernel, sendo assim necessario fazer todas as vezes a sua recompilacao. Devido ao grande trabalho de recompilar o kernel, e o tamanho do kernel que crescia exageradamente mudaram se esse criterio, esse trabalho geralmente nao e mais usado, agora podemos usar a arquitetura de microdrivers. Microdrivers Microdrivers e um driver de dispositivo que esta dividido em uma camada de kernel, chamado de k-driver, e uma camada no modo usuario, chamda de u-driver. O uso de Mircodrivers e ter uma melhor funcionalidade de um dispositivo e maximizar o seu desempelho. Veja abaixo como um microdriver, com as suas funcionalidade e dividido (split) entre o componente do modo kernel e o componente de modo usuario. O que demostra neste estudo e que a secao critica do codigo dos dispositivos de drivers e que mais de 70% contem funcionalidades nao criticas. Arquitetura do Microdriver Um microdriver consiste de um componente do modo kernel que implementa as funcionalidades criticas do modo usuario e um processo que implementa as funcionalidades nao criticas. Implementacao de microdrivers no Linux No sistema operacional Linux o microdrivers foi implementado no kernel a partir da versao kernel 2.6.18.1, para que fosse feita uma demonstracao de viabilidade e a possibilidade de uma melhor performacance do sistema. Onde esta implementacao consiste em sei partes: k-driver;kernel runtime;usuario runtime;u-driver;usuario stubs; kernel stub. Vantagens A arquitetura Microdrivers oferece tres vantagens: 1. A capacidade de desenvolver codigo de driver ao nivel de usuario, com sofisticadas ferramentas de programacao; 2. A reducao na quantidade de codigo escrito a mao no kernel, gerando uma melhor viabilidade; 3. Melhoria da confiabilidade, isolando o kernel a partir de bugs no codigo em nivel de usuario. Performance Os testes apresentados