Un controlador de dispositivo es un componente de software que permite que el sistema operativo y un dispositivo se comuniquen entre sí. Por ejemplo, suponga que una aplicación necesita leer algunos datos de un dispositivo. La aplicación llama a una función implementada por el sistema operativo, y el sistema operativo llama a una función implementada por el controlador. El controlador, que fue escrito por la misma compañía que diseñó y fabricó el dispositivo, sabe cómo comunicarse con el hardware del dispositivo para obtener los datos. Después de que el controlador obtiene los datos del dispositivo, los devuelve al sistema operativo, que los devuelve a la aplicación.
Expandiendo la definición
Nuestra explicación hasta ahora está simplificada en exceso de varias maneras:
·
No todos los controladores tienen que ser escritos por la compañía que diseñó el dispositivo. En muchos casos, un dispositivo está diseñado de acuerdo con un estándar de hardware publicado. Esto significa que el controlador puede ser escrito por Microsoft, y el diseñador del dispositivo no tiene que proporcionar un controlador.
·
No todos los controladores se comunican directamente con un dispositivo. Para una solicitud de E / S determinada (como leer datos de un dispositivo), a menudo hay varios controladores, en capas en una pila, que participan en la solicitud. 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 de los controladores en la pila pueden participar transformando la solicitud de un formato a otro. Estos controladores no se comunican directamente con el dispositivo; simplemente manipulan la solicitud y la transmiten a los controladores que están más abajo en la pila.
El único controlador en la pila que se comunica directamente con el dispositivo se llama controlador de función ; Los controladores que realizan el procesamiento auxiliar se denominan controladores de filtro .
·
Algunos controladores de filtro observan y registran información sobre solicitudes de E / S pero no participan activamente en ellas. Por ejemplo, ciertos controladores de filtro actúan como verificadores para asegurarse de que los otros controladores en la pila manejan la solicitud de E / S correctamente.
Podríamos ampliar nuestra definición de controlador al decir que un controlador es cualquier componente de software que observa o participa en la comunicación entre el sistema operativo y un dispositivo.
Controladores de software
Nuestra definición ampliada es razonablemente precisa pero aún está incompleta porque algunos controladores no están asociados con ningún dispositivo de hardware. Por ejemplo, suponga que necesita escribir una herramienta que tenga acceso a las estructuras de datos del sistema operativo central, a las que solo se puede acceder mediante código que se ejecuta en modo kernel. Puede hacerlo dividiendo 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 tiene acceso a los datos centrales del sistema operativo. El componente que se ejecuta en modo de usuario se denomina aplicación, y el componente que se ejecuta en modo de núcleo se denomina controlador de software . Un controlador de software no está asociado con un dispositivo de hardware. Para obtener más información sobre los modos de procesador, consulte Modo de usuario y Modo de núcleo
Este diagrama ilustra una aplicación en modo usuario que se comunica con un controlador de software en modo kernel.
Notas adicionales
Los controladores de software siempre se ejecutan en modo kernel. La razón principal para escribir un controlador de software es obtener acceso a datos protegidos que solo están disponibles en modo kernel. Pero los controladores de dispositivos no siempre necesitan acceso a los datos y recursos en modo kernel. Entonces, algunos controladores de dispositivos se ejecutan en modo de usuario.
Hay una categoría de conductor que no hemos mencionado aún, el conductor del autobús . Para comprender los controladores de bus, debe comprender los nodos del dispositivo y el árbol de dispositivos. Para obtener información sobre árboles de dispositivos, nodos de dispositivos y controladores de bus, consulte Nodos de dispositivos y pilas de dispositivos
Nuestra explicación hasta ahora simplifica la definición del controlador de función . Dijimos que el controlador de función para un dispositivo es el controlador en la pila que se comunica directamente con el dispositivo. Esto es cierto para un dispositivo que se conecta directamente al bus de interconexión de componentes periféricos (PCI). El controlador de función para un dispositivo PCI obtiene direcciones que están asignadas a recursos de puerto y memoria en el dispositivo. El controlador de función se comunica directamente con el dispositivo escribiendo a esas direcciones. Sin embargo, en muchos casos, un dispositivo no se conecta directamente al bus PCI. En cambio, 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 (llamado controlador de host USB), que está conectado al bus PCI. La tostadora USB tiene un controlador de función, y el controlador host USB también tiene un controlador de función. El controlador de función para la tostadora se comunica indirectamente con la tostadora enviando una solicitud al controlador de función para el controlador host USB. El controlador de función para el controlador de host USB se comunica directamente con el hardware del controlador de host USB, que se comunica con la tostadora.
También puede consultar http://www.digitalbulls.com/ para obtener asistencia y asistencia precisas para los controladores de dispositivos.