См. также раздел ``Некоторые подробности о том, как работают терминалы"
Каждый терминал соединен с последовательным портом главной ЭВМ (часто только PC). Порты имеют названия: ttyS0, ttyS1, ttyS2 и т.д.
Они представляются в виде специальных файлов, находящихся в каталоге устройств /dev. /dev/ttyS0 соответствует COM1 в DOS или Windows. ttyS1 - COM2, и т.д. См. ``Терминальные устройства" для подробностей.
Когда главный компьютер запускается - он запускает программу getty (см. Serial-HOWTO 4.1 и 7.2) на каждом последовательном порту, к которому подключен терминал (как определено в файле /etc/inittab). Программа getty выполняет программу "login", чтобы регистрировать людей в системе. На экране появляется подсказка "login: ". Люди на терминалах входят в систему (при предоставлении ими паролей) и затем получают доступ к компьютеру. Когда приходит время выключения терминала, обычно выходят из системы и отключают питание. См. ``Ограничение входа в систему" об информации по ограничению входа в систему (включая разрешение корневому пользователю регистрироваться с терминала).
Если кто-то печатает на терминале, то буквы одновременно появляются на экране. Наивный человек мог бы думать, что то, что он печатает, послано непосредственно с клавиатуры на экран, с копированием на компьютер (называется полудуплекс). Обычно то, что печатается на клавиатуре, посылается непосредственно главной ЭВМ (называется дуплекс), которая в свою очередь отсылает обратно на терминал каждый полученный символ. В некоторых случаях (типа паролей или краткого редактора команды) печатаемые символы не отображаются обратно на экран.
Изображение на электронно-лучевой трубке угасает почти немедленно, если его не перерисовывать часто на экране лучом электронов на экране трубки. Так как текст, посланный терминалу должен остаться видимым, изображение на экране должно быть сохранено в микросхемах памяти терминала, и электронный луч должен неоднократно пробегать по экрану (скажем 60 раз в секунду) чтобы поддержать изображение. См. подробности ``Память терминала".
Терминал управляется компьютером. Компьютер посылает терминалу текст не только для отображения на экране, но также и посылает команды терминалу, которые должны выполняться. Они называются ``управляющими кодамми" (байтами) и ``escape-последовательностями". Например, управляющий код CR (возврат каретки) перемещает курсор на левый край экрана. Некоторая escape-последовательность (несколько байтов, где первый байт - управляющий код "Escape") может перемещать курсор в место на экране, определенное параметрами, помещенными внутри escape-последовательности.
``Первые терминалы" имели только несколько таких команд, но современные терминалы, имеют их сотни. Вид дисплея может быть изменен для некоторых параметров: типа яркости, тусклости, подчеркивания, мигания и негативного изображения. Динамик в терминале может "пищать", когда нажата какая-то клавиша или подавать звуковой сигнал, если произошла ошибка. Функциональные клавиши могут программироваться для специальных значений. Можно подключать различные шрифты. Дисплей может быть пролистан вверх или вниз. Определенные части экрана могут быть стерты. Могут использоваться различные типы управления потоком данных, чтобы остановить поток данных, когда байты посланы терминалу быстрее, чем терминал упевает их обрабатывать. Имеется еще много чего, о чем вы можете прочесть в руководстве по терминалу.
В то время как терминалы, сделанные для США, используют для алфавита одинаковую для всех кодировку ASCII (кроме IBM-терминалов, которые использовали EBCDIC), они, к сожалению, не используют одинаковые escape-последовательности. Это случается даже после приняти различных стандартов ANSI, так как эти стандарты не продвигались как следует. Кроме того, старые терминалы часто испытывают недостаток возможностей более новых терминалов.
Это может вызвать проблемы. Например, компьютер может послать терминалу escape-последовательность, заставляющую его разбить экран на два окна определенного размера, не понимая, что терминал неспособен это выполнить.
Для преодоление этих проблем была принята база данных, называемая "termcap" (теперь "terminfo"). Эта база данных постоянно находится в некоторых файлах на компьютере и имеет разделы (иногда отдельные файлы) для каждой модели терминала. Для каждой модели (типа VT100) приведен список возможностей, включая доступные для использования escape-последовательности и т.д. См. раздел ``termcap и terminfo (подробно)" для подробностей. Прикладные программы могут использовать эту базу данных, вызывая некоторые программы C-библиотеки. Один большой набор таких программ (более чем 200) называется "ncurses" и перечислен на man-странице для ncurses.
Переменная среды TERM указывает Linux, какой тип терминала вы используете. Прикладные программы используют ее, чтобы определить возможности терминала в базе данных terminfo, так что переменная TERM должна быть установлена правильно. Но имеется более правильный интерфейс, чем знание компьютера о возможностях терминала.
Для байтов, идущих с компьютера на терминал, терминал должен быть установлен так, чтобы получать байты на той же самой скорости (бит в секунду), с какой они идут с терминала. Если терминал установлен на скорость приема 19,200 бод, а компьютер посылает символы на скорости 9600 бод, то на экране будет виден мусор (или возможно ничего).
Одна из возможностей выбора скорости для терминала (также как и много других возможностей) - из меню "Установка" на терминале. Большинство терминалов имеет большое количество опций в свих меню "Установка".
Компьютерное программное обеспечение последовательного порта также имеет опции, и эти опции должны быть установлены совместимым способом.
Большинство терминалов сегодня могут работать как несколько типов терминалов (эмуляция).
Номер модели терминала терминалов прежде производимых DEC (Digital Equipment Corporation) начинаются с VT (например, VT100). Многие другие терминалы, не VT100, могут быть настроены на эмуляцию VT100. Wyse - главный изготовитель терминалов, и большинство их терминалов может эмулировать различные терминалы DEC, такие как VT100 и VT220. Таким образом, если вы хотите, скажем, использовать терминал VT320, вы можете или использовать реальный VT320 в "настоящей" индивидуальности, или возможно использовать какой-то другой терминал, способный эмулировать VT320. "Настоящие" обычно имеют большее количество возможностей, так что, при прочих равных условиях, обычно лучше использовать "настоящие".
Наиболее общий тип эмуляции - это использовать PC как будто он - терминал. Это осуществляют программы, загруженные в память PC. В Linux (если вы не находитесь в X-Window) монитор PC (называемый консолью) эмулирует терминал. Даже некоторые окна в X-Window эмулируют терминалам.
На PC монитор известен как консоль. Он эмулирует терминал типа "Linux". Регистрируются на нем как на виртуальном терминале. См. ``Консоль: /dev/tty?". Он получает сообщения от ядра о запуске и выключении системы. Можно сообщения, которые обычно идут на консоль, перенаправить на терминал, исправляя и перекомпилируя Linux. (См., ``Делаем консоль терминалом").