stringtranslate.com

Эмулятор терминала

xterm , эмулятор терминала, разработанный для X Window System
Windows Terminal — эмулятор терминала с открытым исходным кодом для Windows 10 и Windows 11.

Эмулятор терминала или терминальное приложение — это компьютерная программа , которая эмулирует видеотерминал в пределах некоторой другой архитектуры отображения. Хотя обычно это синоним shell или текстового терминала , термин терминал охватывает все удаленные терминалы , включая графические интерфейсы. Эмулятор терминала внутри графического пользовательского интерфейса часто называют окном терминала .

Терминальное окно позволяет пользователю получить доступ к текстовому терминалу и всем его приложениям, таким как интерфейсы командной строки (CLI) и приложения текстового пользовательского интерфейса (TUI). Они могут работать как на той же машине, так и на другой через telnet , ssh , dial-up или через прямое последовательное соединение . В операционных системах типа Unix обычно имеется одно или несколько терминальных окон, подключенных к локальной машине.

Терминалы обычно поддерживают набор управляющих последовательностей для управления цветом, положением курсора и т. д. Примерами служат семейство стандартов управляющих последовательностей терминалов, включающее ECMA-48 , ANSI X3.64 и ISO/IEC 6429 .

Фон

На заре вычислений, с появлением интерактивных вычислений, преобладающая модель включала центральный компьютер, подключенный к нескольким терминалам. [1] Эта конфигурация, известная как централизованная или мэйнфреймовая модель, включала мощный центральный компьютер, который выполнял все задачи по обработке, в то время как терминалы служили устройствами ввода/вывода для взаимодействия пользователей с системой. Эти системы изначально были основаны на символах.

Терминалы, ориентированные на символы

Терминал режима символов Televideo ASCII

Символьно-ориентированный терминал — это тип компьютерного терминала, который взаимодействует со своим хостом по одному символу за раз, в отличие от блочно-ориентированного терминала, который взаимодействует блоками данных. Это наиболее распространенный тип терминала данных, поскольку его легко реализовать и запрограммировать. Подключение к мэйнфрейму или терминальному серверу осуществляется через последовательные каналы RS-232, Ethernet или другие фирменные протоколы .

Терминалы, ориентированные на символы, могут быть «немыми» или «умными». Немые терминалы [2] — это те, которые могут интерпретировать ограниченное количество управляющих кодов (CR, LF и т. д.), но не имеют возможности обрабатывать специальные escape-последовательности, которые выполняют такие функции, как очистка строки, очистка экрана или управление положением курсора. В этом контексте немые терминалы иногда называют стеклянными телетайпами , поскольку они по сути имеют ту же ограниченную функциональность, что и механический телетайп. Этот тип немых терминалов по-прежнему поддерживается в современных Unix-подобных системах путем установки переменной среды TERM в значение dumb. Умные или интеллектуальные терминалы — это те, которые также имеют возможность обрабатывать escape-последовательности, в частности, escape-последовательности VT52, VT100 или ANSI.

Эмуляторы

Когда персональные компьютеры стали повсеместными в 1980-х годах, они предложили возможность запуска программного обеспечения на персональном компьютере пользователя, предоставляя возможность заменить дорогие и занимающие много места аппаратные терминалы чем-то, что имело дополнительные функции. [3] Сразу же стало доступно программное обеспечение, которое могло эмулировать функции аппаратных терминалов на ПК. Примерами такого программного обеспечения для DOS были Telix или Telemate, которые были опубликованы в 1988 году и могли эмулировать терминал DEC VT102. [4]

Рабочие станции , обычно работающие под управлением версий Unix , также стали распространены в 1980-х годах. Системы Unix обычно предоставляли доступ к командной строке с локально подключенных или коммутируемых терминалов. Рабочие станции Unix были разработаны для использования в основном через графический пользовательский интерфейс (GUI); для предоставления доступа к командной строке GUI включал приложения эмулятора терминала, которые вели себя как локально подключенные терминалы.

В 1990-х годах появились новые операционные системы, такие как Windows и OS/2 , обеспечившие техническую основу для большего количества эмуляторов терминала, таких как Telix для Windows, ZOC для OS/2 или PuTTY , который был первоначально выпущен для Windows в 1998 году и который (вместе со своими производными) по сей день остается одним из самых популярных вариантов. [5]

