Você está na página 1de 6

Device Drivers no Windows e Linux: Viso Geral e Boas

Prticas
Andrew Santana, Cassiano Reis, Josu Demartini
Faculdade de Informtica PUCRS
Abstract
Tis !a!er "i#es an o#er#iew a$out
te De#ice Dri#ers on %indows and
&inu', e'!lainin" wat is a De#ice
Dri#er, te !ur!ose of use, dri#er
t(!es on %indows and &inu' and
some "ood !ractices for $uilt De#ice
Dri#ers)
1. Introduo
A im!ort*ncia dos de#ice dri#ers
!ode ser resumida em !oucas
!ala#ras+ sem eles, n,o sistema
o!eracional -ue funcione
corretamente) Precisamos de
dri#ers at mesmo !ara acessar as
!arti./es internas $sicas de um
Sistema o!eracional, como !or
e'em!lo, o dri#e C: do %indows,
onde s,o "uardadas informa./es
im!ortantes so$re os !ro"ramas
instalados) Alm disso, temos ainda
!erifricos como im!ressoras,
scanners, !en dri#es -ue s0
funcionam ade-uadamente !or-ue
dri#es !ara "erenciar a
comunica.,o dos mesmos com o
sistema o!eracional) 1 !resente
tra$alo tem como o$2eti#o
a!resentar o conceito de De#ice
Dri#er, !ara -ue usado, al"uns
ti!os de dri#es e'istentes no
%indows e &inu', alm de al"umas
$oas !rticas)
!. "onceito e Pro#$sito De
%so de Device Drivers
Um De#ice Dri#er com!osto !or
um con2unto de fun./es e de
estruturas de dados -ue controlam
um ou mais !erifricos tais como
discos r3"idos, teclados, mouse,
monitores, interfaces de redes, etc)
Cada dri#er intera"e com as
diferentes !artes do sistema
o!eracional atra#s de uma
interface de !ro"rama.,o4API5 $em
definida) 678
1 !a!el de um De#ice Dri#er
!ro#er mecanismo, e n,o !ol3tica
678) Assim sendo, um de#ice dri#er
de#e indicar -uais ca!acidades
de#er,o ser !ro#idas 4mecanismo5,
e n,o como essas ca!acidades
de#em ser utili9adas 4!ol3tica5)
1 Sistema 1!eracional4S15
es!ecifica uma interface -ue
esta$elece como -ue o controle
de um dis!ositi#o reali9ado) A
fun.,o do de#ice dri#er tradu9ir as
camadas reali9adas !elo S1 em
camadas es!ec3ficas do
dis!ositi#o)
Al"umas o!era./es
im!lementadas s,o+
&#en: Re"istro de utili9adores do
m0dulo4automtico5)
'elease: decremento do n: de
utili9adores do m0dulo 4automtico5)
Write: en#io de caracteres !ela
controladora)
'ead: leitura de caracteres !ela
controladora)
Init: Iniciali9a.,o, re"istro do de#ice
dri#er e aloca.,o de recursos
4mem0ria !ara $uffers, IR;,)))5
"leanu#: &i$era.,o de Recursos)
(. Device Drivers )o Linux
De#ice Dri#ers !ossuem um !a!el
es!ecial no <ernel do &inu') S,o
=cai'as !retas> distintas -ue fa9em
uma !arte em !articular do
ardware res!onder a uma interface
de !ro"rama.,o interna $em
definida) 678) ?scondem
com!letamente os detales de
como o dis!ositi#o funciona)
Ati#idades de usurio s,o feitas
atra#s de um con2unto de
camadas !adroni9adas -ue s,o
inde!endentes do dri#er es!ec3fico)
1 !a!el do de#ice dri#er ent,o
ma!ear estas camadas !ara
o!era./es es!ecificas do dis!ositi#o
-ue atuam so$re o ardware 678) @
nesta interface de !ro"rama.,o -ue
os dri#ers !odem ser constru3dos
se!aradamente do resto do <ernel e
=!lu"ados> em tem!o de e'ecu.,o
-uando necessrio) ?sta
modularidade -ue fa9 com -ue
dri#ers !ara o &inu' se2am fceis de
escre#er 678)
(.1 *i#os de Device Drivers
no Linux
Dispositivo de Caractere(Char
Device): res!ons#el !or
im!lementar o acesso a uma stream
de $(tes 4como um ar-ui#o5)
Im!lementa o!era./es de o!ens,
read e close) ?'em!los deste ti!o
de dri#er seriam o console de
te'to4Ade#Aconsole5 e !ortas
seriais4Ade#Att(S15) Car de#ices
!odem ser acessados no diret0rio
Ade#) 678
Dispositivos de Bloco (Block
Device): S,o dis!ositi#os -ue
!odem ser#ir como osts !ara um
sistema de ar-ui#os, como se fosse
um disco 678) Tam$m !odem ser
acessados no diret0rio Ade#
Interfaces de Rede(Network
Interfaces): orientado a dis!ositi#os
de rede, n,o !ossui entrada no
diret0rio Ade#) TransmiteARece$e
!acotes n,o $(tes de um stream)
(.! Ar+uitetura do Linux
Device Driver
,i-ura 1
Conforme a Fi"ura 7 acima, Dri#ers
no &inu' s,o re!resentados como
m0dulos, -ue s,o !artes de c0di"o
-ue e'tendem a funcionalidade do
<ernel do &inu') B0dulos !odem
ser dis!ostos, a comunica.,o entre
os m0dulos feita atra#s de
camadas de fun./es) ?m tem!o
de carre"amento 4load time5, um
m0dulo e'!orta todas as fun./es
-ue ser,o !C$licas !ara uma ta$ela
de s3m$olos -ue o &inu' mantm)
?stas fun./es ent,o s,o #is3#eis
!ara todos os m0dulos) Acesso aos
dis!ositi#os s,o feitos atra#s da
camada de a$stra.,o de ardware,
na -ual sua im!lementa.,o
de!ende da !lataforma de ardware
em -ue o Dernel com!ilado, como
!or e'em!lo no 'EF ou SPARC)
.. Windows Driver /odel
0WD/1
1 %DB oferece um con2unto de
ser#i.os !ara os desen#ol#edores
criarem dri#ers com!at3#eis com os
sistemas o!eracionais %indows)
Um dri#e %DB com!at3#el com
%indows GP, Billenium e %indows
HE) A #anta"em desse ti!o de dri#er
de rodar em #rias !lataformas
%indows -ue os desen#ol#edores
!odem criar e "erenciar um Cnico
c0di"o fonte de $ase, redu9indo
assim a car"a de testes e de$u"
so$re o c0di"o 6I8)
..1Drivers do WD/
Drivers de Barramento+ Dri#er de
entrada e sa3da) Jo conte'to da
%DB, suas res!onsa$ilidades s,o+
enumerar os dis!ositi#os no seu
$arramento, res!onder ao =!lu" and
!la(> e a re-uisi./es de IA1 do
"erenciador de ener"ia 4Power
mana"ement5, e !ro#K uma
administra.,o inde!endente de
dis!ositi#o !ara os dis!ositi#os de
seu $arramento 6I8)
Drivers de Funo: @ o dri#er
!rinci!al !ara um dis!ositi#o) Suas
res!onsa$ilidades s,o+ !ro#er uma
interface o!eracional !ara o
dis!ositi#o, "erencia as leituras e
escritas no dis!ositi#o, "erencia a
!ol3tica de ener"ia do Dri#er) 6I8
Drivers de Filtro: Usado !elos
escritores de dri#ers !ara adicionar
#alores ou modificar o
com!ortamento de um dis!ositi#o,
uma classe de dis!ositi#os, ou um
$arramento, !or e'em!lo+ um dri#er
de filtro !ara um teclado USL -ue
!ossa e'i"ir ceca"ens adicionais
de se"uran.a) 6I8
..!. Ar+uitetura do WD/
,i-ura !
Conforme a Fi"ura I, M classes
de Dri#ers %DB+ filtro, funcional e
dri#ers de $arramento 61ne(, N78)
?les formam a !ila ilustrada na
fi"ura) Alm disso, dri#ers %DB
!recisam ser PnP, su!ortar
"erenciamento de ener"ia e
su!ortar tam$m Oerenciamento de
Instrumenta.,o do %indows
4%indows Bana"ement
Instrumentation5) A fi"ura mostra
como os dados e mensa"ens s,o
trocadas entre as #rias camadas
de dri#ers) Um estrutura !adr,o
camada IA1 Re-uest PacDet 4IRP5
usada !ara comunica.,o) Sem!re
-ue uma re-uisi.,o feita de uma
a!lica.,o !ara um dri#er, o
"erenciador de IA1 constr0i um IRP
e o re!assa !ara o dri#er, -ue o
!rocessa) ? -uando termina este
!rocesso, o dri#er Pcom!letaP o IRP
6Cant, HH8) Al"uns IRPQs s,o
tratados !elas camadas de cima e
s,o retornados ao "erenciador de
IA1) 1 acesso ao ardware a um
dis!ositi#o feito atra#s de uma
camada de a$astra.,o de
ardware)
2. Boas Prticas Para a
"onstruo de Device
Drivers
Se"uir determinadas !rticas
recomendadas !ode facilitar fa9er a
mi"ra.,o um dri#er de dis!ositi#o
de uma #ers,o do 1S !ara outro, de
um dis!ositi#o !ara outro ou de uma
!lataforma ardware !ara outra)
?sta se.,o tem como o$2eti#o
mostrar $oas !rticas !ara a
constru.,o de de#ice dri#ers
!ort#eis) Baterial retirado do
Windows Embedded Developer
Center 6M8
Comentar claramente o
c0di"o) ?s!ecialmente o
c0di"o -ue os usurios do
dri#er !odem ter -ue
modificar !ara !ermitir -ue o
dri#er !ossa funcionar nos
dis!ositi#os ou ardware dos
mesmos)
Binimi9ar a -uantidade de
c0di"o es!ec3fica !ara uma
!lataforma de ardware em
!articular) Pri#ile"iar c0di"os
-ue fa.am com -ue o dri#er
!ossa rodar em #rias
!lataformas)
Arma9enar informa./es de
confi"ura.,o de um de#ice
dri#er em um re"istrador
1$ter o endere.o f3sico do
re"istrador
Permitir confi"ura.,o de
!rioridade de e'ecu.,o de
Treads no re"istrador
3. 'e4er5ncias
Biblio-r4icas
678 Ru$ini, AlessandroR Cor$et,
Jonatan) Linux Device Drivers) I:
edi.,o, 2uno INN7
6I8 %indows Sardware De#elo!er
CentralR Windows Driver /odel
0WD/1, A$ril INNI
6M8 %indows ?m$edded De#elo!er
Center) Best Practices 4or
Portable Device Drivers, a"osto
INNE)
6. Lin7s
tt!+AAlwn)netA<ernelA&DDMA
tt!+AAwww)inf)!ucrs)$rATeduardo$Adisci
!linasAPro"PerifADe#iceDri#erA

Você também pode gostar