분리하다

devpts
Linux 커널의 간단한 구조:터미널 및 캐릭터 디바이스 드라이버, 일명 ".k.a. "TTY 서브시스템"을 참조해 주세요.

devpts는 버전 2.1.93(1998년 4월) 이후 Linux 커널에서 사용할 수 있는 가상 파일 시스템 디렉토리입니다.일반적으로는 다음 위치에 설치됩니다./dev/pts또한 다음 위치에 있는 멀티플렉싱 마스터의 슬레이브를 나타내는 디바이스 파일만 포함됩니다./dev/ptmx다음으로 터미널 에뮬레이터(X11 xterm [1][2]등)를 실장하는 데 사용됩니다.

단말 에뮬레이션

의사 터미널('의사 TTY' 또는 'PTY')은 특수한 종류의 통신 채널을 제공하는 의사 디바이스(슬레이브마스터)의 쌍입니다.슬레이브 의사 디바이스는 물리적인 컴퓨터 텍스트 단말(예를 들어 DEC VT100)을 에뮬레이트하여 물리적인 단말인 것처럼 텍스트를 읽고 쓸 수 있다.마스터 의사 디바이스는 텍스트 기반 사용자 인터페이스를 제공하는 프로그램이 슬레이브와 함께 동작하고 제어하는 수단을 제공합니다.

텍스트 기반의 사용자 인터페이스를 갖춘 널리 보급된 프로그램은 터미널 에뮬레이터(xterm, gnome-terminal, Konsole 등) 또는 SSH 또는 텔넷을 사용하는 프로그램입니다.마스터에 쓰는 것은 단말기에 입력하는 것과 같기 때문에 마스터 의사 디바이스는 물리 컴퓨터 텍스트 단말기 앞에 앉아 있는 사람과 같은 동작을 합니다.

의사 피부의 쌍은 쌍방향 파이프와 비슷합니다.마스터에 기록된 내용은 슬레이브에 입력으로 표시되고 슬레이브에 기록된 내용은 [3]마스터에 입력으로 표시됩니다.POSIX 정의 단말 디바이스(파일)는 전이중 [4]모드로 동작할 수 있습니다.파이프와 마찬가지로 의사 피질도 용량이 제한되어 있습니다.Linux 에서는 의사 피질 용량은 각 방향으로 약 4KiB입니다.

일반적인 Linux 커널 기반 운영 체제에서는 터미널 에뮬레이터(xterm 또는 gnome-terminal 등) 및 SSH 등의 원격 액세스 인터페이스에 의해 제공되는 텍스트 기반 인터페이스를 지원하기 위해 많은 PTY를 제공합니다.

devts의 작성은 setuid 도우미 프로그램의 필요성을 포기하려는 바람에서 비롯되었다./usr/libexec/pt_chown이것은 의사 서멀 아이디어의 고유한 구현입니다.이전 구현에서는 마스터/슬레이브 쌍과 같은 영구 디바이스 노드를 가진 고정 수의 마스터/슬레이브 쌍이 제공되었습니다./dev/ptyp63그리고./dev/ttyp63, cf. Linux Programming Interface 62장 "Terminals" 및 64장 "Pseudoterminals"

구현 이력

1998년 2월, Linux 2.1.87에 의해,/dev/ptmx멀티플렉싱 마스터 [5]디바이스이 디바이스를 열면 사용하지 않는 의사 TTY 마스터에 액세스할 수 있으며, 이를 통해 일치하는 슬레이브를 식별할 수 있습니다.ioctl()같은 해 4월 Linux 2.1.93은 일반적으로 다음 위치에 마운트되는 devpts라는 새로운 가상 파일 시스템을 추가했습니다./dev/pts새로운 마스터/슬레이브 쌍이 생성될 때마다 해당 가상 파일 시스템에 슬레이브용 디바이스 노드가 생성됩니다.

TTY 서브시스템(세션 관리 및 회선 규율)을 그대로 유지하면서 터미널 에뮬레이션을 사용자 랜드로 쉽게 이동할 수 있도록 의사 터미널이 [6]개발되었습니다.

라인 규율이 커널 내부에 있는 이유는 각 문자를 수신할 때 컨텍스트스위치를 피하기 위해서입니다(코어 메모리가 작을 때는 스왑 아웃과 스왑 인을 의미합니다).따라서 라인 원칙은 커널 버퍼에 입력 라인을 유지하며, 특정 바이트를 테스트하고 백스페이스 "편집" (및 몇 가지 간단한 편집 기능)을 구현하기 위해 카운터를 감소시키는 것이 충분히 간단하기 때문에, 거기서 실행됩니다.

또 다른 방법은 raw 모드를 사용하는 것입니다.이 모드에서는 문자가 수신되는 즉시 응용 프로그램으로 전송됩니다.이 모드는 (당시 유명한) Emacs와 같이 보다 고도의 편집자에게 필요합니다.실제로 emacs는 입력된 각 문자를 수신할 때 컨텍스트 전환을 의미하는 이 raw 모드를 사용해야 했기 때문에 emacs와 다른 모든 프로그램을 코어에 저장하기에 충분한 메모리가 없을 때 emacs는 끊임없이 교환되었습니다.

의사단말기(PTY)가 추가됨에 따라 TTY 코드는 모든 TTY 시멘틱스가 유지되는 일종의 프로세스 간 통신 메커니즘이 되었습니다.또한 TTY 코드는 성능 [7]병목 현상을 일으키지 않고 PPP와 같은 네트워킹 프로토콜을 지원해야 합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Neil Brown (2016-06-01). "Containers, pseudo TTYs, and backward compatibility". LWN.net.
  2. ^ "pts(4) - Linux manual page". man7.org. Retrieved 2021-07-22.
  3. ^ "Definitions". pubs.opengroup.org. Retrieved 2021-07-22.
  4. ^ "General Terminal Interface". pubs.opengroup.org. Retrieved 2021-07-22.
  5. ^ "diff of /drivers/char/pty.c".
  6. ^ Linus Akesson. "The TTY demystified".
  7. ^ Jonathan Corbet (2009-07-29). "A tempest in a tty pot". LWN.net.