Gestión de Entrada/Salida

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar

El sistema operativo puede gobernar el dispositivo E/S a través del gestor de dispositivos de tres maneras posibles:

  • Gestión de E/S por muestreo.
  • Gestión de E/S por interrupciones.
  • Gestión híbrida de E/S.

Gestión de E/S por muestreo

El gestor de dispositivo periódicamente comprueba el estado del dispositivo. Para ello comprueba mediante los registros de estado del puerto de E/S si hay datos provenientes del dispositivo que deben ser tratados. Un ejemplo de lectura de un único dispositivo sería:

envia_orden_a_dispositivo(...);
while (!orden_terminada());
procesar_dato_resultado_de_orden();

La "lista de dispositivos" se puede recorrer en base a dos criterios distintos:

-Con prioridad uniforme: Todos los dispositivos reciben las mismas oportunidades de ser atendidos: se pregunta al primer dispositivo si requiere atención, y se le atiende. Después se pasa al siguiente, y así sucesivamente hasta dar una vuelta completa.

-Con prioridad escalonada: Tras atender a cualquier dispositivo, se vuelve a comenzar el sondeo por el primer dispositivo. El orden es determinante, pues se establece una relación de prioridad entre dispositivos determinada por ese orden.


Es ineficaz en sistemas interactivos, debido a que requiere espera ocupada y resulta engorrosa para atender a varios dispositivos simultáneamente, al implicar establecer prioridades entre estos.

Gestión de E/S por interrupciones

Una interrupción por hardware es una señal proveniente de un dispositivo de E/S para notificar al procesador de un cierto evento que debe ser tratado. Por ejemplo, un proceso hace uso de la llamada al sistema read para solicitar información que se encuentra en disco magnético. Una vez que la información está disponible, la interrupción es empleada para que se ejecute el gestor de dispositivos y obtenga los datos para dicho proceso, que ya están disponibles.

Las interrupciones son un mecanismo que ofrece la arquitectura para conectar los dispositivos de E/S con el procesador. No obstante, los datos provenientes del dispositivo de E/S se obtienen a través del bus.

El dispositivo de E/S emplea una de las líneas de interrupción que conectan al dispositivo con el procesador. Cada una de estas líneas corresponden con un cierto dispositivo o una familia de dispositivos de naturaleza similar. La asignación de líneas y dispositivo es estática y sucede en tiempo de arranque, por tanto, no cambia a lo largo del tiempo. En caso de que haya datos a tratar en el dispositivo, se notifica al procesador mediante la línea de interrupción. Ante esto, el planificador debe apartar el proceso que esté en estado activo para conmutar al gestor de dispositivo, el cual realizará el tratamiento de la interrupción, obteniendo los datos del dispositivo de E/S que están pendientes de ser tratados.

Por tanto, por cada interrupción se debe conmutar al gestor de dispositivos.

Las interrupciones no son reentrantes, esto quiere decir que cuando se está realizando el tratamiento de una interrupción se desactiva temporalmente la notificación por interrupciones. Por tanto, una interrupción se ejecuta hasta fin de tratamiento, y en ningún caso es interrumpida por otra interrupción.

Gestión de E/S híbrida

Esta aproximación es la más usada en sistemas operativos modernos, y consiste en emplear una combinación de las soluciones anteriores. En principio, se realiza una gestión por interrupciones, pero ante situaciones de estrés en las que se ofrezca una carga de trabajo muy alta, que pueda llevar a una sobrecarga de conmutaciones, se limita en el tiempo la consulta de datos. Por ejemplo, si la tarjeta de red estuviera saturando el procesador con interrupciones, se puede optar por atenderlas todas juntas periódicamente (En lotes).

10.3 Diseño modular E/S