O que é um motorista?
Um driver é um componente de software que permite que o sistema operacional e um dispositivo se comuniquem. Por exemplo, quando um aplicativo precisa ler dados de um dispositivo, ele chama uma função implementada pelo sistema operacional. Em seguida, o sistema operacional chama uma função implementada pelo driver. O driver, geralmente desenvolvido pelo fabricante do dispositivo, sabe como se comunicar com o hardware do dispositivo para obter os dados. Uma vez que o driver recebe os dados, ele os devolve ao sistema operacional, que os devolve ao aplicativo.
Alargar a definição
A nossa explicação simplifica o conceito de condutores. Aqui estão mais alguns pontos a considerar:
Os drivers nem sempre precisam ser desenvolvidos pelo fabricante do dispositivo. Se um dispositivo seguir um padrão de hardware publicado, a Microsoft poderá escrever o driver, para que o designer de dispositivos não precise fornecer um.
Nem todos os drivers se comunicam diretamente com um dispositivo. Muitas vezes, vários drivers em camadas numa pilha de drivers participam de um pedido de E/S. A maneira convencional de visualizar a pilha é com o primeiro participante na parte superior e o último participante na parte inferior, como mostrado neste diagrama. Alguns drivers na pilha alteram a solicitação de um formato para outro. Esses drivers não se comunicam diretamente com o dispositivo. Em vez disso, eles alteram a solicitação e a passam para os drivers que estão mais baixos na pilha.
Driver de função: O driver que se comunica diretamente com o dispositivo é chamado de driver de função .
Driver de filtro: Os drivers que fazem processamento auxiliar são chamados de drivers de filtro .
Para obter mais informações sobre camadas, consulte Camadas de drivers.
Alguns drivers de filtro observam e registram informações sobre solicitações de E/S, mas não participam ativamente delas. Por exemplo, alguns drivers de filtro atuam como verificadores para garantir que os outros drivers na pilha manipulem a solicitação de E/S corretamente.
Podemos refinar nossa definição de driver como qualquer componente de software que observa ou participa da comunicação entre o sistema operacional e um dispositivo.
Drivers de software
Nossa definição expandida é razoavelmente precisa, mas ainda está incompleta porque alguns drivers não estão associados a nenhum dispositivo de hardware.
Por exemplo, se você precisar escrever uma ferramenta que acesse as principais estruturas de dados do sistema operacional, poderá dividir a ferramenta em dois componentes. O primeiro componente é executado no modo de usuário e apresenta a interface do usuário. O segundo componente é executado no modo kernel e acessa os dados principais do sistema operacional. O componente que é executado no modo de usuário é chamado de aplicativo, e o componente que é executado no modo kernel é chamado de driver de software . Um driver de software não está associado a um dispositivo de hardware.
Este diagrama ilustra um aplicativo de modo de usuário que se comunica com um driver de software de modo kernel.
Os drivers de software sempre são executados no modo kernel. Eles são escritos principalmente para acessar dados protegidos disponíveis apenas no modo kernel. No entanto, nem todos os drivers de dispositivo precisam de acesso aos dados e recursos do modo kernel, portanto, alguns drivers de dispositivo são executados no modo de usuário.
Para obter mais informações sobre os modos de processador, consulte Modo de Usuário e Modo Kernel.
Motoristas de ônibus
Outro tipo de motorista é o motorista de ônibus . Para entender os controladores de barramento, é necessário compreender os nós do dispositivo e a árvore de dispositivos.
Para obter informações sobre árvores de dispositivos, nós de dispositivo e drivers de barramento, consulte Nós de Dispositivo e Pilhas de Dispositivos.
Mais informações sobre drivers de função
A nossa explicação até agora simplifica excessivamente a definição do controlador de função . Nós afirmamos que o controlador de função para um dispositivo é o único controlador na estrutura que se comunica diretamente com o dispositivo. Isso é verdadeiro para um dispositivo que se conecta diretamente ao barramento PCI (Peripheral Component Interconnect). O driver de função para um dispositivo PCI obtém endereços que são mapeados para recursos de porta e memória no dispositivo. O driver de função se comunica diretamente com o dispositivo, escrevendo para esses endereços.
No entanto, em muitos casos, um dispositivo não se conecta diretamente ao barramento PCI. Em vez disso, o dispositivo se conecta a um adaptador de barramento host que está conectado ao barramento PCI. Por exemplo, uma torradeira USB se conecta a um adaptador de barramento host (chamado de controlador host USB), que é conectado ao barramento PCI. A torradeira USB tem um driver de função e o controlador host USB também tem um driver de função. O driver de função da torradeira comunica-se indiretamente com a torradeira enviando um pedido ao driver de função do controlador principal USB. O driver de função para o controlador host USB comunica-se então diretamente com o hardware do controlador host USB, que por sua vez se comunica com a torradeira.