Отдаленые терминалы и консоль 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Отдаленые терминалы и консоль



Эмулятор терминала может быть запущен на отдаленном компьютере, при этом необходимо обеспечить обмен данными через сеть между ним и процессом. Примером решения такой задачи является протокол telnet, какой работает над ТCP/IP. Соответствующий сервер (telnet-сервер) запускают на машине, которая предоставляет отдаленный доступ. Он перехватывает данные, которые процесс передаёт на терминал, и пересылает их на отдаленную систему. Там работает эмулятор терминала (telnet-клиент), который интерпретирует полученные данные и, в свою очередь, отсылает серверу информацию, введенную на отдаленной машине. Сервер доставляет ее программе.

С другой стороны, если дисплей компьютера, на котором запущена ОС, работает в текстовом режиме, за отображение информации на нем тоже может отвечать эмулятор терминала. У ОС многопользователей с сетевым доступом (например, в UNIX) такой терминал часто называют консолью, в отличие от терминалов, которые используют для доступа к системе через сеть.

Терминальный ввод

Есть два подхода к организации терминального ввода.

· В режиме без обработки, или неканоническом режиме (non-canonical mode), данные передаются программе без изменения (включая управляющие коды, такие, как перевод каретки или Ваcksрасе). За интерпретацию этих кодов отвечает программа. Такой режим сложнее, но более гибкий. Чаще всего его используют текстовые редакторы.

· В случае использования режима с обработкой, или канонического режима (canonical mode), данные дополнительно будут обрабатываться перед тем как поступить в программу. Такая обработка происходит после нажатия пользователем клавиши Еnteг (ввод символа перевода строки), при этом управляющие коды будут интерпретированы и в соответствии с ними изменена вся введеная строка (например, если в ней трижды подряд случится Васksрасе, то эти три символа и еще три, введенные перед ними, из строки будут изъяты). Такой режим проще для программиста, в программу в данном случае попадает уже подготовленная символьная строка.

Примером программного обеспечения, которое реализует компромисс между этими режимами, может быть распространенная в UNIX-системах библиотека readline. Она предоставляет расширенные средства редактирования введенной строки, которые нуждаются в поддержке неканонического режима, но ее программный интерфейс аналогичен к вводу в каноническом режиме (в программу попадает подготовленная в результате редактирования строка).

Введенные с клавиатуры символы сохраняются в буфере, даже в неканоническом режиме (случаются ситуации, когда программа не может сразу принять данные от клавиатуры, и нужно сохранить их до того момента, когда появится такая возможность). В каноническом режиме данные из буфера передаются программе после ввода символа перевода строки, в неканоническом - как только программа будет готова их принять. Обычно для каждого терминала создается свой отдельный буфер ввода. В случае заполнения буфера может быть выделена дополнительная память.

В большинстве случаев введённые символы сразу отображаются на экране (работа в режиме эха). Возможно отключение этого режима, например во время введения паролей или команд текстовых редакторов.

Терминальный вывод

Для выведения на терминал тоже используют буферизацию. Буфер вывода заполняют в том случае, когда терминал не готов принять символ и по мере его готовности символы из буфера передают терминалу. Отображая данные, он интерпретирует управляющие сигналы, после чего показывает информацию, выделяет цветами отдельные участки, перемещает курсор и тому подобное.

Главная проблема заключается в том, что разные модификации терминалов воспринимают разные наборы управляющих сигналов. Для ее решения у современных ОС обычно создают базу данных терминалов, которая содержит список терминалов и сигналов, которые отвечают каждому из них. В UNIX-системах такую базу называют terminfo.

Логическая структура терминального ввода-вывода показана на рис. 8.1.

Рис. 8.1 Терминальный ввод-вывод



Поделиться:


Последнее изменение этой страницы: 2017-01-19; просмотров: 94; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.123.120 (0.004 с.)