Благодаря успеху Linux , особенно работающего в центрах обработки данных и облачных серверах, [6] необходимость доступа к удаленным компьютерам через символьные терминалы остается. Это очевидно из того факта, что сегодня списки эмуляторов терминалов, которые могли бы служить альтернативой вышеупомянутому PuTTY, предлагают более 100 альтернатив. [7] [ dubiousобсудить ]

Примеры эмулируемых терминалов

Было разработано множество эмуляторов терминалов для физических аппаратных терминалов, таких как VT52 , VT100 , VT220 , VT320 , IBM 3270/8/9/E , IBM 5250 , IBM 3179G , Data General D211, Hewlett-Packard HP700/92, Sperry/Unisys 2000-series UTS60 , Burroughs/Unisys A-series T27/TD830/ET1100, ADDS ViewPoint, AT386, Siemens Nixdorf (SNI) 97801, Televideo 925 и Wyse 50/60.

Некоторые эмуляторы терминала, такие как xterm , реализуют дополнительные функции, отсутствующие в эмулируемом терминале. [8]

Кроме того, были разработаны программы для эмуляции различных системных консольных «терминалов», таких как консоль рабочей станции Sun и консоль Linux .

Наконец, некоторые эмуляторы просто ссылаются на набор стандартов, например, на стандарты для управляющих кодов ANSI .

Такие программы доступны на многих платформах, включая DOS , Unix-подобные системы, включая Linux и macOS , Windows , а также встроенные операционные системы, используемые в мобильных телефонах и промышленном оборудовании.

Подробности реализации

Unix-подобные системы

