martes, 28 de noviembre de 2017

Gestión de E/S

Puede decirse que la gestión de dispositivos de entrada y salida (periféricos) en UNIX es el resultado del trabajo complementario de dos elementos: los controladores y las especificaciones propias de los dispositivos.

Los primeros, también llamados drivers, son programas especializados utilizados para atender a cada familia de dispositivos (se entiende por familia a un modelo universal de un tipo de dispositivo, por ejemplo: la familia usada para gestionar las impresoras es un esquema general de ese tipo de dispositivo que aceptará a casi cualquier modelo de impresora, siempre y cuando se ajuste a ciertos criterios). El sistema operativo interpreta a los drivers como simples archivos de usuario de lectura/escritura, los cuales no tienen un tamaño predeterminado, sino que este se determina por la cantidad de bytes que contienen, es decir, se van ampliando a medida que se le añade información. Dichos archivos son el puente de comunicación entre los procesos y los dispositivos; para leer o escribir se realizaran solicitudes al archivo especial asociado con el dispositivo. Los procesos se comunican con los dispositivos mediante llamadas a sus drivers, mismas llamadas usadas en el manejo de ficheros (read, whrite, etc.). 

El segundo módulo del sistema de E/S son las especificaciones aportadas por cada periférico en particular, que son el complemento de los controladores. Cada dispositivo de E/S incluye un inodo (estructura de datos contenedora de las características de un archivo regular, directorio, o cualquier otro objeto que pueda contener el sistema de ficheros) que posee la información necesaria para su manejo. Cuando UNIX detecta la conexión de un periférico, inspecciona el inodo asociado a este y mediante él determina si el dispositivo es de bloque o de carácter; además, el inodo le permite al sistema operativo identificar qué controlador debe usar para atender al dispositivo y qué parte del archivo necesita en concreto para ese modelo específico de dispositivo.

UNIX hace uso de dos tipos de E/S para gestionar las diferentes clases de dispositivos, la amortiguada y la no amortiguada:

La E/S amortiguada usa memorias intermedias entre los dispositivos y la memoria principal. Estas pueden ser dos dependiendo del tipo de dispositivo: 
  1. Los buffers del sistema (caché buffers), utilizados para dispositivos estructurados por bloques (discos y cintas magnéticas), consiste en una caché de disco en donde se copia la información desde el espacio del dispositivo para luego pasarla a memoria principal mediante un Acceso Directo a Memoria (DMA) (en caso de una operación de salida el proceso ocurre de modo inverso).
  2. Cola de caracteres, forma de almacenamiento intermedio más adecuada para dispositivos por caracteres como terminales, líneas de comunicación e impresoras lentas; el dispositivo escribe en una cola de caracteres, de donde el proceso lee de un byte a la vez (o viceversa, el proceso puede escribir y el dispositivo leer) y a medida que cada carácter es leído se destruye para dar lugar al siguiente.
Por otra parte, la E/S no amortiguada es el esquema implementado para unidades de disco y de cinta e impresoras rápidas. Utiliza DMA, realizando de manera directa la transferencia entre el módulo de E/S y la zona de E/S del proceso. En este modelo de E/S, los procesos quedan bloqueados en memoria principal y no pueden ser expulsados a disco; además, el dispositivo se paraliza junto al proceso y no puede ser usado por otros mientras dure la transferencia.

Análisis realizado por: José Madrid

2 comentarios:

  1. Grupo Windows:¿Por que es importante disponer de un sistema de E/S independiente del hardware?

    ResponderEliminar
    Respuestas
    1. El disponer de un sistema de E/S independiente del hardware facilita la tarea de los programadores de sistemas operativos, pues así no tienen que interactuar con infinitos dispositivos, sino con modelos generales que pueden abarcar a casi cualquier dispositivo (siempre y cuando estos sean compatibles), más fáciles de manejar; y para los fabricantes de hardware que, o crean su hardware con una interfaz anfitrión/controlador existente, o crean el device driver que establece la interfaz entre el nuevo dispositivo y los sistemas operativos en los que vaya a operar.

      Eliminar