Sistema operativo - Softwares de E / S

El software de E / S a menudo se organiza en las siguientes capas:

  • User Level Libraries- Esto proporciona una interfaz simple para el programa de usuario para realizar entradas y salidas. Por ejemplo,stdio es una biblioteca proporcionada por los lenguajes de programación C y C ++.

  • Kernel Level Modules - Esto proporciona un controlador de dispositivo para interactuar con el controlador de dispositivo y los módulos de E / S independientes del dispositivo utilizados por los controladores de dispositivo.

  • Hardware - Esta capa incluye hardware real y controlador de hardware que interactúa con los controladores de dispositivo y da vida al hardware.

Un concepto clave en el diseño de software de E / S es que debe ser independiente del dispositivo, donde debería ser posible escribir programas que puedan acceder a cualquier dispositivo de E / S sin tener que especificar el dispositivo por adelantado. Por ejemplo, un programa que lee un archivo como entrada debería poder leer un archivo en un disquete, en un disco duro o en un CD-ROM, sin tener que modificar el programa para cada dispositivo diferente.

Controladores de dispositivo

Los controladores de dispositivo son módulos de software que se pueden conectar a un sistema operativo para manejar un dispositivo en particular. El sistema operativo toma la ayuda de los controladores de dispositivos para manejar todos los dispositivos de E / S. Los controladores de dispositivo encapsulan el código dependiente del dispositivo e implementan una interfaz estándar de tal manera que el código contiene lecturas / escrituras de registro específicas del dispositivo. El controlador del dispositivo, generalmente lo escribe el fabricante del dispositivo y se entrega junto con el dispositivo en un CD-ROM.

Un controlador de dispositivo realiza los siguientes trabajos:

  • Para aceptar la solicitud del software independiente del dispositivo anterior.
  • Interactuar con el controlador del dispositivo para tomar y dar E / S y realizar el manejo de errores requerido
  • Asegurarse de que la solicitud se ejecute correctamente

La forma en que un controlador de dispositivo maneja una solicitud es la siguiente: Supongamos que llega una solicitud para leer un bloque N. Si el controlador está inactivo en el momento en que llega una solicitud, comienza a ejecutar la solicitud inmediatamente. De lo contrario, si el controlador ya está ocupado con alguna otra solicitud, coloca la nueva solicitud en la cola de solicitudes pendientes.

Controladores de interrupciones

Un manejador de interrupciones, también conocido como rutina de servicio de interrupciones o ISR, es una pieza de software o más específicamente una función de devolución de llamada en un sistema operativo o más específicamente en un controlador de dispositivo, cuya ejecución se desencadena por la recepción de una interrupción.

Cuando ocurre la interrupción, el procedimiento de interrupción hace lo que tiene que hacer para manejar la interrupción, actualiza las estructuras de datos y despierta el proceso que estaba esperando que ocurriera una interrupción.

El mecanismo de interrupción acepta una dirección, un número que selecciona una rutina / función específica de manejo de interrupciones de un conjunto pequeño. En la mayoría de las arquitecturas, esta dirección es un desplazamiento almacenado en una tabla llamada tabla de vectores de interrupción. Este vector contiene las direcciones de memoria de los manejadores de interrupciones especializados.

Software de E / S independiente del dispositivo

La función básica del software independiente del dispositivo es realizar las funciones de E / S que son comunes a todos los dispositivos y proporcionar una interfaz uniforme al software a nivel de usuario. Aunque es difícil escribir software completamente independiente del dispositivo, podemos escribir algunos módulos que son comunes entre todos los dispositivos. A continuación se muestra una lista de funciones del software de E / S independiente del dispositivo:

  • Interfaz uniforme para controladores de dispositivos
  • Nomenclatura de dispositivos: nombres nemotécnicos asignados a números de dispositivo principales y secundarios
  • Protección del dispositivo
  • Proporcionar un tamaño de bloque independiente del dispositivo
  • Almacenamiento en búfer porque los datos que provienen de un dispositivo no se pueden almacenar en el destino final.
  • Asignación de almacenamiento en dispositivos de bloque
  • Asignación y liberación de dispositivos dedicados
  • Error al reportar

Software de E / S de espacio de usuario

Estas son las bibliotecas que brindan una interfaz más rica y simplificada para acceder a la funcionalidad del kernel o, en última instancia, interactuar con los controladores de dispositivo. La mayor parte del software de E / S a nivel de usuario consta de procedimientos de biblioteca, con algunas excepciones, como el sistema de spooling, que es una forma de tratar los dispositivos de E / S dedicados en un sistema de multiprogramación.

Las bibliotecas de E / S (por ejemplo, stdio) están en el espacio del usuario para proporcionar una interfaz al SW de E / S independiente del dispositivo residente del SO. Por ejemplo, putchar (), getchar (), printf () y scanf () son ejemplos de biblioteca de E / S de nivel de usuario stdio disponible en la programación C.

Subsistema de E / S del kernel

El subsistema de E / S del núcleo es responsable de proporcionar muchos servicios relacionados con E / S. A continuación se muestran algunos de los servicios prestados.

  • Scheduling- El núcleo programa un conjunto de solicitudes de E / S para determinar un buen orden en el que ejecutarlas. Cuando una aplicación emite una llamada de bloqueo del sistema de E / S, la solicitud se coloca en la cola de ese dispositivo. El programador de E / S del núcleo reorganiza el orden de la cola para mejorar la eficiencia general del sistema y el tiempo de respuesta promedio experimentado por las aplicaciones.

  • Buffering - El subsistema de E / S del kernel mantiene un área de memoria conocida como bufferque almacena datos mientras se transfieren entre dos dispositivos o entre un dispositivo con una operación de aplicación. El almacenamiento en búfer se realiza para hacer frente a un desajuste de velocidad entre el productor y el consumidor de un flujo de datos o para adaptarse entre dispositivos que tienen diferentes tamaños de transferencia de datos.

  • Caching- El núcleo mantiene la memoria caché, que es una región de memoria rápida que contiene copias de datos. El acceso a la copia en caché es más eficiente que el acceso al original.

  • Spooling and Device Reservation- Un spool es un búfer que contiene la salida de un dispositivo, como una impresora, que no puede aceptar flujos de datos intercalados. El sistema de cola copia los archivos de cola en cola en la impresora uno por uno. En algunos sistemas operativos, la puesta en cola es administrada por un proceso demonio del sistema. En otros sistemas operativos, es manejado por un hilo del kernel.

  • Error Handling - Un sistema operativo que utiliza memoria protegida puede proteger contra muchos tipos de errores de hardware y aplicaciones.