controle de fluxo de software - Software flow control

Controle de fluxo de software é um modo de controlo de fluxo usado no computador links de dados , especialmente série RS-232 . Ele usa códigos especiais, transmitidas em banda , sobre o canal de comunicação principal. Estes códigos são geralmente chamados XOFF e XON (de "transmitir off" e "transmitir on", respectivamente). Assim, "controle de fluxo de software" é às vezes chamado "controle de fluxo XON / XOFF". Isto está em contraste com o controlo de fluxo através dedicado fora-de-banda de sinais de - " controlo de fluxo de hardware " - tal como RS-232 RTS / CTS .

Representação

Para sistemas que utilizam a ASCII código de carácter, DESL_X está geralmente representado usando um carácter ou byte com valor decimal 19; XON com o valor 17.

O padrão ASCII não reserva quaisquer caracteres de controlo para uso como XON / DESL_X especificamente. No entanto, ele fornece quatro genéricos caracteres "de controle do dispositivo" (DC1 através DC4). O Teletype Modelo 33 ASR adoptada dois destes, DC3 e DC1, para uso como DESL_X e XON, respectivamente. Esse uso foi copiado por outros, e é agora um padrão de fato . Os equivalentes de teclado de Ctrl+ Spara XOFF e Ctrl+ Qpara XON, também derivar dessa utilização.

XOFF / XON representações em ASCII
Código Significado ASCII dezembro feitiço Teclado
XOFF transmissão de pausa DC3 19 13 Ctrl+S
XON transmissão currículo DC1 17 11 Ctrl+Q

Mecanismo

Quando uma extremidade de um link de dados é incapaz de aceitar mais dados (ou aproximando esse ponto), ele envia XOFF para o outro lado. A outra extremidade recebe o código DESL_X, e suspende transmissão . Uma vez que a primeira extremidade está pronto para aceitar dados novamente, ele envia XON, ea outra extremidade retoma a transmissão.

Por exemplo, imagine um computador enviar dados para um processo lento de impressora . Uma vez que o computador é mais rápido no envio de dados do que a impressora pode imprimir, a impressora fica para trás e se aproxima de uma situação em que seria esmagada pelos dados. A impressora reage a esta situação, enviando XOFF para o computador, que temporariamente pára de enviar dados. Quando a impressora está novamente pronto para receber mais dados, ele envia XON ao computador, que começa a enviar dados novamente.

DESL_X / XON podem ser empregues em ambas as direcções, por exemplo, duas teleimpressoras ligados uns aos outros.

A comparação com o controlo de fluxo de hardware

A vantagem principal de controlo de fluxo de software é a redução do número de condutores eléctricos entre o emissor e o receptor. Dado um terreno comum , apenas dois sinais são necessários, um para enviar e outro para receber. Controle de fluxo de hardware requer fios adicionais entre os dois dispositivos. Ele também requer a implementação de hardware específico, que teve custos mais significativos em dias anteriores de computação (ou seja, 1960 e 70).

No entanto, o controle de fluxo de software não é sem seus problemas. Enviando XOFF requer pelo menos uma vez de caracteres para transmitir, e pode ser colocado em fila atrás de dados já transmitidos ainda em buffers. sinais de hardware pode ser afirmado quase instantaneamente, e fora-de-ordem.

Como o nome "controle de fluxo de software" implica, controle de fluxo utilizando este método é normalmente implementado em software (ou pelo menos um maior nível de firmware ), o que pode causar mais atrasos na resposta XOFF. Controle de fluxo de hardware é normalmente sob o controle direto da transmissão UART , que é capaz de cessar a transmissão imediatamente, sem a intervenção de níveis mais elevados.

Finalmente, uma vez que o XOFF / XON códigos são enviados em banda, eles não podem aparecer nos dados a serem transmitidos sem serem confundidos com os comandos de controle de fluxo. Quaisquer dados que contêm os códigos de DESL_X / XON, portanto, deve ser codificado de alguma maneira para a transmissão apropriada, com sobrecarga correspondente. Isto é freqüentemente feito com algum tipo de sequência de escape . Para dispositivos de impressão que interpretam diretamente códigos ASCII, este não é um problema grande, porque o XON e códigos XOFF usar ASCII "controle dispositivo" números de código.

aplicações

Controle de fluxo de software é amplamente utilizado por dispositivos de baixa velocidade, especialmente as mais velhas impressoras e terminais burros , para indicar que eles são temporariamente incapaz de aceitar mais dados. Tipicamente, isto é devido a uma combinação de limitado saída taxa e nenhum buffers de estar cheio. Alguns pacotes de controle de terminais, como termcap , empregar "padding" (atrasos curtos usando granularidade milissegundo) para permitir que tais equipamentos tempo suficiente para executar as ações solicitadas sem a necessidade de afirmar XOFF.

XOFF / XON ainda são por vezes usados manualmente pelos operadores de computador, para fazer uma pausa e reiniciar a saída que de outra forma se deslocar para fora da tela muito rapidamente.

Emulador de terminal de software geralmente implementa suporte DESL_X / XON como uma função básica. Isso geralmente inclui o console do sistema em modernas Unix e Linux máquinas, bem como GUI emuladores tais como xterm eo console do Win32 .

Robust XON é uma técnica para reiniciar a comunicação, apenas no caso em que foi interrompido por um XOFF acidentalmente recebido. A unidade receptora envia caracteres periódicas XON quando ele pode receber dados, e a linha estiver ocioso. Um uso comum é de impressoras seriais (como HP LaserJet II) para indicar que eles estão on-line e pronta para receber dados. O XON é enviado a cada 1 a 30 segundos, dependendo projeto firmware da impressora.

Veja também

Referências