Conductor

Un controlador , del inglés "driver", en informática indica el conjunto de procedimientos de software , a menudo escritos en ensamblador , que permite que un sistema operativo controle un dispositivo de hardware (por ejemplo, un periférico ).

Descripción

Permite que el sistema operativo use el hardware sin saber cómo funciona, pero comunicándose entre sí a través de una interfaz estándar , los registros del controlador periférico , que se abstrae de la implementación del hardware y solo considera su funcionamiento lógico. De esta manera, se pueden usar indistintamente diferentes hardware construidos por diferentes fabricantes.

De ello se deduce que un controlador es específico tanto desde el punto de vista del hardware que controla como desde el punto de vista del sistema operativo para el que está escrito. No es posible utilizar controladores escritos para un sistema operativo en otro diferente, porque la interfaz generalmente es diferente.

El controlador generalmente lo escribe el fabricante del dispositivo de hardware, ya que se requiere un conocimiento profundo del hardware para poder escribir un controlador que funcione. A veces, los controladores están escritos por terceros en función de la documentación técnica proporcionada por el fabricante, si está disponible.

A veces, el paquete de instalación de uno (o más) controladores incluye una aplicación, ejecutable con el sistema operativo en funcionamiento, que actúa como una herramienta para controlar el controlador y/o cualquier periférico controlado por él: en rigor, esta aplicación es diferente de la controlador real (a menudo no se puede desinstalar individualmente). En algunos casos, no se trata de una aplicación, sino de características relacionadas con el controlador, pero el concepto de elementos adicionales (complemento) en comparación con el controlador real no cambia.

Estructura y función

Cada controlador debe resolver el problema de la exclusión mutua garantizando a un único proceso (sobre todo si el sistema es multiprocesador ) el acceso exclusivo al periférico en todo momento. Dependiendo de cuántos procesos podrán interactuar directamente con el dispositivo, puede ser necesario introducir un controlador virtualizado . De hecho, si cada proceso puede actuar sobre el periférico independientemente de los demás (piense en un quemador que se escribe), sin perjuicio de la hipótesis de acceder a los siguientes elementos:

Antes de llamar a los procedimientos de uso, el proceso debe adquirir el uso exclusivo del dispositivo y eventualmente liberarlo a otros procesos. El modelo de sincronización de los procedimientos de uso es el de semáforos rojos inicializados . Los procedimientos de adquisición y liberación, por otro lado, son la espera y la señal de un semáforo virtual asociado al periférico para garantizar la exclusión mutua.

Los procedimientos de uso, como ya se ha comentado, siguen el modelo de semáforo siempre en rojo. Esto se debe a que, dada la enorme diferencia de velocidad entre la CPU y el periférico , el proceso debe esperar a que las operaciones se sincronicen con el periférico. Esto se hace a través de interrupciones .

El controlador físico opera en los registros del controlador periférico, en particular en tres tipos básicos de registros:

El primero es un registro de solo escritura: el controlador ingresa los datos relacionados con la operación solicitada. Normalmente hay un bit de activación , puesto a 1 al final de la carga de los registros (es decir, cuando el periférico está listo para arrancar), y reseteado por el periférico al final de las operaciones. El registro de estado es un registro de solo lectura: al final de las operaciones, lo primero que debe hacer es verificar que el dispositivo no haya devuelto ninguna condición de error. El registro de datos es un registro que la CPU puede usar tanto para leer como para escribir, ya que se usa para cargar los parámetros de entrada de la operación (por ejemplo, qué pista leer del disco ) y se puede usar para leer el resultado de la operación. 'operación. Tenga en cuenta que en lugar de un solo registro de datos, puede haber una batería de registros de datos, cuyo uso está documentado en el controlador.

Tipos

Existen muchos tipos de drivers, dependiendo del tipo de hardware que tengan que manejar y sobre todo del sistema operativo que tengan que ejecutar.

Como se mencionó anteriormente, algunos paquetes de controladores contienen otros elementos de administración de dispositivos en el sentido de una interfaz de usuario funcional. Este suele ser el caso de los controladores de impresora, tarjetas de video, tarjetas de sonido y más. En muchos casos, el paquete es monolítico en el sentido de que no permite que los componentes individuales se instalen o no por separado.

Ejemplo de operación

Supongamos que tenemos un determinado periférico, por ejemplo, una grabadora, y supongamos que tenemos varios programas de grabación instalados en nuestra PC (y los llamaremos procesos de grabación ). La operación de quemado es una operación muy delicada, porque debe realizarse de manera uniforme ya la misma velocidad. Dada la enorme diferencia de velocidad entre la CPU y la grabadora, la grabación se realiza gracias a un búfer que la CPU (es decir, el proceso de grabación) puede llenar en cualquier momento a alta velocidad, y que la grabadora física va vaciando lentamente. Este búfer nunca debe estar vacío, de lo contrario, la operación se cancelará (a menos que el quemador admita las nuevas tecnologías de prevención de insuficiencia de datos en el búfer ).

Toda la operación de quemado se puede describir de la siguiente manera:

  1. El proceso de grabación le pide al sistema operativo que use el dispositivo exclusivamente ( procedimiento de adquisición )
    • Si el dispositivo ya está ocupado, el proceso recibe una condición de error o espera a que finalice la operación
  2. El proceso del quemador envía los primeros datos de inicialización al quemador y se suspende ( utilice el procedimiento que termina en cambio de contexto )
  3. El quemador solicita nuevos datos: el proceso está desbloqueado ( Rutina de servicio de interrupción , o ISR, del controlador)
  4. Mientras espera que se ejecute el proceso del quemador, otros procesos realizan sus funciones, pero el quemador continúa vaciando el búfer.
  5. El proceso del quemador entra en ejecución y envía nuevos datos al quemador (un procedimiento de uso diferente , con cambio de contexto relativo)
  6. La operación se repite hasta que el programa termina de escribir los datos
  7. El proceso del quemador envía la señal de operación completada al quemador (un procedimiento de uso diferente y cambio de contexto nuevamente)
  8. El quemador se sincroniza con el proceso enviándole una señal de estado confirmando que todo está bien (siempre con el ISR )
  9. El proceso libera la grabadora a otros procesos que pueden estar esperando ( procedimiento de liberación )

Bibliografía

Artículos relacionados

Otros proyectos

Enlaces externos