가상 터미널에 기본 터미널이 있나요?

가상 터미널에 기본 터미널이 있나요?

xterm터미널 에뮬레이터( 예를 들어) 를 열면 xterm마스터( /dev/ptmx)와 슬레이브( /dev/pts/#)가 있습니다.

그런데 가상 터미널을 열면(누르기 Ctrl+Alt+F#) 가상 터미널도 메인 장치에 연결되나요? 아니면 /dev/tty#마스터 없이 슬레이브( )에 직접 연결되는 건가요 ?

답변1

마스터가 없습니다(따라서 노예가 아닙니다).

이를 사용하면 xterm프로세스 xterm는 한쪽 끝에서 키와 픽셀 간의 변환을 수행하고 다른 쪽 끝에서는 직렬 포트 바이트 스트림을 에뮬레이트합니다. 커널은 xtermpty 마스터를 통해 콘텐츠를 앞뒤로 전달합니다.

커널을 사용할 때 tty1커널은 이 모든 작업을 자체적으로 수행합니다 . 의 코드는 drivers/tty/vt/keyboard.c키 누르기를 해석하고 drivers/tty/vt/vt.c출력을 해석합니다. VT100과 유사한 동작을 구현하는 모든 논리가 xterm여기에 복제됩니다.

이 구현은 커널에 있기 때문에 사용자 공간 프로세스를 통해 중계될 필요 없이 관련 하위 수준 드라이버(GPU, 키보드가 있는 USB 버스 등)와 직접 통신할 수 있습니다. 다른 사용자 공간 프로세스가 관련되지 않으면 tty의 "마스터 측"이 필요하지 않습니다.

답변2

이 시점에서는 의미론에 들어가기 때문에 "예, 마스터가 있습니다"와 "아니요, 마스터가 없습니다"가 모두 맞습니다.

예, 마스터가 있습니다: 콘솔 드라이버 자체입니다. 슬레이브 측에서 보고 전송하는 문자 코드는 실제로 키보드에서 일어나는 일과 거의 관련이 없습니다. 실제 하드웨어는 80년대 중반 하드웨어의 환상을 표현하기 위해 여러 계층의 리디렉션, 재해석 및 재렌더링을 거치고 있습니다.

아니요, 마스터는 없습니다. 마스터는 슬레이브 측이 보는 것을 프로그래밍 방식으로 제어할 수 있으며 실제로 커널의 관련 부분을 교체하지 않고는 이를 수행할 수 없습니다. loadkeys를 실행하여 키 입력이 해석되는 방식을 제어할 수 있지만 일반 프로그램은 데이터 스트림에 자신을 삽입할 수 없습니다.

답변3

용어에 유의하십시오. 여기서는 터미널을 "가상"이라고 부를 수 있는 두 가지 방법이 있습니다.

터미널 에뮬레이터는 가상 터미널을 생성하는데, 보통 "가상 터미널"이라고 부르지는 않지만의사 터미널. 터미널 에뮬레이터는 /dev/ptmx터미널의 터미널 인터페이스("마스터"라고 함)를 열고 가져옵니다. 터미널에서 실행되는 애플리케이션은 /dev/pts터미널의 애플리케이션 인터페이스("슬레이브"라고 함)를 사용합니다.

Linux의 소위 "가상 터미널"(vt)을 콘솔이라고도 합니다. 동일한 키보드와 화면을 공유하는 여러 가상 머신이 있기 때문에 가상입니다. 애플리케이션 측에는 하나의 장치만 있기 때문에 여기에는 마스터 장치와 슬레이브 장치의 개념이 없습니다. 터미널 측은 커널에 의해 내부적으로 처리됩니다(메인 측이 커널 내부에 숨겨져 있다고 말할 수 있습니다).

관련 정보