Mecanismos y Funciones de los Manejadores Dispositivos (Device drivers)
La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel: -La comunicación es mediante un flujo de bits en serie que: Comienza con un preámbulo. Sigue con una serie de bits. Concluye con una suma para verificación o un código corrector de errores.
¿Qué es un DRIVER (o CONTROLADOR)?
Un controlador es una parte del software que permite que Microsoft Windows (u otro sistema operativo) se comunique con los dispositivos de hardware en tu sistema. Dispositivos, como tarjetas de video, tarjetas de sonido y módems requieren que los controladores funcionen correctamente dentro de Windows. A veces, Windows incluye controladores para dispositivos, pero generalmente los controladores deben descargarse e instalarse por separado.


El preámbulo: Se escribe al dar formato al disco. Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares. El controlador debe:
Convertir el flujo de bits en serie en un bloque de bytes
Efectuar cualquier corrección de errores necesaria.
Copiar el bloque en la memoria principal.
Cada controlador posee registros que utiliza para comunicarse con la CPU:
Pueden ser parte del espacio normal de direcciones de la memoria: e/s mapeada a memoria.
Pueden utilizar un espacio de direcciones especial para la e/s, asignando a cada controlador una parte de él.
El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores. Al aceptar el comando, la CPU puede dejar al controlador y dedicarse a otro trabajo. Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:
Obtenga el control de la CPU.
Funciones del controlador
Atendiendo a las características del hardware de los dispositivos, se pueden observar los siguientes aspectos distintivos:
Dirección de E/S. En general hay dos modelos de direccionamiento de E/S, los que usan puertos y los que proyectan los registros en memoria.
Unidad de transferencia. Los dispositivos suelen usar unidades de transferencia de tamaño fijo. Hay dos modelos clásicos de dispositivos: de caracteres y de bloques.
Interacción computadora-controlador. La computadora tiene que interaccionar con la computadora para realizar las operaciones de E/S y saber cuándo terminan.
El controlador debe encargarse además de sincronizar la velocidad del procesador con la del periférico y de detectar los posibles errores que se produzcan en el acceso a los periféricos.
Software de controlador
La información entre los controladores de dispositivo y la unidad central de proceso o memoria principal se puede transferir mediante un programa que ejecuta continuamente y lee o escribe los datos del (al) controlador. Con esta técnica, que se denomina E/S programada, la transferencia de información entre un periférico y el procesador se realiza mediante la ejecución de una instrucción de E/S.
E/S programada: El procesador emite una orden de E/S de parte de un proceso a un modulo de E/S; el proceso espera entonces a que termine la operación, antes de seguir.
E/S dirigida por interrupciones: El procesador emite una orden de E/S de parte de un proceso, continua la ejecución de las instrucciones siguientes y el modulo de E/S lo interrumpe cuan do completa su trabajo. Las instrucciones siguientes pueden ser del mismo proceso, si no es necesario para este esperar la terminación de E/S. en otro caso, el proceso se suspende a la espera de la interrupción, mientras se realiza otro trabajo.
Acceso Directo a la Memoria (DMA): un modulo de DMA controla el intercambio de datos entre la memoria principal y un modulo de E/S. El procesador envía una petición de transferencia de un bloque de datos al modulo DMA y se interrumpe solo cuando se ha transferido el bloque entero.
En la mayoría de los sistemas informáticos, el DMA es la forma dominante de transferencia ofrecida por el sistema operativo.
Hay que recalcar que el controlador al ser una parte crítica del sistema operativo, el fallo de un controlador puede ser más grave que otros errores de software, pudiendo bloquear el ordenador o incluso dañar el hardware. Debido a que el hardware es (necesariamente) indeterminista, encontrar y solucionar un fallo en un controlador es una tarea complicada ya que no sólo hay que monitorizar el programa, sino también el propio dispositivo.
Los manejadores de interrupción suelen hacer algo más que comunicar el evento al manejador de dispositivo. Cuando una interrupción ocurre muy frecuentemente, caso del reloj, o cuando la cantidad de información a transferir es muy pequeña, caso del teclado, sería muy costoso comunicar siempre el evento al manejador de dispositivo asociado. En estos casos, el propio manejador de interrupción registra la ocurrencia del evento, bien mediante el incremento de una variable global para el reloj o la acumulación de caracteres en un buffer del teclado. La notificación al manejador se hace únicamente cada cierto número de ocurrencias del evento, en el caso del reloj, o activando unflag que indica que hay datos en el buffer del teclado.
Manejadores de dispositivos
Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo.
Dicho manejador incluye: código independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del código de E/S independiente del dispositivo, traducir dichas peticiones a términos que entienda el controlador, enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan. La siguiente figura muestra un diagrama de flujo con las operaciones de un manejador.
Todos los manejadores tienen una lista de peticiones pendientes por dispositivo donde se encolan las peticiones que llegan de niveles superiores. El manejador explora la lista de peticiones, extrae una petición pendiente y ordena su ejecución. La política de extracción de peticiones de la lista es dependiente de manejador y puede ser FIFO. Una vez enviada la petición al controlador, el manejador se bloquea o no, dependiendo de la velocidad del dispositivo. Para los lentos (discos) se bloquea esperando una interrupción. Para los rápidos (pantalla, discos RAM, etcétera) responde inmediatamente. Después de recibir el fin de operación, controla la existencia de errores y devuelve al nivel superior el estado de terminación de la operación. Si tiene operaciones pendientes en la cola de peticiones, atiende a la siguiente, en caso de que le toque ejecutar después de la operación de E/S. En caso contrario se bloquea.
El acceso directo a memoria (DMA, del inglés direct memory access) permite a cierto tipo de componentes de unacomputadora acceder a la memoria del sistema para leer o escribir independientemente de la unidad central de procesamiento (CPU) principal. Muchos sistemas hardware utilizan DMA, incluyendo controladores de unidades de disco, tarjetas gráficas y tarjetas de sonido. DMA es una característica esencial en todos los ordenadores modernos, ya que permite a dispositivos de diferentes velocidades comunicarse sin someter a la CPU a una carga masiva de interrupciones.
Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un dispositivo a otro. En lugar de que la CPU inicie la transferencia, la transferencia se lleva a cabo por el controlador DMA. Un ejemplo típico es mover un bloque de memoria desde una memoria externa a una interna más rápida. Tal operación no ocupa al procesador y, por ende, éste puede efectuar otras tareas. Las transferencias DMA son esenciales para aumentar el rendimiento de aplicaciones que requieran muchos recursos.
Cabe destacar que aunque no se necesite a la CPU para la transacción de datos, sí se necesita el bus del sistema (tanto bus de datos como bus de direcciones), por lo que existen diferentes estrategias para regular su uso, permitiendo así que no quede totalmente acaparado por el controlador DMA.
El acceso directo a memoria es simplemente eso, un acceso a memoria que se crea al particionar la memoria en bloques del mismo tamaño.

No hay comentarios:
Publicar un comentario