Что такое tty
Общие сведения
В далеком прошлом тикерный аппарат — специальный телеграфный аппарат для передачи котировок эволюционировал в телетайп — более быстрый прибор, основанный на таблице символов ASCII.
Когда устаревшую пакетную модель обработки заданий заменил интерфейс командной строки, в качестве устройств ввода и вывода стали использоваться телетайпы, так как они уже были доступны на рынке.
Так как различных моделей телетайпов было множество, потребовался некий уровень программной совместимости. Данная функция возлагалась на ядро операционной системы
Телетайп подключается к компьютеру через универсальный последовательный асинхронный порт. Операционная система имеет драйвер порта, который отвечает за физическую передачу байтов (контроль чётности, контроль потока и т. п.).
Операционная система предоставляет буфер для редактирования текста, а также некоторые простейшие команды редактирования — «удалить символ», «удалить слово», «удалить строку». Все эти функции реализованы в модуле дисциплины линии (line discipline). Упомянутый слой протокола также позволяет настраивать эхо (отображение набираемых символов на этом же самом терминале), автоматическую конвертацию признаков конца строки и возврата каретки, и т. п.
Дисциплину (то есть конкретный драйвер этого слоя) можно динамически менять. Например, вместо дисциплины терминала можно включить дисциплину передачи данных с пакетной коммутацией — ppp, IrDA, последовательную мышь и т. д.
Процессы, работающие в фоновом режиме, должны блокироваться, как только они захотят вывести какой-либо текст на экран. Аналогичным образом набираемый пользователем текст должен передаваться только активной в данный момент программе. Операционная система реализует все эти функции при помощи драйвера TTY.
Как уровень дисциплины (протокола), так и драйвер TTY являются пассивными. Иными словами, они не могут сами предпринимать каких-либо действий, а являются лишь набором процедур, которые могут быть вызваны другими процедурами.
Система из драйвера UART-порта, дисциплины (протокола) и драйвера TTY называется устройством TTY
Пользовательский процесс может изменять поведение любого TTY-устройства путём манипулирования соответствующим ему файлом в папке /dev . Для этого данный процесс должен обладать правами записи в этот файл. Когда пользователь входит в систему и подключается к определённому TTY, этот пользователь должен стать владельцем файла, соответствующего этому TTY
Именно это и делает программа login. (Сама программа login запускается от имени суперпользователя).
В случае обычного современного компьютера, Дисциплина и TTY-драйвер работают так же, как и раньше, но драйвера последовательного ассинхронного порта (UART) уже нет, так как нет телетайпа, который бы через него подключался, вместо него используется эмулятор видеотерминала (аналог телетайпа), который отображает содержимое этого терминала на экран.
Эмулятор в отличие от консоли, уже работает в пространстве пользователя, а не ядра, что обеспечивает куда большую гибкость
Видеотерминал - физическое устройство (термина́л) используемое для взаимодействия пользователя с компьютерной системой, локальной или удалённой. Содержит в себе клавиатуру, дисплей, печатающее устройство
Эмулятор терминала - приложение терминала (term или tty) или программа, которая эмулирует терминал компьютера
Для того, чтобы разрешить работу эмулятора терминала в пространстве пользователя и при этом не отказываться от всей вышеописанной подсистемы TTY, был изобретён так называемый псевдотерминал, или PTY. Псевдотерминал может быть запущен внутри другого псевдотерминала; так поступают, например, Screen или клиент Ssh.
Графический эмулятор терминала (например, xterm), первым делом создаёт новый псевдотерминал и дочерний процесс
Дочерний процесс делает ведомую часть (slave) псевдотерминала своим управляющим терминалом и запускает интерпретатор команд (в большинстве это bash)
Ведущая часть (master) псевдотерминала используется эмулятором терминала для отображения данных, получаемых от ведомой части.
Все процессы, запущенные из интерпретатора, включая и сам интерпретатор, осуществляют ввод (stdin) и вывод (stdout и stderr) через ведомую часть.
В Linux для создания псевдотерминала доступно два API UNIX 98 и BSD
В первом варианте необходимо открыть файл /dev/ptmx, при этом возвращённый файловый дескриптор будет привязан к ведущей части, а в каталоге /dev/pts/ создастся новый файл ведомой части, именем которого будет положительное целое число. Каждое открытие данного файла создаёт новый псевдотерминал.
В случае с BSD в каталоге /dev/ существует множество файлов вида ttyXY (ведомая часть) и ptyXY (ведущая часть).
Источник: https://ru.wikipedia.org/wiki/TTY-абстракция
Команда tty выводит имя терминала, если стандартный ввод не является терминалом, выводит сообщение «not a tty».
Псевдотерминал - виртуальное устройство, которое эмулируют терминал, могут использоваться в графических интерфейсах и удалённых сессиях.
Подсистема TTY, или TTY-абстракция - система предназначеная для использования одного терминала несколькими процессами, некоторых возможностей ввода (например, отправка сигналов специальными клавишами, удаление введённых символов
Изменение цвета символов и фона, изменение начертания символов, перемещение курсора зависят от программы эмуляции или драйвера терминала
tty (от англ. teletypewriter — телетайп)
Источники
Связанные темы
Структура каталогов linux(Debian)
Сброс пароля root в grub (Linux)
Сценарии инициализации в Linux Ubuntu
Внутренние и внешние команды linux






