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.
- 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.
- 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.
- 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:
- controlling terminal;
- canonical yoki raw mode;
- echo;
- foreground group;
- signal mapping;
- baud rate;
- permission;
- redirect;
- PTY mavjudligi
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