Jump to content

разработчики

Упрощенная структура ядра Linux : терминалы и драйверы символьных устройств, также известные как «подсистема TTY».

devpts — это каталог виртуальной файловой системы, доступный в ядре Linux начиная с версии 2.1.93 (апрель 1998 г.). Обычно он монтируется на /dev/pts и содержит исключительно файлы устройств, которые представляют собой подчиненные устройства мультиплексирования, ведущего устройства расположенного по адресу /dev/ptmx который, в свою очередь, используется для реализации эмуляторов терминала (таких как X11 xterm ). [1] [2]

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

[ редактировать ]

Псевдотерминал («псевдо TTY» или « PTY ») — это пара псевдоустройств ведомое и ведущее устройство , которые обеспечивают особый вид канала связи. Подчиненное псевдоустройство имитирует физический текстовый терминал компьютера (например, DEC VT100 ) и может читать и писать текст, как если бы оно было таким физическим терминалом. Главное псевдоустройство предоставляет средства , с помощью которых программа, предоставляющая текстовый пользовательский интерфейс, взаимодействует со своим подчиненным устройством и управляет им.

Широко распространенными программами с текстовым пользовательским интерфейсом являются эмуляторы терминала (например, xterm , gnome-terminal или Konsole ) или программы, использующие SSH или telnet . Запись на ведущее устройство аналогична набору текста на терминале, поэтому ведущее псевдоустройство действует как человек, сидящий перед физическим компьютерным текстовым терминалом.

Пара псевдотерминалов аналогична двунаправленному каналу. Все, что записано на ведущем устройстве, отображается как входные данные на ведомом устройстве, а все, что записано на ведомом устройстве, отображается как входные данные на ведущем устройстве. [3] С точки зрения POSIX определенные терминальные устройства (файлы) могут работать в полнодуплексном режиме . [4] Как и каналы, псевдотерминалы имеют ограниченную пропускную способность. В Linux емкость псевдотерминала составляет около 4 КиБ в каждом направлении.

Типичная операционная система на базе ядра Linux предоставляет множество PTY для поддержки текстовых интерфейсов, предоставляемых эмуляторами терминала (таких как xterm или gnome-terminal), а также интерфейсов удаленного доступа, таких как SSH.

Создание Devpts было вызвано желанием отказаться от необходимости во вспомогательной программе setuid , например /usr/libexec/pt_chown. Это отличная реализация идеи псевдотерминала; предыдущая реализация обеспечивала фиксированное количество пар главный/подчиненный, которые имели постоянные узлы устройств, например пара главный-подчиненный. /dev/ptyp63 и /dev/ttyp63, ср. Интерфейс программирования Linux, глава 62 «Терминалы» и глава 64 «Псевдотерминалы».

История внедрения

[ редактировать ]

В феврале 1998 года в Linux 2.1.87 появилась поддержка /dev/ptmx ведущее устройство мультиплексирования. [5] Открытие этого устройства обеспечивает доступ к неиспользуемому в противном случае ведущему псевдотелетайпу и позволяет идентифицировать соответствующее ведомое устройство с помощью ioctl(). В апреле того же года в Linux 2.1.93 была добавлена ​​новая виртуальная файловая система под названием devpts, которая обычно монтируется по адресу /dev/pts. Всякий раз, когда создается новая пара главный/подчиненный, в этой виртуальной файловой системе создается узел устройства для подчиненного устройства.

Чтобы облегчить перенос эмуляции терминала в пользовательскую среду, сохранив при этом подсистему TTY (управление сеансом и дисциплину линии), был изобретен псевдотерминал. [6]

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

Альтернативой является использование необработанного режима, в котором символы пересылаются в приложение, как только они получены, что необходимо для более сложных редакторов, таких как (в то время) широко известный Emacs . И действительно, поскольку emacs должен был использовать этот сырой режим, подразумевающий переключение контекста при приеме каждого набранного символа, он постоянно менялся, когда у компьютеров не хватало памяти для хранения emacs и всех других программ в ядре.

С добавлением псевдотерминалов (PTY) код TTY также стал своего рода механизмом межпроцессного взаимодействия с сохранением всей семантики TTY. Код TTY также должен поддерживать сетевые протоколы, такие как PPP, без создания узких мест в производительности. [7]

См. также

[ редактировать ]
  1. ^ Нил Браун (01 июня 2016 г.). «Контейнеры, псевдо-TTY и обратная совместимость» . LWN.net .
  2. ^ «pts(4) — страница руководства Linux» . man7.org . Проверено 22 июля 2021 г.
  3. ^ «Определения» . pubs.opengroup.org . Проверено 22 июля 2021 г.
  4. ^ «Общий интерфейс терминала» . pubs.opengroup.org . Проверено 22 июля 2021 г.
  5. ^ «разница /drivers/char/pty.c» .
  6. ^ Линус Акессон. «TTY демистифицируется» .
  7. ^ Джонатан Корбет (29 июля 2009 г.). «Буря в тележке» . LWN.net .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7620bd5de6f284fae2c1bb84ca31e0bc__1669019580
URL1:https://arc.ask3.ru/arc/aa/76/bc/7620bd5de6f284fae2c1bb84ca31e0bc.html
Заголовок, (Title) документа по адресу, URL1:
devpts - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)