Design e Implementação de Microdrivers - Fernandes
Autor: Sistemas Operacionais | Publicado: 2009-06-24T00:21:00-03:00

<!--[if !mso]>  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}  <![endif]--><!--[if gte mso 9]>     Normal   0         21         false   false   false      PT-BR   X-NONE   X-NONE                                                     MicrosoftInternetExplorer4                                                   <![endif]--><!--[if gte mso 9]>                                                                                                                                                                                                                                                                                                                                                                                                                                <![endif]--> <!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman","serif"; 	mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink 	{mso-style-priority:99; 	color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:1733506441; 	mso-list-type:hybrid; 	mso-list-template-ids:493768172 68550671 68550681 68550683 68550671 68550681 68550683 68550671 68550681 68550683;} @list l0:level1 	{mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:39.0pt; 	text-indent:-18.0pt;} @list l1 	{mso-list-id:1756200849; 	mso-list-type:hybrid; 	mso-list-template-ids:1405260422 68550657 68550659 68550661 68550657 68550659 68550661 68550657 68550659 68550661;} @list l1:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Symbol;} ol 	{margin-bottom:0cm;} ul 	{margin-bottom:0cm;} --> <!--[if gte mso 10]>   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabela normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman","serif";}  <![endif]-->    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.     <!--[if gte vml 1]>                                                  <![endif]--><!--[if !vml]--><!--[endif]-->           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.        <!--[if gte vml 1]>   <![endif]--><!--[if !vml]--><!--[endif]-->  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:      <!--[if !supportLists]-->1.      <!--[endif]-->A capacidade de desenvolver código de driver ao nível de usuário, com sofisticadas ferramentas de programação;   <!--[if !supportLists]-->2.      <!--[endif]-->A redução na quantidade de código escrito a mão no kernel, gerando uma melhor viabilidade;  <!--[if !supportLists]-->3.      <!--[endif]-->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