Control de flujo de software - Software flow control

El control de flujo de software es un método de control de flujo utilizado en enlaces de datos de computadora , especialmente RS-232 serial . Utiliza códigos especiales, transmitidos en banda , a través del canal de comunicaciones principal. Estos códigos generalmente se denominan XOFF y XON (de "transmitir apagado" y "transmitir encendido", respectivamente). Por lo tanto, el "control de flujo de software" a veces se denomina "control de flujo XON / XOFF". Esto contrasta con el control de flujo a través de señales dedicadas fuera de banda , " control de flujo de hardware ", como RS-232 RTS / CTS .

Representación

Para los sistemas que usan el código de caracteres ASCII , XOFF generalmente se representa usando un carácter o byte con valor decimal 19; XON con valor 17.

El estándar ASCII no reserva ningún carácter de control para su uso como XON / XOFF específicamente. Sin embargo, proporciona cuatro caracteres genéricos de "control de dispositivo" (DC1 a DC4). El Teletype Model 33 ASR adoptó dos de estos, DC3 y DC1, para su uso como XOFF y XON, respectivamente. Este uso fue copiado por otros y ahora es un estándar de facto . Los equivalentes de teclado de Ctrl+ Spara XOFF y Ctrl+ Qpara XON también se derivan de este uso.

Representaciones de XOFF / XON en ASCII
Código Sentido ASCII dic Maleficio Teclado
XOFF Pausar transmisión DC3 19 13 Ctrl+S
XON Reanudar transmisión DC1 17 11 Ctrl+Q

Mecanismo

Cuando un extremo de un enlace de datos no puede aceptar más datos (o acercarse a ese punto), envía XOFF al otro extremo. El otro extremo recibe el código XOFF y suspende la transmisión . Una vez que el primer extremo está listo para aceptar datos nuevamente, envía XON y el otro extremo reanuda la transmisión.

Por ejemplo, imagine una computadora que envía datos a una impresora lenta . Dado que la computadora es más rápida en enviar datos de lo que la impresora puede imprimirlos, la impresora se queda atrás y se acerca a una situación en la que se vería abrumada por los datos. La impresora reacciona a esta situación enviando XOFF a la computadora, que deja de enviar datos temporalmente. Cuando la impresora está lista nuevamente para recibir más datos, envía XON a la computadora, que comienza a enviar datos nuevamente.

XOFF / XON se puede utilizar en ambas direcciones, por ejemplo, dos teleimpresores conectados entre sí.

Comparación con el control de flujo por hardware

La principal ventaja del control de flujo por software es la reducción del número de conductores eléctricos entre el emisor y el receptor. Dado un terreno común , solo se necesitan dos señales, una para enviar y la otra para recibir. El control de flujo de hardware requiere cables adicionales entre los dos dispositivos. También requiere la implementación de hardware específico, que tuvo costos más significativos en los primeros días de la informática (es decir, los años sesenta y setenta).

Sin embargo, el control de flujo de software no está exento de problemas. El envío de XOFF requiere al menos un tiempo de carácter para transmitir y puede estar en cola detrás de los datos ya transmitidos que aún se encuentran en búferes. Las señales de hardware pueden reafirmarse casi instantáneamente y fuera de orden.

Como implica el nombre "control de flujo de software", el control de flujo que utiliza este método generalmente se implementa en el software (o al menos en un nivel más alto de firmware ), lo que puede causar más retrasos en la respuesta XOFF. El control de flujo de hardware generalmente está bajo el control directo del UART transmisor , que puede detener la transmisión inmediatamente, sin la intervención de niveles superiores.

Finalmente, dado que los códigos XOFF / XON se envían dentro de banda, no pueden aparecer en los datos que se transmiten sin confundirse con los comandos de control de flujo. Por lo tanto, cualquier dato que contenga los códigos XOFF / XON debe codificarse de alguna manera para una transmisión adecuada, con la sobrecarga correspondiente. Esto se hace frecuentemente con algún tipo de secuencia de escape . Para los dispositivos de impresión que interpretan directamente códigos ASCII, esto no es un gran problema, porque los códigos XON y XOFF usan números de código de "control de dispositivo" ASCII .

Aplicaciones

El control de flujo de software es utilizado ampliamente por dispositivos de baja velocidad, especialmente impresoras más antiguas y terminales tontas , para indicar que temporalmente no pueden aceptar más datos. Normalmente, esto se debe a una combinación de velocidad de salida limitada y a que los búferes estén llenos. Algunos paquetes de control de terminal, como termcap , emplean "padding" (retrasos cortos con granularidad de milisegundos) para permitir que dicho equipo tenga tiempo suficiente para realizar las acciones solicitadas sin la necesidad de afirmar XOFF.

Los operadores informáticos todavía utilizan a veces XOFF / XON manualmente para pausar y reiniciar la salida que, de lo contrario, se desplazaría fuera de la pantalla demasiado rápido.

El software emulador de terminal generalmente implementa el soporte XOFF / XON como una función básica. Esto generalmente incluye la consola del sistema en máquinas modernas Unix y Linux , así como emuladores de GUI como xterm y la consola Win32 .

El XON robusto es una técnica para reiniciar la comunicación, en caso de que se detenga por un XOFF recibido accidentalmente. La unidad receptora envía caracteres XON periódicos cuando puede recibir datos y la línea está inactiva. Un uso común es el de las impresoras en serie (como HP LaserJet II) para indicar que están en línea y listas para recibir datos. El XON se envía cada 1 a 30 segundos, según el diseño del firmware de la impresora.

Ver también

Referencias