Псевдотермінал
В деяких операційних системах, в тому числі Unix, псевдотермінал (англ. Pseudo terminal), псевдо-tty, або PTY це пара псевдопристроїв, один з яких, другорядний, емулює справжній текстовий термінал, а другий, головний, надає засоби, за допомогою яких емулятор терміналу контролює процеси.
Псевдотермінал BSD
В системах BSD , файл другорядного пристрою, назва якого зазвичай виглядає як /dev/tty[p-za-e][0-9a-f]
, підтримує всі системні виклики що застосовуються до пристрою текстового терміналу. Таким чином він підтримує вхід у сесію. Файл головного пристрою, котрий взагалі має назву типу /dev/pty[p-za-e][0-9a-f]
, є кінцевою точкою для з’єднання з емулятором терміналу.
Зі схемою назв [p-za-e] можуть існувати максимум 256 окремих псевдотерміналів. Також, знаходження першого вільного PTY може призвести до стану гонитви, якщо не буде застосована блокуюча схема. Тому останні BSD-системи, такі як FreeBSD, використовують термінал Unix98.[1]
Псевдотермінал Unix98
Термінали BSD виявилися застарілими порівняно з терміналами Unix98. Система найменувань терміналів в Unix98 не обмежує їхню кількість та доступ до них не створює загрози стану гонитви.
/dev/ptmx
це ніби "мультиплікатор псевдотерміналів". Його відкриття повертає файловий дескриптор ноди головного псевдопристрою і викликає відповідну ноду другорядного псевдопристрою /dev/pts/N
, яка буде створена.[2]
Застосунки
Головна роль емуляції терміналу - це взаємодія з користувачем; це введення тексту до головного псевдопристрою (що підключений до другорядного псевдопристрою) та читання виводу тексту з головного псевдопристрою на екран для користувача. Процес емуляції терміналу мусить також обробляти команди керування терміналом, наприклад, зміну розміру екрану. Одні з найбільш популярних програм-емуляторів терміналу — це Xterm, GNOME Terminal, Konsole, Термінал XFCE та Термінал Mac OS X. Протоколи віддаленого входу типу ssh і telnet та їх програми-сервери мають ту ж саму роль, що й локальний емулятор терміналу, але ввід-вивід тексту до/від користувача передається віддалено.
Походження
Перші псевдотермінали були присутні ще в 1967 році в PDP-6 DEC. Монітор розподілу часу з’явився, як мінімум, у 1967 і використовувався для реалізації пакетної обробки.[3] Інші операційні системи DEC теж мали PTY, в тому числі RSTS/E для PDP-11.
Псевдотермінали Unix зародилися в 1983 році під час розробки 8-ї версії Unix і базувалися на аналогічних функціях в TENEX.[4] Вони були частиною релізу BSD 4.2. System V від AT&T включала підтримку псевдотерміналів на базі драйвера в моделі пристроїв STREAMS, а також мультиплікатор псевдотерміналів.
Посилання
- pty. мануал. FreeBSD.
- pts(4): pseudo-terminal master/slave - Linux man page
- Ritchie, D. M. A stream input-output system. AT&T Bell Laboratories Technical Journal 63 (8): 1897–1910.