В прошлом Unix и Unix-подобные системы использовали последовательные порты, такие как порты RS-232 , и предоставляли для них /dev/* файлы устройств . [9]

С помощью эмуляторов терминала эти файлы устройств эмулируются с помощью пары псевдотерминальных устройств. Эта пара используется для эмуляции физического порта/подключения к конечной точке вычислений хоста — аппаратному обеспечению компьютера, предоставляемому API операционной системы, некоторым другим программным обеспечением, таким как rlogin , telnet или SSH или чем-либо еще. [10] Например, в системах Linux это будут /dev/ptyp0(для главной стороны) и /dev/ttyp0(для подчиненной стороны) псевдотерминальные устройства соответственно.

Существуют также специальные файлы виртуальной консоли,/dev/console такие как . В текстовом режиме запись в файл отображает текст на виртуальной консоли, а чтение из файла возвращает текст, который пользователь пишет на виртуальной консоли. Как и в других текстовых терминалах , существуют также специальные escape-последовательности , управляющие символы и функции , которые программа может использовать, проще всего через библиотеку, такую ​​как ncurses . Для более сложных операций программы могут использовать консольные и терминальные специальные системные вызовы ioctl . Можно сравнивать устройства, используя шаблоны vcs («виртуальный консольный экран») и vcsa («виртуальный консольный экран с атрибутами»), такие как /dev/vcs1и /dev/vcsa1. [11]

Некоторые эмуляторы терминала также включают escape-последовательности для настройки поведения терминала, чтобы обеспечить хорошее взаимодействие между терминалом и программами, работающими внутри него, например, для настройки вставки скобок .

Виртуальные консоли можно настроить в файле, /etc/inittabсчитываемом init — обычно он запускает процесс входа в текстовом режиме getty для нескольких виртуальных консолей. X Window System можно настроить в /etc/inittabили с помощью X display manager . Ряд дистрибутивов Linux используют systemd вместо init , что также позволяет настраивать виртуальную консоль.

CLI-инструменты

Типичные системные программы Linux, используемые для доступа к виртуальным консолям, включают в себя:

Местное эхо

Эмуляторы терминалов могут реализовывать локальную функцию эха , которая может ошибочно называться « полудуплекс » или, что еще немного неверно, «эхоплекс» (что формально является механизмом обнаружения ошибок , а не опцией отображения ввода). [12] [13] [14] [15]

Режим построчного редактирования/локальное редактирование

Эмуляторы терминала могут реализовывать локальное редактирование, также известное как «режим построчного редактирования». Его также ошибочно называют « полудуплексным ». [ требуется цитата ] В этом режиме эмулятор терминала отправляет только полные строки ввода в хост-систему. Пользователь вводит и редактирует строку, но она сохраняется локально в эмуляторе терминала по мере редактирования. Она не передается, пока пользователь не просигнализирует о ее завершении, обычно с помощью клавиши ↵ Enterна клавиатуре или кнопки «отправить» какого-либо вида в пользовательском интерфейсе. В этот момент передается вся строка. Режим построчного редактирования подразумевает локальное эхо, поскольку в противном случае пользователь не сможет видеть строку по мере ее редактирования и построения. [12] [16] Однако режим построчного редактирования не зависит от режима эха и не требует локального эха. Например, при вводе пароля возможен построчный ввод с локальным редактированием, но локальное эхо отключено (иначе пароль будет отображаться). [17]

Сложности режима line-at-a-time проиллюстрированы на примере опции режима line-at-a-time в протоколе telnet. Для его корректной реализации реализация сетевого виртуального терминала, предоставляемая программой эмулятора терминала, должна быть способна распознавать и правильно обрабатывать события «прерывания» и «отмены», которые возникают в середине локального редактирования строки. [18]

Синхронные терминалы

В асинхронных терминалах данные могут передаваться в любом направлении в любое время. В синхронных терминалах протокол контролирует, кто и когда может отправлять данные. Терминалы на базе IBM 3270 , используемые с мэйнфреймами IBM, являются примером синхронных терминалов . Они работают по существу в режиме «экран за раз» (также известном как блочный режим ). Пользователи могут вносить многочисленные изменения на страницу, прежде чем отправлять обновленный экран на удаленную машину как единое действие.

Эмуляторы терминала, имитирующие протокол 3270, доступны для большинства операционных систем и могут использоваться как администраторами систем, таких как z9 , так и пользователями соответствующих приложений, таких как CICS .

Другие примеры синхронных терминалов включают IBM 5250 , ICL 7561, Honeywell Bull VIP7800 и Hewlett-Packard 700/92.

Виртуальные консоли

Виртуальные консоли , также называемые виртуальными терминалами, являются эмулированными текстовыми терминалами , использующими клавиатуру и монитор персонального компьютера или рабочей станции. Слово «текст» является ключевым, поскольку виртуальные консоли не являются терминалами GUI и не работают внутри графического интерфейса. Виртуальные консоли встречаются в большинстве Unix-подобных систем. Они в основном используются для доступа и взаимодействия с серверами без использования графической среды рабочего стола.

Смотрите также

Примечания

  1. ^ FU Berlin, 3. Архитектура мини-компьютера
  2. ^ "Что такое dumb terminal? определение и значение". BusinessDictionary.com . Архивировано из оригинала 13 августа 2020 г. . Получено 13 марта 2019 г. .
  3. ^ «Эмуляция терминала на персональных компьютерах».
  4. ^ "Телемат Вики".
  5. ^ «SSH-клиенты для Windows».
  6. ^ «Использование Linux в центрах обработки данных». [ мертвая ссылка ]
  7. ^ «Альтернативы Putty».
  8. ^ Томас Э. Дики. "XTerm - Часто задаваемые вопросы (FAQ)". Почему VT220?.
  9. ^ "Краткая история эмуляции терминала | Turbosoft". www.ttwin.com . Получено 2021-10-04 .
  10. ^ "Ubuntu Manpage: tty — общий терминальный интерфейс". manpages.ubuntu.com . Получено 2021-10-04 .
  11. ^ "Дампы экрана". Linux keyboard and console HOWTO . Linux Documentation Project . Получено 2008-07-31 . Текущее содержимое экрана /dev/ttyN можно получить с помощью устройства /dev/vcsN (где `vcs' означает `виртуальный экран консоли'). [...] Из программы обычно лучше использовать /dev/vcsaN (`виртуальный экран консоли с атрибутами') — он начинается с заголовка, в котором указано количество строк и столбцов, а также местоположение курсора. См. vcs(4).
  12. ^ ab Daintith 2004, стр. 171.
  13. Weik 2000, «эхо» стр. 478.
  14. ^ Вайк 2000, «echoplex» стр. 479.
  15. ^ Weik 2000, «режим эхоплекса» стр. 479.
  16. ^ Бангиа 2010, стр. 324.
  17. ^ Стивенс и Райт 1994, стр. 413.
  18. ^ Миллер 2009, стр. 590, 591.

Ссылки

Внешние ссылки