Um driver de dispositivo Linux é significativamente diferente de sua contraparte do Windows. Drivers Linux são criadas exclusivamente para fornecer uma interface para o hardware. Eles não fazer suposições a respeito de como o hardware será usado. Além disso, eles geralmente não fornecem qualquer tipo de interfaces gráficas para o hardware. A maioria dos drivers para Linux com suporte hardware são parte do kernel árvore fonte do Linux e são mantidos pela comunidade de desenvolvimento Linux. Função
função de um driver de dispositivo é fornecer acesso a um pedaço de hardware. No Windows , isso é feito através da Application Binary Interface (ABI ) chama que a Microsoft fornece ao desenvolvedor de driver . O driver de dispositivo para Windows é então fornecido ao usuário como uma aplicação de binário.
Linux , não há ABI ou Application Programming Interface ( API) para drivers de dispositivo. Em vez disso, o kernel do Linux fornece uma interface userspace estável para aplicações. Os drivers de dispositivos são criados como módulos do kernel do Linux que escondem os detalhes de como o dispositivo funciona . Estes módulos estão em conformidade com um conjunto de chamadas padronizadas que são independentes dos drivers de dispositivo em si .
Características
Uma das principais características de drivers de dispositivo do Linux é que eles são modular . Eles podem ser, e são construídas separadamente a partir do resto do núcleo . Isto significa que cada módulo (ou driver ) pode ser usado ou removidos do kernel em tempo de execução , dependendo do que hardware está disponível.
Drivers também são construídas com a distinção entre mecanismo e política . Mecanismo é o que recursos são fornecidos , ea política é a forma como os recursos estão a ser utilizados . O driver de dispositivo Linux é a política livre . O motorista acessa o hardware, mas não informa o usuário como ele pode ou deve ser usado.
Device Classes
O kernel Linux separa dispositivos de hardware em três tipos principais: dispositivos de caracteres , dispositivos de bloco e interfaces de rede. Um dispositivo de caracteres pode ser acessado como um fluxo de caracteres ou bytes , semelhante a um arquivo . Estes dispositivos incluem a consola de texto, o teclado e as portas seriais.
Um dispositivo de bloco é um dispositivo que só pode ser acessado em blocos de dados (normalmente um kilobyte ou outra potência de 2) e pode hospedar um sistema de arquivos , como uma unidade de disco. Linux permite que os aplicativos para ler e escrever para bloquear dispositivos como um dispositivo de caractere , para que eles sejam geridos de uma forma especial pelo kernel.
Um dispositivo de rede permite a troca de dados com outros hosts. Estes dispositivos são geralmente de hardware , mas também pode ser puramente software . O kernel tem uma maneira diferente de se comunicar com dispositivos de rede do que com dispositivos de caracteres ou blocos. Em vez de leitura e escrita para o dispositivo , ele lida com a transmissão de pacotes .
Motorista Licenciamento
O kernel do Linux está licenciado sob a GNU General Public License (GPL) , o que significa ele é de código aberto e disponível gratuitamente para qualquer um baixar , modificar e redistribuir , desde que o código redistribuído também está licenciado sob a GPL. No entanto, isso não se aplica aos drivers de dispositivos Linux.
Como o kernel é modular, o driver de dispositivo não se torne parte do kernel. Em vez disso, ele acessa o kernel através de uma interface bem definida. Se o driver de dispositivo usa apenas este módulo de interface , ele não tem que ser licenciado sob a GPL. No entanto, se o driver de dispositivo , na verdade, usa parte do código do kernel , a fim de trabalhar , em vez da interface disponível , ele deve ser coberto pela GPL.
Fusão com o Kernel
< br >
Uma vez um driver de dispositivo torna-se aceita como "trabalhar " pela equipe de desenvolvimento do Kernel do Linux , ele se tornará parte da linha principal do kernel Linux árvore fonte . Isso significa que ele será mantido até à data através de mudanças de kernel posteriores, vai trabalhar com todas as unidades centrais de processamento (CPUs) suportados pelo Linux, e será corrigido e melhorado pela comunidade de desenvolvimento Linux.
A fonte do kernel árvore possui módulos para a maioria do hardware suportado pelo Linux. É por isso que , enquanto você estiver usando Linux hardware suportado , você pode carregar o sistema operacional e ter o seu trabalho de hardware sem instalar qualquer driver de software adicional.