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:
- 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).
- 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
Grupo Windows:¿Por que es importante disponer de un sistema de E/S independiente del hardware?
ResponderEliminarEl 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