Fedora에는 왜 두 개의 `ptmx` 파일이 있습니까?

Fedora에는 왜 두 개의 `ptmx` 파일이 있습니까?

/dev/ptmx해당 파일이 의사 터미널용 마스터 파일을 생성하는 데 사용된다는 것을 알고 있습니다 . 그러나 나는 Fedora에 또 다른 ptmx파일( ) 이 있다는 것을 발견했습니다 /dev/pts/ptmx.

여기에 이미지 설명을 입력하세요

이 두 번째 파일의 목적은 무엇입니까?

답변1

컴퓨팅 세계의 많은 것들과 마찬가지로 그 이유는 역사와 이전 버전과의 호환성 때문입니다.

udevLinux에 존재하기 전 (현재 가상 파일 시스템 솔루션 ) 인 2.4.* 커널 에는 루트 파일 시스템의 실제 디렉터리에 장치를 두는 "전통적인 Unix 방식"과 첫 번째 가상 /dev솔루션인 두 가지 경쟁 솔루션이 있었습니다. devfs./dev

문제는 의 작성자가 devfs다양한 장치에 대해 완전히 새로운 명명 체계를 구축했고 사람들이 그것에 대해 상당히 강하게 느꼈다는 것입니다. 어떤 사람들은 새로운 체계로 마이그레이션하고 이전 체계를 폐지하기를 원했고 다른 사람들은 마이그레이션의 필요성을 느끼지 못했습니다. 일부 배포판에서는 기존 정적 장치를 사용했고 다른 배포판에서는 devfs.

그 시점에는 설치 시 생성된 의사 TTY 장치 수가 고정되어 있었습니다. (그런데, CONFIG_LEGACY_PTYS커널을 컴파일하는 동안 옵션이 설정되어 있다면 이것은 여전히 ​​가능합니다.)

그런 다음 Unix98 스타일의 동적으로 할당된 PTY 장치가 도입되었습니다. 이를 정적 /dev디렉토리에 구현하려면 에 대한 가상 파일 시스템이 필요했으며 /dev/pts이것이 파일 시스템으로 알려졌습니다 devpts. 또한 이것을 별도의 파일 시스템으로 사용하면 devfs코드 중복 없이 동적 위에도 적용하는 것이 가능해졌을 것입니다 .

동적으로 할당된 PTY 장치는 빠르게 선호되는 선택이 되었습니다. 그 이유는 /dev수백 개의 정적으로 할당된 PTY 장치(대부분은 시스템 수명 동안 사용되지 않을 수도 있음)로 어지러워지는 것은 분명히 말도 안 되는 일이었기 때문입니다.

그런 다음 Linux 2.6과 udev함께 출시되었습니다. 정적 /devdevfs솔루션 모두 빠르게 폐기되었습니다. 이전 버전과의 호환성을 위해 파일 시스템은 여전히 ​​존재했지만 이제는 완전히 RAM 기반이기 때문에 devpts동일한 기능을 기본 파일 시스템으로 다시 이동할 수 있습니다 ./dev

예를 들어, 오늘날 데비안 9는 레거시 호환성을 위해 여전히 devpts파일 시스템을 마운트하지만 기본적으로 권한을 할당하지 않습니다. 이는 파일 시스템이 아마도 더 이상 사용되지 않으며 향후 어느 시점에 제거될 것이라는 신호입니다 ./dev/pts/dev/pts/ptmxdevpts

# ls -l /dev/ptmx /dev/pts/ptmx
crw-rw-rw- 1 root tty  5, 2 Nov 22 11:47 /dev/ptmx
c--------- 1 root root 5, 2 Nov 12 14:59 /dev/pts/ptmx

일부 프로그램에 여전히 가 필요한 경우 /dev/pts/ptmx기본 권한을 조정하여 허용할 수 있지만 이를 통해 사람들은 더 이상 사용되지 않는 이전 장치 이름을 여전히 사용하고 있는 프로그램을 알 수 있습니다.

답변2

프로세스가 /dev/ptmx를 열 때(사용posix_openpt()), PTM(의사 터미널 마스터)에 대한 파일 설명자를 가져오고 PTS(의사 터미널 슬레이브) 장치가 /dev/pts 디렉터리에 생성됩니다.

마스터가 열리면 슬레이브가 잠깁니다. 슬레이브의 이름을 얻고 권한 등을 설정한 다음 슬레이브를 잠금 해제할 수 있습니다. 이를 통해 슬레이브에 액세스하기 전에 슬레이브를 제어할 수 있습니다.

슬레이브는 실제 텍스트 터미널 장치를 에뮬레이션하고, 마스터는 터미널 에뮬레이터 프로세스가 슬레이브를 제어하는 ​​수단을 제공합니다.

슬레이브는 물리적 터미널의 가상 구현이고 마스터는 해당 터미널에 사람이 입력하는 가상 구현입니다. 컴퓨터는 슬레이브에 전송된 문자를 인간이 실제 터미널에 입력한 것처럼 동일하게 처리합니다(마스터가 생성될 때 권한 설정으로 제한됨).

관련 정보