Bosh sahifa Wiki TTY

TTY

TTY — operatsion tizimdagi terminal qurilmasi yoki terminal interfeysini ifodalovchi tushuncha. Atama tarixiy teletypewriter qurilmalaridan kelib chiqqan.

Zamonaviy tizimda TTY fizik serial terminal, virtual console yoki terminal driver orqali foydalanuvchi bilan process o‘rtasidagi matnli aloqani boshqaradi.

TTY faqat ekran oynasi emas. U input processing, echo, signal va job control mexanizmlariga ega kernel interfeysidir.

Tarixiy teletype

Dastlab kompyuterga elektromexanik teletype qurilma ulangan.

Foydalanuvchi klaviaturada yozgan, kompyuter javobi qog‘ozga bosilgan.

Unix terminal modeli shu qurilmalarning xatti-harakatidan rivojlangan.

Fizik terminal

Serial portga ulangan terminal fizik TTY bo‘lishi mumkin.

Qurilma fayllari:

/dev/ttyS0
/dev/ttyUSB0

kabi ko‘rinadi.

Baud rate, parity, data bit va stop bit serial aloqa parametrlari hisoblanadi.

Virtual console

Linux lokal monitor va klaviatura uchun bir nechta virtual console beradi.

Misollar:

/dev/tty1
/dev/tty2

Foydalanuvchi tugma kombinatsiyasi orqali ular orasida o‘tishi mumkin.

Har virtual console’da alohida login session bo‘lishi mumkin.

Controlling terminal

Sessiondagi processlar bitta controlling terminalga ega bo‘lishi mumkin.

Terminal:

  • foreground process group;
  • input;
  • output;
  • signal;
  • hangup

ni boshqaradi.

Daemon controlling terminaldan ajraladi.

/dev/tty

/dev/tty processning o‘z controlling terminaliga murojaat qiladi.

Stdin yoki stdout file’ga redirect qilingan bo‘lsa ham, process controlling terminalga /dev/tty orqali yozishi mumkin.

Controlling terminal bo‘lmasa, ochish xato beradi.

Line discipline

TTY driver raw bayt oqimi bilan application orasida line discipline qo‘llaydi.

U quyidagilarni boshqaradi:

  • line editing;
  • echo;
  • special character;
  • signal;
  • newline conversion;
  • input buffering.

Canonical va raw rejimlar shu qatlamda belgilanadi.

Canonical mode

Canonical rejimda input satr bo‘yicha qayta ishlanadi.

Foydalanuvchi Enter bosmaguncha application to‘liq satrni olmaydi.

TTY driver:

  • Backspace;
  • line kill;
  • EOF;
  • echo

ni boshqarishi mumkin.

Shell command line uchun mos.

Raw mode

Raw rejimda belgilar applicationga deyarli darhol uzatiladi.

Full-screen terminal dasturlar:

  • text editor;
  • pager;
  • terminal game;
  • interactive monitor

raw yoki non-canonical rejimdan foydalanadi.

Dastur exitda terminal settinglarini tiklashi kerak.

Echo

Echo yoqilganida kiritilgan belgi terminalda ko‘rsatiladi.

Parol kiritishda echo o‘chiriladi.

Dastur crash qilib echo’ni o‘chiq qoldirsa, shellga yozilgan matn ko‘rinmaydi. stty sane kabi buyruq settingni tiklaydi.

Special character

TTY ayrim tugmalarni maxsus talqin qiladi.

Misollar:

  • Ctrl+C — interrupt signal;
  • Ctrl+Z — stop signal;
  • Ctrl+D — EOF semantikasi;
  • Ctrl+\ — quit;
  • Backspace — erase.

Aniq mapping stty bilan ko‘riladi.

Foreground process group

Faqat foreground process group odatda terminaldan input o‘qiydi.

Background process input o‘qishga urinsa signal olishi mumkin.

Shell job control:

  • foreground;
  • background;
  • stop;
  • continue

ni process group orqali boshqaradi.

Job control

Shell buyruqlari:

  • & — backgroundda ishga tushirish;
  • jobs — joblar;
  • fg — foregroundga qaytarish;
  • bg — backgroundda davom ettirish;
  • Ctrl+Z — to‘xtatish.

Bu TTY va process group mexanizmlariga tayanadi.

Hangup

Terminal yoki SSH sessiya yopilganda kernel processlarga SIGHUP yuborishi mumkin.

Process:

  • tugashi;
  • signalni e’tiborsiz qoldirishi;
  • konfiguratsiyani reload qilishi;
  • nohup orqali davom etishi

mumkin.

Terminal multiplexer sessiyani terminal yopilishidan ajratadi.

TTY nomini ko‘rish

tty buyrug‘i stdin ulangan terminal qurilmasini ko‘rsatadi.

Misol:

/dev/pts/3

Input terminal bo‘lmasa:

not a tty

natijasi chiqishi mumkin.

isatty

Dastur file descriptor terminalga ulanganini isatty() orqali tekshiradi.

Shunga qarab:

  • rangli output;
  • progress bar;
  • line buffering;
  • interactive prompt

yoqiladi yoki o‘chiriladi.

Pipeline’ga yuborilganda dastur boshqa format chiqarishi mumkin.

TTY va PTY

PTY — pseudo-terminal juftligi.

Terminal emulator master tomonni, shell slave tomonni ishlatadi.

SSH server remote session uchun PTY ajratishi mumkin.

TTY umumiy terminal interfeysi, PTY esa uni dasturiy taqlid qiladigan mexanizm.

Serial console

Server monitorisiz boot log va shellni serial TTYga chiqarishi mumkin.

Kernel parametri:

console=ttyS0,115200

kabi bo‘ladi.

Bootloader, kernel va login service bir xil serial parametrda sozlanadi.

Xavfsizlik

TTY orqali:

kiritilishi mumkin.

Terminal logging va session recording maxfiy ma’lumot siyosatiga mos bo‘lishi kerak.

Begona process boshqa user TTYsiga yozishi permission bilan cheklanadi.

Diagnostika

TTY muammosida:

tekshiriladi.

Terminal buzilgan ko‘rinsa, settinglarni qayta tiklash va process qoldirgan mode’ni aniqlash kerak.

Terminal input va encoding

TTY bayt oqimini tashiydi, belgilarni qanday ko‘rsatish terminal emulator va locale’ga bog‘liq. UTF‑8 belgisi bir necha baytdan iborat bo‘lishi mumkin.

Backspace va cursor harakati bayt soniga emas, ekrandagi belgi kengligiga bog‘liq. Combining character va keng CJK belgilar full-screen dasturlarda alohida hisoblanadi.

Terminal xavfsizligi

Untrusted fayl yoki log ichidagi escape sequence terminal title, clipboard yoki ko‘rinishni o‘zgartirishi mumkin. Terminal emulator xavfli control sequence’larni cheklaydi.

Binary faylni bevosita terminalga chiqarish ekran holatini buzishi mumkin. reset yoki stty sane bilan terminal qayta tiklanadi.

Bog‘liq tushunchalar

Terminal, Teletypewriter, PTY, Serial port, Controlling terminal, Line discipline, Job control, Process group, Shell