Gestión de Entrada y Salida

El término entrada/salida hace referencia a la comunicación entre una computadora y una entidad externa a su sistema, ya sea esta un usuario u otra computadora; entrada se refiere al ingreso de información al sistema para su procesamiento, mientras que salida es la información procesada por el computador y comunicada al exterior. Los dispositivos que realizan operaciones de entrada y salida son denominados periféricos, e incluyen aparatos tales como el teclado, el ratón, la pantalla del computador, la impresora, y los dispositivos de red, así como otros mecanismos que comunican los diversos componentes dentro del computador. La gestión de los dispositivos periféricos es vital para la efectiva operación del sistema, especialmente cuando se intenta presentar una interfaz común entre otros y al mismo tiempo se tiene una multitud periféricos distintos en forma y función.

Hardware de Entrada y Salida

Los dispositivos involucrados en operaciones de entrada y salida tienen diversos roles, tales como interacción con el usuario, comunicación, almacenamiento, entre otros. Los dispositivos periféricos están conectados al computador mediante puertos, y se conectan al resto del sistema mediante controladores de periféricos, que manejan la comunicación entre el CPU y el periférico.

Estructura de conexiones entre el procesador y periféricos mediante buses

Técnicas de comunicación

Para comunicarse, el CPU puede hacer uso de registros asociados a cada puerto para la transmisión de datos entre ambas partes en la forma de instrucciones o el estado del periférico. También puede hacer uso del mapeado de memoria E/S, técnica que consiste en compartir el mismo espacio de dirección entre la memoria y el dispositivo periférico, permitiendo que la comunicación directa; esto es útil para la transmisión rápida de grandes cantidades de información. Sin embargo, esta técnica se ve limitada por no poder detectar cuando un dispositivo ha cambiado de estado (que puede ser arreglado al deshabilitar el mecanismo de cache selectivo), o que los dispositivos y sus módulos deben examinar cada referencia a la memoria para ver si se les llama, corriendo el riesgo de que no detecten una llamada si esta se transmite mediante un bus lo suficientemente veloz (lo cual se puede arreglar al enviar todas las peticiones a la memoria para comprobar su función).

Actualmente, la mayoría de computadoras hacen uso del Acceso Directo a Memoria, el cuál permite la transferencia directa de grandes cantidades de información desde los periféricos a la memoria principal sin involucrar al CPU durante la mayor parte del proceso, esto siendo realizado mediante el uso de un controlador especial. Esta técnica puede realizarse físicamente o mediante el uso de memoria virtual.

Proceso de transferencia usando DMA

Software de Entrada y Salida

El diseño de software E/S está diseñado para ser independiente del dispositivo usado, diseñando programas que puedan acceder a cualquier dispositivo E/S sin tener que especificar el dispositivo con anterioridad. Asimismo, estos programas buscan ser uniformes en nomenclatura, asincrónicos (el CPU va a un estado de bloqueo cuando se realiza una interrupción, de forma que es fácil pasarle instrucciones), planear alrededor de búffers, ser capaz de resolver errores en caso de que el controlador periférico no pueda manejarlo, y la capacidad de gestionar dispositivos que pueden usar usados por múltiples usarios y dedicados aquellos que tan solo pueden ser usados por uno al mismo tiempo.

El software que maneja las operaciones E/S se divide en 3 niveles:

  • Bibliotecas E/S, que otorgan una interfaz para el usuario.
  • Módulos a nivel del Kernel, que permiten la interacción entre los programas, controladores de dispositivos y periféricos y módulos E/S independientes.
  • Hardware, donde se encuentran los componentes discutidos en la sección anterior.
I/O Softwares
Estructura de software E/S

Controlador de Dispositivo

Así como cada dispositivo periférico tiene un controlador que lo gestiona a lo nivel de hardware, tienen los controladores de dispositivos (device drivers) a nivel de software. Estos programas son módulos que son conectados a un sistema operativo para gestionar a un dispositivo en particular. En las operaciones E/S, los controladores reciben instrucciones de un programa y cooperan con el controlador periférico en la entrada y salida de información y en la resolución de cualquier error que surja dura el proceso. Los drives en sí contienen código específico para el dispositivo periférico, pero proveen una interfaz con la cual interactuar con el sistema operativo.

Controlador de Interrupciones

Las interrupciones son mecanismos que llaman a la atención del CPU cuando se necesita realizar una acción. Cuando un controlador periférico realiza una interrupción, el control del CPU sobre la operación se transfiere a un controlador de interrupciones, programa que realiza cualquier operación acción necesaria y regresa control de las operaciones al CPU.

Proceso de manejo de interrupciones

Sin el uso de programas que revuelven alrededor del manejo de interrupciones, el CPU tendría control total sobre la operación, lo cual es más simple de programar pero hace que el CPU pierda el tiempo si es más rápido que el módulo E/S.

Subsistema E/S del Kernel

Este sistema provee varios servicios para facilitar las operaciones de E/S, tales como:

  • Planificación del orden en las que se ejecutan las operaciones E/S, en base a su orden de petición y priodidad.
  • Gestión de dispositivos de memoria intermediaria (tales como búfer y caches) para compensar por cualquier falla en la transferencia de datos.
  • Spooling, el uso de búfers conocidos como spool (Operaciones Periféricas Simultáneas En Línea), para la gestión de periféricos dedicados a un solo usuario, tales como impresoras en lo relativo a su planificación.
  • Control de errores y protección E/S, manejado al nivel del kernel y en la mayoría de los casos sin intervención por programas del usuario.

Controlador de Disco

Los dispositivos de memoria secundaria tienen también controladores, sirviendo de mediador entre estos y el resto del computador, interpretando sus órdenes y estando al tanto del estado del disco.

Hard Drive Controller 1

Los discos están organizados en cilindros, pistas y sectores. El número típico de sectores por pista varía entre 8 y 32 (o más). Los sectores cercanos a la orilla del disco serán mayores físicamente que los cercanos al anillo. Un controlador puede realizar búsquedas en una o más unidades al mismo tiempo mediantes búsquedas traslapadas; mientras el controlador y el software esperan el fin de una búsqueda en una unidad, el controlador puede iniciar una búsqueda en otra. Sin embargo, los controladores no pueden leer o escribir en dos unidades al mismo tiempo. La capacidad de búsquedas traslapadas puede reducir considerablemente el tiempo promedio de acceso.

Fuentes

  • Bell, J. (2006). University of Illinois Chicago: Operating Systems: I/O Systems. Chicago, EE.UU. Recuperado de https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/13_IOSystems.html
  • Callahan, G. (2017). Modern Operating Systems: Principles of I/O Hardware. Recuperado de https://gcallah.github.io/OperatingSystems/IOHardware.html
  • Callahan, G. (2017). Modern Operating Systems: Principles of I/O Software. Recuperado de https://gcallah.github.io/OperatingSystems/IOSoftware.html
  • Tutorialspoint: Operating System – I/O Softwares. Recuperado de https://www.tutorialspoint.com/operating_system/os_io_software.htm
  • MiniTool: A Very Detailed Introduction to Hard Drive Controller. Vancouver, Canadá. Recuperado de https://www.minitool.com/lib/hard-drive-controller.html
  • La Red Martínez, D. L. (1999). Universidad Nacional del Nordeste: S.O. – Entrada / Salida. Corrientes, Argentina. Recuperado de http://exa.unne.edu.ar/informatica/SO/SO5.htm