1800년대 텔레프린터 개발됨 ➡
텔레프린터 = 텔레타이프라이터 = 텔레타이프 = TTY 라는 이름이 붙여짐 ➡
1963년 ASCII 채택 ➡ 1980년대 까지 메세지 전송에 있어 주요 수단으로 사용됨 ➡
컴퓨터가 개발되고 발전하면서 컴퓨터와 상호작용 하는 기본 수단이 됨 ➡
[소프트웨어 에뮬레이트 텔레타이프]
*에뮬레이트 : 다른 프로그램이나 장치를 모방하는 컴퓨터 프로그램 또는 전자기기
Unix 계열 OS에서 데스크톱 환경과 터미널 창, 📌xterm, 📌Konsole 과 같은 응용 프로그램.
-> 이것을 pseudo-teletypes(=PTS) 라고 부름
(※PTS = pseudo-terminal slave 로 자주 쓰는 것 같다)
아무튼 tty라는 단어의 기원은 영화에서만 보던 타자기였고, 이게
소프트웨어적으로 구현되어 Unix계열 운영체제에 들어간 것이 tty
man tty
를 해보면 다음과 같이 설명해준다.
tty : print the file name of the terminal connected to standard input(tty : 표준 입력에 연결된 터미널의 파일명을 출력)
/dev/pts
를 보면 다음과 같다.
Linux에서
tty
명령은 PTS가 사용하는 장치 파일(=터미널)의 이름을 출력한다.
(= pseudo-teletype Slave가 Master와의 인터페이스에 사용하는 장치 파일의 이름을 출력한다)
(터미널 창 = TTY의 소프트웨어 에뮬레이션)
이런 설명들로는 충분히 이해하기 힘들다.
일단 위의 내용들 관련해서 더 깊게 찾아본 것들은 다음과 같다.
UART Driver
물리적으로 bytes를 전송하는 역할. Parity check, Flow control 수행.
Line discipline
(discipline= 입력된 데이터가 처리되는 방식)
low level 장치 드라이버 위에 Line discipline 이라는 레이어를 하나 두면
같은 장치를 여러가지 용도로 사용할 수 있다고 한다.
ex) backspace, erase word, clear line, reprint 같은 Line editing 기능을 제공한다고..
PPP(Point-to-Point), SLIP <- 이것들은 나중에 알아봐야 겠다..TTY driver
-> Session management (=job control) 기능을 제공.
Ctrl + z (작업 중단)
Ctrl + c (작업 종료)
사용자 입력은 foreground job에만 전달되게,
background job이 입력받기를 하면 SIGTTIN (=Signal TTY Input) 신호 보내기 등
위 기능들은 모두 TTY Driver에서 제공한다네요.
한 모니터에서 여러 개의 가상 화면을 사용할 수 있는 기능이다.
리눅스는 기본적으로 6개의 가상 콘솔을 제공 (환경에 따라 조금씩 다를 수 있음) 하는데,
Ctrl + Alt + F1 ~ F6
키 조합으로 각각 이동할 수 있다.
실제 물리적인 장치가 연결된 것이 아닌 커널에서 터미널을 에뮬레이트한 것이다.
dev/tty[번호]
파일이 사용된다고 한다.
*1~6번은 text 모드, 7번은 X-window 제공
📌X-window
Master/Slave
Pair 구조/dev/pts
에 있던 ptmx는 pseudo-terminal master multiplexer 를 의미/dev/pts/
디렉토리에 생성됨.ex) xterm
- xterm이 master(PTY Master)에 연결되고 bash같은 app process가 slave(PTY Slave)에 연결되는 구조
- xterm에서 사용자가 입력하면 master -> 커널(Line discipline) -> slave 를 거쳐 bash process에 전달되고,
- 실행 결과는 다시 slave -> 커널(Line discipline) -> master 를 거쳐 xterm에 전달 -> 화면에 출력
- 이 과정도 일종의 📌IPC임 (중간에 커널 부분이 있는것이 다름)
https://ko.linux-console.net/?p=8198#gsc.tab=0
https://mug896.github.io/bash-shell/tty.html
https://cosmosproject2015.tistory.com/143
https://jhnyang.tistory.com/48
https://velog.io/@preeded/TTY%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-%EA%B7%B8%EB%A6%AC%EA%B3%A0-ptsdevpts
https://asset.library.wisc.edu/1711.dl/CAWJ5VKXFKIS78B/M/h1380-66dba.jpg