En informática , el límite de E/S se refiere a una condición en la que el tiempo que se tarda en completar un cálculo está determinado principalmente por el período de espera para que se completen las operaciones de entrada/salida , lo que se puede comparar con el límite de CPU . Esta circunstancia surge cuando la velocidad a la que se solicitan los datos es más lenta que la velocidad a la que se consumen o, en otras palabras, se pasa más tiempo solicitando datos que procesándolos. [1]
El estado límite de E/S se ha identificado como un problema en la informática casi desde sus inicios. La arquitectura de Von Neumann , que se emplea en muchos dispositivos informáticos, implica múltiples soluciones posibles, como la implementación de una unidad de procesador central lógicamente separada que, además de almacenar las instrucciones del programa, también recupera datos reales, generalmente de la memoria principal , y hace uso de estos datos más accesibles para trabajar. Cuando finaliza el proceso, vuelve a escribir los resultados en el almacenamiento original (generalmente la memoria principal ).
Dado que los datos deben trasladarse entre la CPU y la memoria a lo largo de un bus que tiene una velocidad de transferencia de datos limitada , existe una condición conocida como el cuello de botella de Von Neumann . En pocas palabras, esto significa que el ancho de banda de datos entre la CPU y la memoria tiende a limitar la velocidad general de cálculo. En términos de la tecnología real que compone una computadora, el cuello de botella de Von Neumann predice que es más fácil hacer que la CPU realice cálculos más rápido que suministrarle datos a la velocidad necesaria para que esto sea posible.
En la historia reciente, el cuello de botella de Von Neumann se ha vuelto más evidente. La filosofía de diseño de las computadoras modernas se basa en una CPU y una memoria principal físicamente separadas. Es posible hacer que la CPU funcione a una alta tasa de transferencia de datos porque los datos se mueven entre ubicaciones dentro de ellas a través de distancias minúsculas. Sin embargo, la separación física entre la CPU y la memoria principal requiere un bus de datos para mover los datos a través de distancias comparativamente largas de centímetros o más. El problema de hacer que esta parte del sistema funcione lo suficientemente rápido para seguir el ritmo de la CPU ha sido un gran desafío para los diseñadores. [2]
El estado de E/S limitado se considera indeseable porque significa que la CPU debe detener su funcionamiento mientras espera que se carguen o descarguen datos de la memoria principal o del almacenamiento secundario . Como la velocidad de cálculo más rápida es el objetivo principal de los nuevos diseños de computadoras y los componentes como la CPU y la memoria son costosos, existe un fuerte imperativo de evitar los estados de E/S limitados y eliminarlos puede generar una mejora más económica en el rendimiento que actualizar la CPU o la memoria.
A medida que la CPU se vuelve más rápida, los procesos tienden a estar más limitados por la E/S.
O en términos más simples:
A medida que la CPU se vuelve más rápida, los procesos tienden a no aumentar su velocidad en proporción a la velocidad de la CPU porque quedan más limitados por la E/S.
Esto significa que los procesos limitados por E/S son más lentos que los procesos no limitados por E/S, no más rápidos. Esto se debe a aumentos en la tasa de procesamiento de datos en el núcleo, mientras que la tasa a la que los datos se transfieren desde el almacenamiento al procesador no aumenta con él. A medida que aumenta la velocidad del reloj de la CPU, lo que permite que se ejecuten más instrucciones en una ventana de tiempo determinada, el factor limitante de la ejecución efectiva es la tasa a la que las instrucciones pueden entregarse al procesador desde el almacenamiento y enviarse desde el procesador a su destino. En resumen, los programas cambian naturalmente a estar cada vez más limitados por E/S. [3]
Supongamos que tenemos un proceso limitado a la CPU y muchos procesos limitados a la E/S. A medida que los procesos fluyen por el sistema, puede producirse el siguiente escenario. El proceso limitado a la CPU obtendrá y mantendrá la CPU. Durante este tiempo, todos los demás procesos finalizarán su E/S y se moverán a la cola de listos, esperando a la CPU. Mientras los procesos esperan en la cola de listos, los dispositivos de E/S están inactivos. Finalmente, el proceso limitado a la CPU finaliza su ráfaga de CPU y se mueve a un dispositivo de E/S. Todos los procesos limitados a la E/S, que tienen ráfagas de CPU cortas, se ejecutan rápidamente y regresan a las colas de E/S. En este punto, la CPU permanece inactiva. El proceso limitado a la CPU regresará a la cola de listos y se le asignará la CPU. Nuevamente, todos los procesos de E/S terminan esperando en la cola de listos hasta que finalice el proceso limitado a la CPU. Hay un efecto de convoy ya que todos los demás procesos esperan a que el gran proceso salga de la CPU. Este efecto da como resultado una menor utilización de la CPU y del dispositivo de lo que sería posible si se permitiera que los procesos más cortos fueran los primeros. [4]