quarta-feira, 24 de junho de 2009

Design e Implementação de Microdrivers - Fernandes

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

http://pages.cs.wisc.edu/~arinib/hotos2007.pdf

Um comentário:

Bibliográfia utilizada

SILBERSCHATZ, Abraham - Sistemas Operacionais com Java, 7ª ed. rev. atual. - Rio de Janeiro: Elsevier Campus, 2008



TANENBAUM, Andrew S. - Sistemas Operacionais Modernos, 2ª ed. - São Paulo: Prentice Hall, 2003




STALLINGS, william - Operating Systems: Internals and Design Principles, Sixth Edition, 2009.