Compartir a través de


¿Qué es un conductor?

Un controlador es un componente de software que permite que el sistema operativo y un dispositivo se comuniquen. Por ejemplo, cuando una aplicación necesita leer datos de un dispositivo, llama a una función implementada por el sistema operativo. A continuación, el sistema operativo llama a una función implementada por el controlador. El controlador, normalmente desarrollado por el fabricante del dispositivo, sabe cómo comunicarse con el hardware del dispositivo para obtener los datos. Cuando el controlador obtiene los datos, lo devuelve al sistema operativo, que luego lo devuelve a la aplicación.

Diagrama que muestra la interacción entre una aplicación, un sistema operativo y un controlador.

Expandir la definición

Esta explicación simplifica el concepto de controladores. Estos son algunos puntos más a tener en cuenta:

  • El fabricante del dispositivo no siempre desarrolla el controlador. Si un dispositivo sigue un estándar de hardware publicado, Microsoft puede escribir el controlador, por lo que el diseñador de dispositivos no tiene que proporcionar uno.

  • No todos los controladores se comunican directamente con un dispositivo. A menudo, varios controladores superpuestos en un pila de controladores participan en una solicitud de E/S.

    La forma convencional de visualizar la pila es con el primer participante en la parte superior y el último participante en la parte inferior, como se muestra en este diagrama. Algunos controladores en la pila cambian la solicitud de un formato a otro. Estos controladores no se comunican directamente con el dispositivo. En su lugar, cambian la solicitud y la pasan a los controladores que están más bajos en la pila.

    Diagrama que muestra la comunicación entre una aplicación, un sistema operativo, tres controladores y un dispositivo.

    • Controlador de función: el controlador que se comunica directamente con el dispositivo se denomina controlador de función.

    • Controlador de filtro: los controladores que realizan el procesamiento auxiliar se denominan controladores de filtro.

    Para obtener más información, consulte Pilas de controladores.

  • Algunos controladores de filtro observan y registran información sobre las solicitudes de E/S, pero no participan en ellas. Por ejemplo, algunos controladores de filtro actúan como comprobadores para asegurarse de que los otros controladores de la pila controlan correctamente la solicitud de E/S.

Para refinar la definición, un controlador es cualquier componente de software que observe o participe en la comunicación entre el sistema operativo y un dispositivo.

Controladores de software

Esta definición expandida es más precisa, pero sigue incompleta. Algunos controladores no están asociados a ningún dispositivo de hardware.

Si necesita escribir una herramienta que tenga acceso a las estructuras de datos principales del sistema operativo, puede dividir la herramienta en dos componentes. El primer componente se ejecuta en modo de usuario y presenta la interfaz de usuario. El segundo componente se ejecuta en modo kernel y accede a los datos principales del sistema operativo. El componente que se ejecuta en modo de usuario se denomina aplicación. El componente que se ejecuta en modo kernel se denomina controlador de software. Un controlador de software no está asociado a un dispositivo de hardware.

En este diagrama se muestra una aplicación en modo de usuario que se comunica con un controlador de software en modo kernel.

Diagrama que muestra la relación entre una aplicación y un controlador de software.

Los controladores de software siempre se ejecutan en modo kernel. Se escriben principalmente para acceder a los datos protegidos solo disponibles en modo kernel. No todos los controladores de dispositivo necesitan acceso a los datos y recursos en modo kernel, por lo que algunos controladores de dispositivo se ejecutan en modo de usuario.

Para obtener más información sobre los modos de procesador, consulte Modo de usuario y modo kernel.

Conductores de autobús

Otro tipo de conductor es el conductor del autobús. Para comprender los controladores de bus, debe comprender los nodos de dispositivo y el árbol de dispositivos.

Para obtener información sobre árboles de dispositivos, nodos de dispositivo y controladores de bus, consulte Nodos de dispositivo y pilas de dispositivos.

Más información sobre los controladores de función

La explicación hasta ahora sobresmplifica el controlador de función. La explicación hasta ahora indica que el controlador de función es el controlador que se comunica directamente con el dispositivo. Esta instrucción es cierta para un dispositivo que se conecta directamente al bus de interconexión de componentes periféricos (PCI). El controlador de función de un dispositivo PCI obtiene direcciones que se asignan a los recursos de puerto y memoria del dispositivo. El controlador de funciones se comunica directamente con el dispositivo escribiendo en esas direcciones.

En muchos casos, un dispositivo no se conecta directamente al bus PCI. En su lugar, el dispositivo se conecta a un adaptador de bus host que está conectado al bus PCI. Por ejemplo, una tostadora USB se conecta a un adaptador de bus host, denominado controlador de host USB. Ese controlador está conectado al bus PCI. La tostadora USB tiene un controlador de función y el controlador de host USB también tiene un controlador de función.

El controlador de funciones del tostador se comunica indirectamente con el tostador enviando una solicitud al controlador de funciones del host USB. El controlador de funciones para el controlador de host USB se comunica directamente con el controlador de host USB, que se comunica con el tostador.

Diagrama que muestra la interacción entre los controladores de tostadora USB, el controlador del controlador de host USB y el bus PCI.