LINUX.ORG.RU

терминалы. общая картина в моём воспалённом воображении


0

1

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

  • 1. терминалы бывают трёх видов
  • 2. физические: представляют из себя что-то типа пишущей машинки. последние 30 лет не используются
  • 3. виртуальные: программа-консоль, привязанная к порту(/dev/ttysN). ограничено 4 портами
  • 4. псевдо: программа-консоль, не привязанная к порту. неограниченное количество
  • 5. при загрузке системы используется виртуальный терминал с номером 0. все команды поступают от ядра. пользователь не может вмешиваться
  • 6. после загрузки системы управление передаётся виртуальному терминалу с номером 1. чаще всего он ожидает аутентификации
  • 7. после аутентификации пользователь может по желанию переключаться между виртуальнымии псевдо терминалами(кроме виртуального терминала с номером 0)
  • 8. после запуска программы из терминала, открывается дочерний терминал(не интерактивный)
  • 9. после удаления этого дочернего терминала(например программа отработала), терминал-родитель снова получает управление(то есть пользователь снова может вводить команды)


Последнее исправление: prozaik (всего исправлений: 2)

3. виртуальные: программа-консоль, привязанная к порту(/dev/ttysN). ограничено 4 портами

Не верно. Терминалов может быть сколько угодно. Точно не могу сказать - то ли задаётся в конфиге ядра, то ли в конфиге загрузки. Другое дело, что если их будет больше 12, то не хватит функциональных клавиш, чтобы переключаться между ними.

И да... иксы тоже запускаются на одном из терминалов (обычно на 6 или 7, чтобы оставить под текстовые консоли остальные). Да и вообще терминалы умеют выводить не только текст, но и графику (чем может воспользоваться mplayer, например в специальном режиме).

KivApple ★★★★★
()

3. ttySN - последовательные COM порты, ttyN - виртуальные консоли, которых часто 6
5. Если имеется в виду tty0, то это текущая виртуальная консоль, команды не поступают от ядра, а выполняются им.
7. Переключаться между ttyN можно и без входа.
8, 9. Спутаны терминал и командный интерпретатор оболочки.

Ake
()

после запуска программы из терминала, открывается дочерний терминал

Не надо путать терминал и запущенную в нем програму оболочку (shell)

виртуальные: программа-консоль, привязанная к порту(/dev/ttysN). ограничено 4 портами
псевдо: программа-консоль, не привязанная к порту. неограниченное количество

Откуда всплыло число 4? Например, chvt 70 переключит на 70. Вообще говоря, на виртуальном терминале (ядра) можно запустить и терминал из пространства пользователя (kmscon, например), не обязательно X сервер.

liaonau
()
Ответ на: комментарий от KivApple

это ты графикой цветной текст от libcaca назвал? если нет, то это framebuffer и он не имееет к tty вообще никакого отношения, кроме того что в ядре есть fbcon — консоль tty на framebuffer

anonymous
()

грубо говоря, подсистема tty вообще не нужен для работы системы и программ (кроме которые конкретно с ним работают), это просто наследие и слой совместимости.

tty можно целиком отключить в конфиге ядра

anonymous
()

5. при загрузке системы используется виртуальный терминал с номером 0. все команды поступают от ядра. пользователь не может вмешиваться

дамп мозга какой-то. куда и какие команды поступают от ядра?

anonymous
()

6. после загрузки системы управление передаётся виртуальному терминалу с номером 1. чаще всего он ожидает аутентификации

после загрузки управление передаётся процессу /sbin/init c pid=1, никакие терминалы тут не причём

anonymous
()

Терминалы 2) и 3) неотличимы для системы, ввод/вывод данных осуществляется через файл, то есть ядру все равно что такое /dev/tty* - реальный терминал, последовательный порт или же getty (виртуальная консоль).

А вообще, почти все неверно. Не путай терминалы и процессы командной оболочки:

при загрузке системы используется виртуальный терминал с номером 0

Нет, ядро пишет напрямую в буфер дисплея пока init (процесс с PID==1) не запущен. Дальше все зависит от init'а: например, он может писать во все виртуальные консоли одновременно, переводить их в режим фреймбуфера и т.д. То есть, виртуального терминала с номером 0 не существует, так как ввести в нем ничего нельзя.

управление передаётся виртуальному терминалу с номером 1

Нет, ядро просто выполняет процесс с PID=1 (/sbin/init). Этот процесс запускает getty (приглашения ввести логин/пароль) на виртуальных консолях, которых обычно восемь (tty[1-8]). Их может быть сколько угодно, опять же зависит от инита.

mtk
()

8. после запуска программы из терминала, открывается дочерний терминал(не интерактивный) 9. после удаления этого дочернего терминала(например программа отработала), терминал-родитель снова получает управление(то есть пользователь снова может вводить команды)

если программа явно не открывает терминал, его у неё нет

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.