¿Qué son los controladores de dispositivo?

No, el intérprete y el compilador no hacen lo mismo que el controlador del dispositivo. Ni remotamente.

Intérprete: un intérprete es un programa de computadora que ejecuta directamente instrucciones escritas en un lenguaje de programación o scripting, sin haberlas compilado previamente en lenguaje máquina.
Compilador: un compilador es un programa de computadora (o conjunto de programas) que transforma el código fuente escrito en un lenguaje de programación (el idioma de origen ) en otro lenguaje de computadora (el idioma de destino , que a menudo tiene una forma binaria conocida como código objeto ).
Controlador de dispositivo: un controlador de dispositivo es un programa de computadora que opera o controla un tipo particular de dispositivo que está conectado a una computadora.

Todas estas definiciones son de Wikipedia, por lo que puede buscar y leer los detalles allí.

Verá, Intérprete es un programa de computadora que funciona exclusivamente con el programa o con un script que se le proporciona (solo SW). Ejecuta el programa o la instrucción de script por instrucción sin convertirlo en lenguaje de máquina. Perl, Python, Ruby son lenguajes de script basados ​​en intérpretes.

Compiler es otro programa de computadora que también funciona con el programa que se le proporciona. Compila, lo que significa preprocesos, análisis, hace análisis sintáctico y luego genera código comprensible para la máquina.

El intérprete y el compilador funcionan solo con SW, no tienen nada que ver con el HW o el dispositivo.

El controlador de dispositivo es un programa que se puede compilar a través del compilador para obtener un archivo ejecutable entendible por la máquina o ejecutarlo a través del intérprete para obtener la funcionalidad deseada de un hardware ejecutado.

Cada hardware conectado a una computadora (que es la CPU) necesita un código que le indique que realice la actividad para la que está diseñado. Este código es el controlador del dispositivo. Por. por ejemplo, para comunicarse con otro dispositivo, podemos usar un dispositivo de comunicación en serie como UART o SPI. El dispositivo HW diseñado para este propósito necesita su propio controlador para realizar la funcionalidad deseada. Los controladores de dispositivo son exclusivamente específicos para el hardware para el que han sido escritos. Además, el hardware para realizar una funcionalidad particular es proporcionado por muchos proveedores diferentes, por lo tanto, los controladores también se vuelven específicos del proveedor.

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.