stringtranslate.com

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

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

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

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

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

Фон

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

Символьно-ориентированные терминалы

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

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

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

Эмуляторы: от аппаратного обеспечения к программному обеспечению

Поскольку цены на память и вычисления упали, локальная вычислительная мощность увеличилась, что сделало сами терминалы более мощными. Первоначально в этом процессе эмуляция функций терминала представляла собой процесс, который разыгрывался между производителями терминалов, когда производители одного типа терминала эмулировали функции другого производителя. Например, терминал Wyse-60 предлагал в общей сложности 15 так называемых «личностей», среди которых были такие конкуренты, как Televideo -925, DEC VT100 и IBM 3101 . [3]

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

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

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

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

Многие эмуляторы терминала были разработаны для таких терминалов, как 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-серии T27/TD830/ET1100, ADDS ViewPoint, консоль Sun , QNX , AT386, SCO-ANSI, SNI 97801, Televideo и Wyse 50/60. Кроме того, были разработаны программы для эмуляции других эмуляторов терминала, таких как xterm и различных консольных терминалов (например, для Linux ). Наконец, некоторые эмуляторы просто ссылаются на стандарт, например ANSI . Такие программы доступны на многих платформах: от DOS и Unix до Windows и macOS , а также встроенных операционных систем, используемых в мобильных телефонах и промышленном оборудовании.

Детали реализации

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 может быть настроена /etc/inittabс помощью диспетчера отображения X. В ряде дистрибутивов Linux вместо init используется systemd , что также позволяет настраивать виртуальную консоль.

Инструменты интерфейса командной строки

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

Локальное эхо

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

Построчный режим/Локальное редактирование

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

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

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

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

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

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

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

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

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

Примечания

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

Рекомендации

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