역사적인 TTY를 이해하려고 노력 중

역사적인 TTY를 이해하려고 노력 중

저는 Linux의 터미널 하위 시스템, 특히 tty 드라이버와 라인 규율을 이해하려고 노력하고 있습니다. 분명히 이 하위 시스템의 아키텍처는 텔레타이프 기계(tty)가 컴퓨터에 연결되어 컴퓨터에 데이터를 입력하고 프로세스로부터 응답을 받던 시절부터 유래되었습니다.

나는 실제 역사적 tty를 연구한 적이 없으며 그러한 tty가 어떻게 작동하는지 이해하면 tty 드라이버의 내부 작동을 더 잘 이해할 수 있을 것이라고 믿습니다.

특히 관심이 있어요에코그리고라인 편집.

따라서 tty의 운영자가 텍스트를 입력할 때 텍스트가 tty에 에코됩니까(종이에 한 줄을 인쇄하여)? 개별 키/문자를 입력할 때 에코할지, 아니면 개행/엔터 키를 눌렀을 때만 에코할지 여부입니다.

그가 입력한 키(문자)는 즉시 컴퓨터로 전송됩니까(라인 규칙?) 아니면 tty의 로컬 버퍼에 저장되어 새 라인 키를 누를 때 전송됩니다.

운영자가 잘못된 텍스트를 어떻게 편집할 수 있습니까(백스페이스, ctrl-h)? 백스페이스 정보가 그에 따라 행이 편집될 컴퓨터로 전송됩니까, 아니면 이것이 tty의 기능입니까(컴퓨터는 이를 인식하지 못함)?

마지막으로, 운영자가 텍스트를 입력하면 어떻게 될까요?하지만tty가 컴퓨터로부터 데이터를 수신하고 있습니까?

답변1

원래 tty는 다음과 같았습니다.ASR33텔레타이프라이터 모델 33. 그들은 "멍청한" 키를 누르면 모뎀이나 컴퓨터에 문자를 보냅니다. 그러면 컴퓨터는 문자를 다시 보내고 인쇄할 수 있습니다.

이는 또한 전송이 얼마나 잘 작동하는지에 대한 피드백을 제공합니다. 또한 1개만 입력하면 컴퓨터가 2개 이상의 문자를 다시 보낼 수 있습니다. 예를 들어, Enter를 입력하면 캐리지 리턴이 다시 전송되어 프린트 헤드가 왼쪽 여백으로 이동하고 줄 바꿈이 용지를 다음 줄로 이동합니다. 그렇기 때문에 오늘도 이 옵션이 표시됩니다 stty onlcr.출력 개행을 캐리지 리턴 및 개행으로 변환.

이것이 캐리지 리턴(프린트 헤드를 뒤로 이동)을 인쇄한 후 지연 옵션이 있는 이유입니다.

편집기를 사용하여 백스페이스 키, X 및 앞으로 스페이스를 사용하여 백스페이스 키를 에코하여 마지막 문자를 삭제할 수 있습니다. 중복된 경우 편집기는 더 많은 내용을 삭제하기 위해 뒤로 이동한 다음 새 문자를 입력할 때 프린트 헤드를 다시 끝에 배치할 수 있습니다.

stty cooked편집기에 있지 않은 경우 줄 규칙은 백스페이스 키를 사용하여 줄 끝에서 문자를 제거한 후 지금까지 입력된 현재 줄(따라서 패턴)을 유지합니다. stty rprnt이 기능을 사용하면 입력한 백스페이스 키가 적용된 후까지 전체 줄을 다시 인쇄할 문자를 입력할 수 있습니다 .

답변2

tty 장치의 기능은 연결될 수도 있고 연결되지 않을 수도 있는 일부 도트 매트릭스 라인 프린터의 동작에 항상 의존하는 것은 아닙니다. DEC와 같은 씬 클라이언트도 tty를 사용한다는 점을 기억하세요.VT220그것은 다음과 같이 사용될 수 있었다픽쳐 튜브다음과 같은 병렬 포트를 통해 외부 모뎀에 연결합니다.US Robotics 9600bps 익스프레스예를 들어, 모델.

매우 적은 대역폭(당시에는 9600bps가 상대적으로 "빠른" 것으로 간주되었지만)을 처리하고 POTS 모뎀을 통해 파일을 보내는 경우 대기하여 파일을 두 번 업로드하고 싶지는 않습니다. 모든 것을 당신에게 다시 전달하는 원격 시스템. 마찬가지로, 원격 시스템의 내용이 무엇인지 이미 알고 있을 때 다시 쓰기를 기다리면서 원격 시스템의 CPU 주기를 낭비하고 싶지는 않습니다.

이는 인터넷에서 텔넷 연결을 처리할 때에도 마찬가지입니다. 원격 로그인아니요원시 TCP 연결! 실제 인터넷 사양입니다(RFC854) 및 IAC("명령으로 해석") 프로토콜 데이터를 사용하여 tty 동작을 제어하는 ​​데 도움을 줍니다. tty 장치(예: setserial, getty 등)에서 작동하는 프로그램은 헤더 파일이 전처리기 상수를 정의하는 ioctl시스템 호출("I/O 제어")을 활용합니다.termios.h

$ whatis ioctl tty_ioctl
ioctl (2)            - control device
tty_ioctl (4)        - ioctls for terminals and serial lines

마찬가지로 POTS 모뎀도 다음을 사용합니다.Hayes "AT" 명령 세트로컬 에코를 제어하는 ​​데 사용됩니다. 다음과 같은 터미널 에뮬레이터 프로그램미니컴퓨터다른 사람들은 자신의 관점에서 터미널 활동을 제어하는 ​​구성 설정을 가지고 있습니다. 따라서 사용되는 다른 모든 기술과 조화롭게 작동하도록 tty 설정을 조정해야 합니다. 같은 이유로 대역폭과 인쇄 용지를 절약하기 위해 라인 편집이 만들어졌습니다. 원하는 내용인지 확실하지 않은 경우 처리를 위해 다른 시스템으로 라인을 보내거나 종이에 잉크를 인쇄하기 위해 프린터로 라인을 보낼 이유가 무엇입니까?

관련 정보