Diseño modular E/S
El diseño de software de lectura/escritura nos plantea las siguientes necesidades:
- Modelar un diseño por capas o estratos, dotando de una abstracción que oculte las peculiaridades de los dispositivos a las capas superiores, que deben ofrecer una interfaz homogénea.
- Hacer a los programas independientes de los dispositivos, que no tienen por qué conocer el soporte que manejan. Esto es deseable en cuanto a que el fabricante del dispositivo podría dejar de fabricar el dispositivo, por tanto, el proceso tendría que ser reescrito para soportar el nuevo dispositivo. De igual manera, si el dispositivo para el que está diseñado el proceso que conoce los detalles de bajo nivel no está disponible en el sistema, nuestro proceso quedaría inservible.
- Dar un criterio uniforme de denominación: En sistemas Unix, por ejemplo, se trata a cada dispositivo como a un fichero
- Tratamiento de errores lo más próximo posible a su origen: si un estrato detecta un error y puede solucionarlo, lo oculta a los niveles superiores. Si no, informa a nivel superior.
- Forzar a que un proceso tenga que pasar por el sistema operativo, que es quien garantiza que el reparto de recursos es equitativo. Si un proceso dispone de acceso directo a un dispositivo, podría adoptar un comportamiento abusón de manera que no permitiera a otros procesos emplearlo.
- Gestionar el acceso compartido a los dispositivos: Por ejemplo, un disco magnético puede ser accedido de forma compartida, mientras que un soporte de cinta, es deseable que no lo sea
La forma de cubrir todas estas necesidades es crear la siguiente abstracción:
Nota: el SSI es una subrutina de manejo de interrupciones.
Existen 4 niveles Software y 2 Hardware. El nivel de SSI de manera lógica pertenece al gestor de dispositivos, si bien se puede considerar como un subnivel separado por ejecutarse en núcleo. La abstracción de proceso respecto al dispositivo permite la independencia de los procesos, y fuerza a que un proceso tenga que pasar por el Sistema Operativo, que garantiza que el reparto de recursos es equitativo. Si un proceso tuviera acceso directo a un dispositivo, podría adoptar un comportamiento abusón de manera que no permitiera a otros procesos emplearlo.
- El Software de L/E en espacio del usuario, suele consistir en una librería de funciones que aporta un mayor grado de abstracción sobre el API del SO.
- El Software de E/L independiente de dispositivo:
-Dota de estructura de sistema de archivos a la información contenida en los dispositivos. -Gestiona el espacio libre y ocupado en el dispositivo. -Trata errores del sistema de archivos. -Homogeiniza los dispositivos. -Denominación uniforme de dispositivos. -Protege de archivos y dispositivos. -Tamaño de bloque independiente de dispositivo. -Hace independiente el hecho de que el dispositivo sea de bloques o de caracteres. -Asigna y libera dispositivos.
- Gestor de dispositivo :
-Gestiona normalmente todos los dispositivos de un = tipo. -Contiene el código dependiente del dispositivo. -Acepta peticiones abstractas del nivel superior, convirtiéndolas a peticiones concretas que se traducen en comandos para el dispositivo, y programa dichos comandos en el dispositivo, programando también si es oportuno el controlador de DMA. -Supervisa el correcto funcionamiento del dispositivo, tratando los errores que puedan ocurrir.
- Subprogramas de Interrupción (SSI):
-Atienden las interrupciones generadas por los dispositivos -La forma en la que se atienden depende de la estrategia seguida por cada SO: -Desde realizar el tratamiento completo, hasta -Avisar a hardware que la interrupción ha sido aceptada e informar a nivel superior.