stringtranslate.com

Control de flujo de software

El control de flujo de software es un método de control de flujo utilizado en enlaces de datos informáticos , especialmente en serie RS-232 . Utiliza códigos especiales, transmitidos dentro de 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 utilizan el código de caracteres ASCII , XOFF generalmente se representa mediante 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 específicamente como XON/XOFF. 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 usarlos 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 + para XON también se derivan de este uso.CtrlQ

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, uno puede imaginarse una computadora enviando datos a una impresora lenta . Dado que la computadora envía datos más rápido 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 vuelve a estar lista 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 de 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 , sólo se necesitan dos señales, una para enviar y otra para recibir. El control de flujo de hardware requiere cables adicionales entre los dos dispositivos. También requiere una implementación de hardware específica, que tenía costos más significativos en los primeros tiempos de la informática (es decir, en los años 1960 y 1970).

Sin embargo, el control del flujo de software no está exento de problemas. El inconveniente más importante es que el control del flujo de software es menos fiable. El envío de XOFF requiere al menos un carácter para transmitirse y puede estar en cola detrás de datos ya transmitidos que aún están en buffers. Las señales de hardware pueden afirmarse casi instantáneamente y fuera de orden.


Como lo implica el nombre "control de flujo de software", el control de flujo que utiliza este método generalmente se implementa en software (o firmware ), lo que puede causar mayores retrasos en la respuesta XOFF. Estos retrasos pueden provocar daños en los datos debido a desbordamientos del búfer . El control de flujo de hardware, por otro lado, normalmente está bajo el control directo del UART transmisor , que puede detener la transmisión inmediatamente, sin la intervención de niveles superiores. Para manejar la latencia causada por los FIFO integrados , los UART más avanzados, como el 16950, proporcionan control de flujo de software "en el chip". [1] Los UART que carecen de dicho soporte, como el 16550 , pueden sufrir desbordamientos del búfer cuando se utiliza el control de flujo de software, aunque esto se puede mitigar en cierta medida desactivando el FIFO del UART. [1]

Finalmente, dado que los códigos XOFF/XON se envían dentro de banda, no pueden aparecer en los datos que se transmiten sin ser confundidos con comandos de control de flujo. Por lo tanto, cualquier dato que contenga códigos XOFF/XON debe codificarse de alguna manera para una transmisión adecuada, con la correspondiente sobrecarga. 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 utilizan números de código ASCII de "control de dispositivo".

Aplicaciones

El control de flujo de software se utiliza ampliamente en dispositivos de baja velocidad, especialmente impresoras antiguas y terminales tontas , para indicar que temporalmente no pueden aceptar más datos. Normalmente, esto se debe a una combinación de una tasa de producción limitada y el hecho de que los buffers están llenos. Algunos paquetes de control de terminal, como termcap , emplean "relleno" (retrasos cortos que utilizan granularidad de milisegundos [2] ) para permitir que dicho equipo tenga tiempo suficiente para realizar las acciones solicitadas sin la necesidad de afirmar XOFF.

Los operadores de computadoras todavía usan a veces manualmente XOFF/XON para pausar y reiniciar la salida que, de otro modo, se desplazaría fuera de la pantalla demasiado rápido.

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

Robust XON es una técnica para reiniciar la comunicación, en caso de que fuera detenida 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

  1. ^ ab Yang, Casper (2009). Los secretos del control de flujo en la comunicación en serie (PDF) . Nota técnica de Moxa (1.0 ed.). Centro de redacción técnica de Moxa (publicado el 30 de septiembre de 2009). Archivado desde el original (PDF) el 4 de agosto de 2022 . Consultado el 4 de agosto de 2022 .
  2. ^ "La biblioteca Termcap: describir el relleno". www.gnu.org .