Какие части домашней папки следует включить в резервную копию?

Чтобы понять, как работают псевдотерминалы, вы должны рассматривать их как абстракцию реальных физических терминалов. В настоящее время наиболее часто встречающимися физическими терминалами являются виртуальные консоли Linux, но в прошлом настоящие физические терминалы были чрезвычайно распространены и довольно часто были единственной частью компьютерной системы, которую пользователь видел в своей повседневной работе.

Реальный физический терминал имеет две совершенно разные стороны (или «аспекты», если хотите):

  • «Внешняя» сторона, на которой сидит пользователь. На этой стороне есть клавиатура, на которой пользователь вводит символы, и экран, на котором пользователь видит вывод компьютера. В псевдотерминальной абстракции это главная сторона.

  • «Внутренняя» сторона, представленная символьным устройством в операционной системе. В псевдотерминальной абстракции это «ведомая» сторона.

Между «внешней» стороной физического терминала и «внутренним» символьным устройством, используемым программами для связи с пользователем, существует целый ряд процессов обработки; оборудование терминала само обновляет экран, операционная система может буферизовать нажатия клавиш пользователя и выполнять редактирование строк и т. д.

A Digital Equipment Corporation VT220 terminal

Терминал Digital Equipment Corporation VT220. Вы смотрите на его «лицевую» сторону. В случае псевдотерминала это представлено "главной" стороной. Картинка из Викимедиа.

  1. Где находится ресурс PTM, который обрабатывает файловый дескриптор?

    Они находятся в памяти ядра. Когда процесс открывается /dev/ptmx, ядро ​​создает новый псевдотерминал, состоящий из ведущей и ведомой сторон; главная сторона принадлежит процессу, который ее создал, поэтому запись в /devне требуется;подчиненная сторона может быть открыта любым процессом, который хочет взаимодействовать с терминалом и поэтому нуждается в записи в /dev.

  2. Почему мы называем мастер PTM «устройством»? Так как для него нет записи в /dev.

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

  3. Может ли модифицированная программа, такая как SSHD, обмениваться данными с PTS напрямую без PTM в середине?

    Sshd не обменивается данными с ведомой стороной псевдотерминала. Sshd содержит главную сторону псевдотерминала; подчиненная сторона используется процессом (, например, оболочкой ), порожденной Sshd.

    Sshd работает следующим образом:

    • Когда по сети приходит запрос на вход и пользователь аутентифицируется, Sshd создает новый псевдотерминал; он содержит главную сторону, а затем порождает процесс, как того требует удаленный пользователь (, обычно оболочку ), предоставляя ему подчиненную сторону псевдотерминала в качестве стандартного ввода, стандартного вывода и стандартной ошибки.

    • Символы, полученные из сети, записываются Sshd на главную сторону псевдотерминала; это эмулирует пользователя, печатающего на клавиатуре. Ядро обрабатывает (или нет )этот поток символов. Процесс (, например, оболочка ), имеющая подчиненную сторону псевдотерминала, получает их, как если бы он общался с реальным терминалом.

    • Между ведущей и ведомой сторонами находится ядро ​​операционной системы, которое может выполнять некоторую обработку или нет, в зависимости от состояния ведомой стороны. См. линейную дисциплину ,и справочные страницыstty(1 )иioctl(2 )(, особенно применительно к терминалам или подчиненной стороне псевдотерминалов ).

 _______             ______       ______       ______       _____       ______
(       ) bytes in  |      |     |      |     |      |     |     |     | Bash |
(Network)---------->| Sshd |---->|Master|---->|  OS  |---->|Slave|---->|  Vi  |
(       )<----------|      |<----| PTY  |<----|kernel|<----| PTY |<----| Less |
(_______) bytes out |______|     |______|     |______|     |_____|     |______|

 _______           _____      ______      ______      _____      _____      _______
<       > Events  |     |    |      |    |      |    |     |    |     |    (       )
<  GUI  >-------->|Xterm|--->|Master|--->|  OS  |--->|Slave|--->| Ssh |--->(Network)
<       ><--------|     |<---| PTY  |<---|kernel|<---| PTY |<---|     |<---(       )
<_______> Drawing |_____|    |______|    |______|    |_____|    |_____|    (_______)

2
14.11.2020, 20:10
0 ответов

Теги

Похожие вопросы