4.3 Estructuras de datos para manejo 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
Comentarios
Publicar un comentario