Программное управление потоком данных
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2009 г. ) |
Программное управление потоком — это метод управления потоком , используемый в компьютерных каналах передачи данных , особенно в последовательном интерфейсе 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 | декабрь | Шестигранник | Клавиатура |
---|---|---|---|---|---|
XOFF | Пауза передачи | DC3 | 19 | 13 | Ctrl+ S |
ХАН | Возобновить передачу | DC1 | 17 | 11 | Ctrl+ Q |
Механизм
[ редактировать ]Когда один конец канала передачи данных не может принять больше данных (или приближается к этой точке), он отправляет XOFF на другой конец. Другой конец получает код XOFF и приостанавливает передачу . Как только первый конец снова готов принять данные, он отправляет XON, а другой конец возобновляет передачу.
Например, можно представить себе, что компьютер отправляет данные на медленный принтер . Поскольку компьютер отправляет данные быстрее, чем принтер может их распечатать, принтер отстает и приближается к ситуации, когда он будет перегружен данными. Принтер реагирует на эту ситуацию, отправляя XOFF на компьютер, который временно прекращает отправку данных. Когда принтер снова готов получать дополнительные данные, он отправляет XON на компьютер, который снова начинает отправлять данные.
XOFF/XON можно использовать в обоих направлениях, например, два телетайпа, соединенных друг с другом.
Сравнение с аппаратным управлением потоком данных
[ редактировать ]Основным преимуществом программного управления потоком является уменьшение количества электрических проводников между отправителем и получателем. Учитывая общую основу , необходимы только два сигнала: один для отправки, а другой для приема. Аппаратное управление потоком данных требует дополнительных проводов между двумя устройствами. Это также требует специальной аппаратной реализации, которая требовала более значительных затрат в ранние времена вычислений (т. е. в 1960-х и 70-х годах).
Однако программное управление потоком данных не лишено проблем. Наиболее важным недостатком является то, что программное управление потоком данных менее надежно. Отправка XOFF требует для передачи как минимум одного символа времени и может быть поставлена в очередь после уже переданных данных, все еще находящихся в буферах. Аппаратные сигналы могут подаваться почти мгновенно и не по порядку.
Тип | Целостность данных | Бюджетный | Вне диапазона |
---|---|---|---|
Аппаратное управление потоком данных | Самый надежный | Нет | Да |
Встроенное программное обеспечение fc | Хороший | Некоторый | Нет |
Программное обеспечение fc (FIFO отключено) | Хорошо, но медленно | Да | Нет |
Программное обеспечение fc (с включенным FIFO) | Ненадежный | Да | Нет |
Как следует из названия «программное управление потоком», управление потоком с использованием этого метода обычно реализуется в программном обеспечении (или встроенном ПО ), что может вызвать дальнейшие задержки ответа XOFF. Эти задержки могут привести к повреждению данных из-за переполнения буфера . С другой стороны, аппаратное управление потоком обычно находится под прямым контролем передающего UART , который может немедленно прекратить передачу без вмешательства более высоких уровней. Чтобы справиться с задержкой, вызванной встроенными FIFO , более продвинутые UART, такие как 16950, обеспечивают «встроенное» программное управление потоком данных. [1] UART, у которых нет такой поддержки, например 16550 , могут страдать от переполнения буфера при использовании программного управления потоком данных, хотя это можно несколько смягчить, отключив FIFO UART. [1]
Наконец, поскольку коды XOFF/XON передаются внутриполосно, они не могут появиться в передаваемых данных, не будучи ошибочно принятыми за команды управления потоком. Таким образом, любые данные, содержащие коды XOFF/XON, должны быть каким-либо образом закодированы для правильной передачи с соответствующими затратами. Это часто делается с помощью какой-либо escape-последовательности . Для печатающих устройств, которые напрямую интерпретируют коды ASCII, это не является большой проблемой, поскольку коды XON и XOFF используют ASCII кодовые номера «управления устройством».
Приложения
[ редактировать ]Программное управление потоком широко используется низкоскоростными устройствами, особенно старыми принтерами и тупыми терминалами , чтобы указать, что они временно не могут принимать больше данных. Обычно это происходит из-за сочетания ограниченной скорости вывода и буферов переполнения . Некоторые пакеты управления терминалами, такие как termcap , используют «заполнение» (короткие задержки с использованием миллисекундной детализации). [2] ), чтобы дать такому оборудованию достаточно времени для выполнения запрошенных действий без необходимости устанавливать XOFF.
XOFF/XON до сих пор иногда используются операторами компьютеров вручную для приостановки и возобновления вывода, который в противном случае привел бы к слишком быстрой прокрутке дисплея.
Программное обеспечение эмулятора терминала обычно реализует поддержку XOFF/XON в качестве базовой функции. Обычно это включает в себя системную консоль на современных машинах с Unix и Linux , а также эмуляторы графического интерфейса , такие как xterm и консоль Win32 .
Робастный XON — это метод перезапуска связи на случай, если он был остановлен случайно полученным XOFF. Принимающее устройство периодически отправляет символы XON, когда оно может принимать данные, а линия свободна. Одним из распространенных способов использования являются последовательные принтеры (например, HP LaserJet II), чтобы указать, что они подключены к сети и готовы получать данные. XON отправляется каждые 1–30 секунд в зависимости от версии прошивки принтера.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б Ян, Каспер (2009). Секреты управления потоком в последовательной связи (PDF) . Техническая заметка Moxa (изд. 1.0). Центр технического письма Moxa (опубликовано 30 сентября 2009 г.). Архивировано из оригинала (PDF) 4 августа 2022 г. Проверено 4 августа 2022 г.
- ^ «Библиотека Termcap — описание заполнения» . www.gnu.org .
- «Принтеры HP LaserJet IIP и IIP Plus — клавиши и меню панели управления» . Хьюлетт-Паккард . Архивировано из оригинала 9 мая 2006 года.