Search

TTY와 PTS

태그
개념
실습
생성 일시
2022/11/18 05:38

TTY

TTY는 “teletypewriter”의 약자이다. 과거 통신 수단의 발전으로 메시지를 입력, 인코딩, 전송, 수신, 디코딩 및 인쇄 할 수 있도록 설계된 전신 타자기(teletypewriter)가 통신의 주류로 사용 되었다가 이후 대체 되면서 유래되었다.
리눅스에서의 tty는 (원격) 사용자와 시스템 사이를 중계하는 역할을 하며, tty를 통해서 사용자는 시스템과 통신을 하게 된다. 사용자가 입력하는 키보드의 입력은 tty를 통해서 시스템에 전달되고 시스템에서 내보내는 출력 역시 tty을 통과해서 사용자에게 전달된다. 예전에는 UNIX 시스템에 터미널이라는 장치를 통해 접근했고 그 터미널의 종류가 모두 달랐기 때문에 그 터미널을 추상화 하기 위해서도 사용되었다. 리눅스의 /dev 디렉토리에서 볼수있는 /dev/tty*/dev/pts/* 파일들이 입출력에 관련된 파일들이며 외부 터미널 장치를 연결할때, 리눅스의 가상콘솔이나, telnet, ssh 같은 리모트 로그인 프로그램등에 의해 사용된다.
자신을 포함하여 로그인 한 모든 사용자에 대한 정보를 나열하는 who 명령어를 통해서도 tts 번호를 알 수 있는데, 아래의 출력을 통해 살펴보면 Alec과 Mary라는 사용자는 Linux 컴퓨터에 원격으로 연결되어 있고 PTS 1과 2에 연결되어 있다. 그에 비해 dave라는 사용자는 “: 0”으로 출력되어 있는데, 이는 컴퓨터에 물리적으로 연결된 화면과 키보드를 낸다. tty 명령어를 입력 했을 때 출력되는 /dev/pts/2 가 화면과 키보드는 하드웨어 장치이지만 원격으로 접속되어 pseudo-terminal master multiplexer에 연결되어 있음을 나타낸다.

PTY

TTY driver가 제공하는 기능들을 그대로 사용하면서 사용자 프로그램에서 터미널을 구동 시켜주는 것이 PTY(Pseudo TTY)이다. PTY 는 master/slave pair 로 이루어지는데 /dev/ptmx (pseudo-terminal master multiplexer) 파일을 open 하면 pseudo terminal master (PTM) 에 해당하는 file descriptor 가 반환되고 pseudo terminal slave (PTS) 에 해당하는 device 가 /dev/pts/ 디렉토리에 생성된다. ( 터미널에서 cat /dev/ptmx 명령을 실행해도 /dev/pts/ 에 생성되는 것을 볼 수 있다.) 일단 두 ptm 과 pts 가 open 되면 /dev/pts/[번호] 는 실제 터미널과 같은 인터페이스를 프로세스에 제공한다.