Antes de comprender la programación de E/S, es importante obtener una descripción general de las operaciones de E/S.
¿Cómo se realizan las operaciones de E/S?
El sistema operativo tiene una cierta porción de código que se dedica a administrar la entrada/salida para mejorar la confiabilidad y el rendimiento del sistema. Un sistema informático contiene CPU y más de un controlador de dispositivo conectado a un canal de bus común, generalmente denominado controlador de dispositivo. Estos controladores de dispositivos proporcionan una interfaz a los dispositivos de E/S para comunicarse con el hardware del sistema, lo que facilita la comunicación y brinda acceso a la memoria compartida.
Requests de E/S en sistemas operativos:
las requests de E/S son administradas por controladores de dispositivos en colaboración con algunos programas del sistema dentro del dispositivo de E/S. Las requests son atendidas por el sistema operativo utilizando tres segmentos simples:
- Controlador de tráfico de E/S: realiza un seguimiento del estado de todos los dispositivos, unidades de control y canales de comunicación.
- Programador de E/S: ejecuta las políticas utilizadas por el sistema operativo para asignar y acceder al dispositivo, las unidades de control y los canales de comunicación.
- Controlador de dispositivos de E/S: atiende las interrupciones del dispositivo y encabeza la transferencia de datos.
Programación de E/S en sistemas operativos: la
programación se utiliza para el uso eficiente de los recursos de la computadora, evitando puntos muertos y sirviendo a todos los procesos que esperan en la cola. Para obtener más información sobre la programación de CPU, consulte Programación de CPU en sistemas operativos.
I/O Traffic Controller tiene 3 tareas principales:
- La tarea principal es verificar si hay al menos una ruta disponible.
- Si existe más de un camino, debe decidir cuál seleccionar.
- Si todos los caminos están ocupados, su tarea es analizar qué camino estará disponible antes.
El programador de E/S funciona de manera similar al programador de procesos , asigna los dispositivos, las unidades de control y los canales de comunicación. Sin embargo, bajo una gran carga de requests de E/S, el programador debe decidir qué solicitud se debe atender primero y para eso, el sistema operativo debe administrar varias colas.
La principal diferencia entre el programador de procesos < y el programador de E/S es que las requests de E/S no se reemplazan: una vez que el programa del canal ha comenzado, puede continuar hasta su finalización. Aunque es factible porque los programas son relativamente cortos (50 a 100 ms). Algunos sistemas operativos modernos permiten que I/O Scheduler atienda requests de mayor prioridad. En palabras más simples, si una solicitud de E/S tiene una prioridad más alta, se atiende antes que otras requests de E/S con una prioridad más baja. El programador de E/S funciona en coordinación con el controlador de tráfico de E/S para realizar un seguimiento de qué ruta se está sirviendo para la solicitud de E/S actual.
El controlador de dispositivos de E/S administra las interrupciones de E/S (si las hay) y los algoritmos de programación. Algunos algoritmos de manejo de E/S son:
- FCFS [servidor por orden de llegada].
- SSTF [Tiempo de búsqueda más corto primero].
- ESCANEAR
- Mirar
- Escaneo de N pasos
- C-SCAN
- C-LOOK
Cada algoritmo de programación tiene como objetivo minimizar el movimiento del brazo, el tiempo medio de respuesta, la variación en el tiempo de respuesta. A continuación se describe una descripción general de todos los algoritmos de programación de E/S:
- First Come First Serve [FCFS]
Es uno de los algoritmos de programación de dispositivos más simples, ya que es fácil de programar y esencialmente justo para los usuarios (dispositivos de E/S). La única barrera podría ser el tiempo de búsqueda alto, por lo que cualquier otro algoritmo que pueda superar el tiempo de búsqueda mínimo es adecuado para la programación. - Shortest Seek Time First [SSTF] :
utiliza la misma ideología que Shortest Job First en la programación de procesos, donde los procesos más cortos se atienden primero y los procesos más largos tienen que esperar su turno. Comparando el concepto SJF en la programación de E/S, la solicitud con la pista más cercana a la que se atiende (la que tiene la distancia más corta para viajar en el disco) es la siguiente en ser satisfecha. La principal ventaja sobre FCFS es que minimiza el tiempo de búsqueda general. Favorece las requests de fácil acceso y pospone el viaje a aquellas que están fuera del camino. - Algoritmo SCAN :
SCAN utiliza un indicador de estado que indica la dirección del brazo, indica si el brazo se está moviendo hacia el centro del disco o hacia el otro lado. Este algoritmo mueve el brazo desde el extremo del disco hasta la pista central y atiende cada solicitud en su camino. Cuando llega a la pista más interna, invierte la dirección y se mueve hacia las pistas externas del disco, atendiendo nuevamente todas las requests en su camino. - MIRAR [Algoritmo de elevador] :
es una variación del algoritmo SCAN, aquí el brazo no necesariamente va hacia ningún lado del disco a menos que haya requests pendientes. Espera una solicitud antes de atenderla. Surge una gran pregunta: «¿Por qué deberíamos usar LOOK en lugar de SCAN?». La principal ventaja de LOOK sobre SCAN es que descarta el retraso indefinido de las requests de E/S. - Otras variaciones de SCAN:
- N-Step Scan : retiene todas las requests pendientes hasta que el brazo inicia su camino de regreso. Las nuevas requests se agrupan para el próximo ciclo de rotación.
- C-SCAN [SCAN circular] : proporciona un tiempo de espera uniforme a medida que el brazo atiende las requests en su camino durante el ciclo de entrada. Para saber más, consulte Diferencia entre SCAN y C-SCAN .
- C-LOOK [Versión optimizada de C-SCAN] : Arm no necesariamente regresa a la pista con el número más bajo, sino que regresa desde la solicitud más baja para ser atendida. Optimicó el C-SCAN ya que el brazo no se mueve hasta el final del disco si no es necesario. Para saber más, consulte la Diferencia entre C-LOOK y C-SCAN .