Drivers
Drivers são programas escritos para fazer a comunicação do sistema operacional com seu hardware de máquina, essa comunicação é independente de dispositivo, que o software cuida para que a solicitação seja executada, permitindo que o software interaja com o dispositivo desejado. Um driver não é um processo ou tarefa gerado pelo sistema, mas sim um conjunto de tabelas contendo informações sobre cada periférico, bem como os fluxos de informação circulante entre o computador e o periférico, pode ser visto em alguns casos como parte do processo que esta em execução.
Vantagens
Os drivers que são executados no modo usuário provém vários benefícios importantes para os usuários do sistema operacaional; como o uso de bibliotecas do sistema operacional e um ótimos sistema de depuração avançado, e claro faz o isolamento entre o sistema operacional e o kernel, esse isolamento é para que futuras falhas no driver no modo usuário não afete totalmente o sistema.
Desvantagens
Segundo a Microsft 89% dos erros reportados pelos usuários, são causados pelos drivers; esses erros são devido à falta de profissionais eficientes em programação de drivers e a grande quantidade de drivers diversos disponibilizados por fabricantes para o mesmo disposistivo.
Drivers acoplados ao kernel
Versões inferiores do Linux, o kernel já vinha com a maioria dos drivers mais usados pelos usuários acoplados ao seu kernel, quando o usuário necessitasse de um novo dispositivo, seu driver era inserido no kernel, sendo assim necessário fazer todas às vezes a sua recompilaçao. Devido ao grande trabalho de recompilar o kernel, e o tamanho do kernel que crescia exageradamente mudaram se esse critério, esse trabalho geralmente não é mais usado, agora podemos usar a arquitetura de microdrivers.
Microdrivers
Microdrivers é um driver de dispositivo que está dividido em uma camada de kernel, chamado de k-driver, e uma camada no modo usuário, chamda de u-driver.
O uso de Mircodrivers é ter uma melhor funcionalidade de um dispositivo e maximizar o seu desempelho. Veja abaixo como um microdriver, com as suas funcionalidade é dividido (split) entre o componente do modo kernel e o componente de modo usuário.
O que demostra neste estudo é que a seção critica do código dos dispositivos de drivers é que mais de 70% contém funcionalidades não criticas.
Arquitetura do Microdriver
Um microdriver consiste de um componente do modo kernel que implementa as funcionalidades criticas do modo usuário e um processo que implementa as funcionalidades não criticas.
Implementação de microdrivers no Linux
No sistema operacional Linux o microdrivers foi implementado no kernel a partir da versão kernel 2.6.18.1, para que fosse feita uma demonstração de viabilidade e a possibilidade de uma melhor performacance do sistema. Onde esta implementação consiste em sei partes:
- k-driver;
- kernel runtime;
- usuário runtime;
- u-driver;
- usuário stubs;
- kernel stub.
Vantagens
A arquitetura Microdrivers oferece três vantagens:
1. A capacidade de desenvolver código de driver ao nível de usuário, com sofisticadas ferramentas de programação;
2. A redução na quantidade de código escrito a mão no kernel, gerando uma melhor viabilidade;
3. Melhoria da confiabilidade, isolando o kernel a partir de bugs no código em nível de usuário.
Performance
Os testes apresentados neste artigo foram medidos o desempenho (throughput e como a utilização da CPU) dos drivers, o de rede foi utilizado o utilitário netperf. E como esperado, estes resultados demonstraram o caso comum. E que experimentos demostram que se 65% do código do driver for removido do kernel, a performance não será afetada.
Contudo os microdrivers são uma grande alternativa tanto pra uma maior segurança do sistema operacional, como pra os dispositivos de drivers.
Os artigos podem ser obtidos em:
The Design and Implementation of Microdrivers
http://www.cs.rutgers.edu/~vinodg/papers/asplos2008/asplos2008.pdf
http://portal.acm.org/citation.cfm?id=1346303
Complemento:
Microdrivers - A New Architecture for Device Drivers
Muito bom
ResponderExcluir