Программное управление потоком - это метод управления потоком, используемый в компьютер каналы передачи данных, особенно последовательный порт RS-232. Он использует специальные коды, передаваемые внутри полосы по основному каналу связи. Эти коды обычно называются XOFF и XON (от «передача выключена» и «передача включена» соответственно). Таким образом, «программное управление потоком» иногда называют «управление потоком XON / XOFF». Это отличается от управления потоком через выделенные внеполосные сигналы - «аппаратное управление потоком » - например, RS-232 RTS / CTS.
Для систем, использующих Код символа ASCII, XOFF обычно представляется с помощью символа или байта с десятичным значением 19; XON со значением 17.
Стандарт ASCII не резервирует никаких управляющих символов специально для использования в качестве XON / XOFF. Однако он предоставляет четыре общих символа «управления устройством» (от DC1 до DC4). Телетайп модели 33 ASR принял два из них, DC3 и DC1, для использования в качестве XOFF и XON соответственно. Это использование было скопировано другими и теперь является стандартом де-факто. Клавиатурные эквиваленты Ctrl+Sдля XOFF и Ctrl+Qдля XON также являются производными от этого использования.
Код | Значение | ASCII | Dec | Hex | Keyboard |
---|---|---|---|---|---|
XOFF | Приостановить передачу | DC3 | 19 | 13 | Ctrl+S |
XON | Возобновить передачу | DC1 | 17 | 11 | Ctrl+Q |
Когда один конец канала данных не может принять больше данных (или приближается к этой точке), он отправляет XOFF другому концу. Другой конец получает код XOFF и приостанавливает передачу . Когда первый конец снова готов принимать данные, он отправляет XON, а другой конец возобновляет передачу.
Например, представьте, что компьютер отправляет данные на медленный принтер. Поскольку компьютер отправляет данные быстрее, чем принтер может их распечатать, принтер отстает и приближается к ситуации, когда он может быть перегружен данными. Принтер реагирует на эту ситуацию, отправляя XOFF на компьютер, который временно прекращает отправку данных. Когда принтер снова готов к приему данных, он отправляет XON на компьютер, который снова начинает отправку данных.
XOFF / XON может использоваться в обоих направлениях, например, два телетайпа, подключенных друг к другу.
Основным преимуществом программного управления потоком данных является уменьшение количества электрических проводов между отправителем и получателем. При общем заземлении необходимы только два сигнала: один для отправки, а другой для приема. Аппаратное управление потоком требует дополнительных проводов между двумя устройствами. Это также требует специальной аппаратной реализации, которая в ранние дни вычислительной техники (то есть в 1960-е и 70-е годы) требовала более значительных затрат.
Однако программное управление потоком данных не без проблем. Для отправки XOFF требуется как минимум один символ времени для передачи, и он может быть поставлен в очередь после уже переданных данных, все еще находящихся в буферах. Аппаратные сигналы могут быть заявлены почти мгновенно и не по порядку.
Как следует из названия «программное управление потоком данных», управление потоком с использованием этого метода обычно реализуется в программном обеспечении (или, по крайней мере, на более высоком уровне прошивки ), что может вызвать дополнительные задержки в XOFF ответ. Аппаратное управление потоком обычно находится под прямым управлением передающего UART, который может немедленно прекратить передачу без вмешательства более высоких уровней.
Наконец, поскольку коды XOFF / XON отправляются внутри полосы, они не могут появляться в передаваемых данных, не будучи ошибочно принятыми за команды управления потоком. Таким образом, любые данные, содержащие коды XOFF / XON, должны быть каким-то образом закодированы для правильной передачи с соответствующими накладными расходами. Часто это делается с помощью какой-то escape-последовательности . Для печатающих устройств, которые напрямую интерпретируют коды ASCII, это не представляет большой проблемы, поскольку коды XON и XOFF используют кодовые числа ASCII «управление устройством».
Программное управление потоком данных широко используется низкоскоростными устройствами, особенно старыми принтерами и немыми терминалами, чтобы указать, что они временно не могут принять больше данных. Обычно это происходит из-за комбинации ограниченной скорости вывода и заполнения любых буферов. Некоторые пакеты управления терминалом, такие как termcap, используют «заполнение» (короткие задержки с использованием миллисекундной гранулярности), чтобы дать такому оборудованию достаточно времени для выполнения запрошенных действий без необходимости подтверждать XOFF.
XOFF / XON по-прежнему иногда используются операторами компьютеров вручную для приостановки и перезапуска вывода, в противном случае прокручивал с экрана слишком быстро.
Эмулятор терминала ПО обычно реализует поддержку XOFF / XON как базовую функцию. Это обычно включает в себя системную консоль на современных машинах Unix и Linux, а также эмуляторы GUI, такие как xterm и консоль Win32.
Надежный XON - это метод перезапуска связи на случай, если он был остановлен случайно полученным XOFF. Приемный блок периодически отправляет символы XON, когда он может принимать данные, а линия свободна. Один из распространенных способов использования - последовательные принтеры (например, HP LaserJet II), чтобы указать, что они подключены к сети и готовы принимать данные. XON отправляется каждые 1–30 секунд в зависимости от прошивки принтера.