it-swarm-ko.tech

'터미널', '쉘', 'tty'및 '콘솔'의 정확한 차이점은 무엇입니까?

느슨하게 사용될 때 이러한 용어는 거의 같은 것을 의미한다고 생각합니다.

  • 단말기
  • 껍질
  • tty
  • 콘솔

이 각 용어는 정확히 무엇을 의미합니까?

1278
Lazer

terminal 또는 console은 사용자가 호스트와 상호 작용할 수있는 하드웨어입니다. 기본적으로 텍스트 화면과 연결된 키보드.
현재 거의 모든 터미널과 콘솔이 "가상"콘솔을 나타냅니다.

터미널을 나타내는 파일은 전통적으로 tty 파일이라고합니다. UNIX 시스템의 "/ dev"디렉토리를 보면 가상 콘솔 (예 : Linux의 tty1), 가상 터미널 (예 : pts/0)에 연결된 많은 tty 파일이 있습니다. 또는 물리적으로 연결된 하드웨어 (예 : ttyS0는 호스트의 첫 번째 직렬 포트에 연결된 실제 직렬 터미널입니다).

console은 호스트에 물리적으로 연결된 (또는 일부) 하드웨어 여야합니다. 시스템에서 특별한 역할을합니다. 유지 보수를 위해 시스템에 액세스하는 주요 지점이며 일부 특수한 작업은 콘솔에서만 수행 할 수 있습니다 (예 : single user mode). terminal는 대개 원격 하드웨어 일 수 있습니다.

마지막으로 Shellcontrol tty를 통해 사용자와 상호 작용하고 다른 프로그램을 시작하는 방법을 사용자에게 제공하는 특수 프로그램입니다 ( 예 : bash, csh, tcsh).

터미널 에뮬레이터는 물리적 터미널 (예 : xterm, gnome-terminal, minicom)을 에뮬레이트하는 프로그램입니다.

따라서 Linux 시스템 (X11 아래)에서 "텍스트 창"을 볼 때 다음을 찾고 있습니다 : 터미널 에뮬레이터 , 가상 터미널 , tty 파일로 식별되며 내부에서 .

199
andcoz

짧은 설명 :

콘솔은 터미널입니다. 시스템에는 하나의 콘솔과 여러 개의 터미널이 있습니다. 콘솔은 일반적으로 예를 들어 여전히 부팅중인 컴퓨터를 관리하기위한 기본 인터페이스입니다.

터미널은 명령 행 프로그램에 대한 입력 및 출력을 수신 및 송신 할 수있는 세션입니다. 콘솔은 특별한 경우입니다.

TTY는 본질적으로 의사 장치입니다. 커널 리소스라고하며 프로세스에서 특정 터미널에 액세스하는 데 사용됩니다. TTY는 직렬 포트와 같은 하드웨어에 연결되거나 가상 일 수 있습니다 (예 : 사용자가 네트워크를 통해 로그인 할 때 생성됨)

Shell은 프로그램을 제어하고 실행하는 데 사용되는 프로그램입니다. 종종 터미널을 통해 대화식으로 사용됩니다. Bash가 오늘날 가장 일반적으로 사용되는 Shell 인 여러 Shell 프로그램이 있습니다. 특별한 순서가 아닌 다른 쉘에는 Bourne Shell, C-Shell, Dash, Tsch, Ksh 및 점점 인기있는 zsh가 포함됩니다. 더 많은 것이 있습니다.

GUI가있는 경우 터미널 프로그램을 사용하여 터미널 크기 조정이 가능한 멋진 테두리를 그리거나 스크롤 막대를 추가하고 텍스트 등을 포맷 할 수 있습니다. 이들은 종종 터미널 에뮬레이터라고하며 때로는 TAB 개념을 통해 여러 세션을 처리 할 수 ​​있습니다. 터미널 에뮬레이터는 종종 대화식으로 명령 줄에서 작업 할 수 있도록 셸을 시작합니다.

51
Johan

A TTY (즉 [~ [~ # ~] t [~ # ~] ele TY pewriter)는 청각 장애가 있거나 언어 장애가있는 사람들이 전화를 사용하여 문자 메시지를 입력 할 수 있도록하는 특수 장치입니다. 대화를하려면 대화의 양쪽 끝에 TTY가 필요합니다.
또는
TTY terminal 문자 메시지를 입력하는 데 사용됩니다.


Shell : 시드의 외부 보호 덮개 부분, 즉 커널.
또는
시스템의 중앙 또는 필수 부분에 대한 프레임 워크 또는 외부 구조물.
enter image description here


Console 키보드를 의미하며 컴퓨터에 물리적으로 부착 된 것을 모니터합니다.

36
Premraj

이미 두 가지 훌륭한 답변이 있지만 Ī̲는 “가상 터미널”에 대한 정보를 추가하려고합니다. 일반적으로, 이는 단말기의 외관/기능을 제공하는 것을 의미한다. 이자형. 넓은 의미에서 터미널 에뮬레이터 . 그러나 리눅스 초기 (1994-95)는 일부 개발자들에 의해 “가상 콘솔”(여러 관련없는 사용자 인터페이스) 와 동의어로 사용되었습니다. 이 사용법은 문서에서 지속됩니다. 두 개의 다른 용어는 tty1, tty2… 오늘날 (≈ 1996 년부터) "가상 터미널"은 pty 기반 터미널 에뮬레이터를 나타낼 수도 있습니다.

리눅스의 vt (텍스트 모드 시스템 콘솔의 드라이버)는 커널의 첫 번째 조각이었습니다. 처음에는 메인 프레임에 연결하는 데 사용되었으며 이러한 의미에서 "가상 터미널"이므로 이름입니다. 가상 콘솔을 제어하는 ​​코드 vt.c에 있음 . 리눅스 커널 엔지니어들은 tty1, tty2…를 나타 내기 위해 단어“콘솔”을 일관되게 사용하고 그들에“vc_”접두사를 사용했습니다. 예를 들어 vc_allocate 함수가 있습니다. 반면에 kbdconsole-tools와 같은 사용자 공간 도구 개발자는 "가상 콘솔"(VC)과 "가상 터미널"(VT)을 서로 바꿔서 사용했습니다. Ī̲ Andries E. Brouwer 에게 연락하여 초기 개발자 (1994–95)가 사용한 용어를 명확하게 해달라고 요청했습니다. Andries는 친절하게 답변을 제공했습니다. 그는 VT와 VC는 동의어이며 "보이지 않는"약어입니다.-> 일반적으로 가상 콘솔은 가상 터미널이지만 대화는 사실이 아닙니다. 가상 콘솔이 아닌 것은 pseudoterminals (Andries가 말한 것처럼 VT가 아닙니다.) 가상 콘솔과 달리 커널이 콘솔 응용 프로그램을위한 터미널 기능을 제공하는 가상 터미널은- PTY "장치"를 사용하여 콘솔 응용 프로그램과 사용자 공간에서 실행되는 터미널 제작 프로그램 간의 통신을 정렬합니다 . 예를 들어 X 기반 터미널 에뮬레이터와 sshd는 각 로그인 세션에 의사를 할당합니다. 의사는“콘솔”이라고 부르지 않을 수 있습니다 – 실수입니다.

30
Incnis Mrsi
  • 터미널 = 출력을위한 디스플레이와 쉘 세션에 입력하기위한 키보드를 제공하는 인터페이스.

  • Shell = 문자열로 입력 된 명령을 실행하는 인터프리터

  • 콘솔 : 실제로 사용하는 두 가지 유형의 콘솔

    • 물리적 콘솔 = 시스템과 상호 작용하는 데 사용되는 하드웨어 디스플레이 및 키보드

    • 가상 콘솔 = 각각 독립적 인 로그인 세션을 지원할 수있는 여러 논리 콘솔 중 하나입니다.

  • tty (텔레 타입 즉 터미널). = 터미널은 기본적으로 입력 및 출력 메시지에 텍스트를 사용하는 사용자 인터페이스 장치입니다.

16
Rakib

역사 속으로 뛰어 들어야합니다.

종이와 키보드가있는 타자기와 같은 장치가있었습니다. 텔레타이프 ( "원격"은 "원격"을 의미하기 때문에 "원격"을 의미 함) 또는 짧게는 ttys 라고 불렀습니다. 70 년대에는 유리 ttys 라고하는 CRT 모니터가있는 장치에 의해 폐기되었습니다.

모든 컴퓨터는 상태 및 오류를보고하고 명령을 수락 할 수있는 방법이 필요합니다. 거의 항상 컴퓨터에 직접 연결된 console 을 통해 수행됩니다. 따라서 console 에는 두 가지 의미가 있습니다. 상태를보고하는 데 사용되는 것과 직접 연결된 것입니다.

UNIX는 대화식 시스템입니다. 여러 사용자가이 시스템에 연결하여 응용 프로그램을 시작할 수 있습니다. 첫 번째 컴퓨터는 텔레타이프 ( tty )를 사용했습니다. 각 사용자는 시리얼 라인 연결로 컴퓨터에 텔레타이프를 연결했습니다. 이러한 텔레타이프를 터미널 이라고합니다. 유닉스는 또한 "터미널 뒤에 앉아있는 사용자"를 처리 할 수있는 특별한 서브 시스템을 가지고 있는데, 이는 첫 터미널이 텔레타이프 였기 때문에 tty 라고도한다. 각 프로세스는 유닉스에서 tty에 연결될 수 있습니다. 그것은 사용자가 터미널 근처에 앉아 있다는 것을 의미합니다. 자세한 내용은 http://www.linusakesson.net/programming/tty/ 를 참조하십시오.

커널에게 응용 프로그램을 실행하도록 지시하는 방법이 필요합니다. Shell (sh, bash, csh, ksh 등)이 사용됩니다. Shell tty 에서 실행되며 사용자의 명령을 수락하고 커널의 실행을 요청합니다 일부 앱.

그러나 터미널이 항상 물리적으로 기계에 연결되는 것은 아닙니다. 사용자로부터 키 입력을 받아들이고 어딘가에 키 터미널을 전송하는 터미널을 "모방"하는 일부 응용 프로그램이있을 수 있습니다 (xterm 및 ssh가 좋은 예입니다). 커널에는 pseudo terminal 이라는 API가 있습니다. 따라서 tty 는 실제 터미널 대신 일부 응용 프로그램에 실제로 연결되었을 수 있습니다. Xterm은 X11을 사용하여 텍스트를 표시하고 ssh는 네트워크 연결을 사용합니다.

IBM PC에는 키보드 및 비디오 카드가 있습니다 (때로는 console 이라고도 함). 리눅스는 다른 일을 할 수 있습니다 :

  • "오류 및 상태를보고하는 엔진"으로 사용하십시오 : Linux 콘솔. console =/dev/ttyS0을 커널에 전달하면 COM1에 연결된 것을 콘솔로 사용하고 그렇지 않으면 PC 콘솔을 사용합니다.
  • 이를 사용하여 소위 가상 터미널 (vty) 터미널을 에뮬레이션하십시오.

또한 콘솔에서 터미널 에뮬레이션을 중지하고 일부 앱에 제공 할 수 있습니다. 앱이 비디오 모드를 전환하여 독점적으로 사용할 수 있습니다 (X11 또는 svgalib가이를 수행 할 수 있음).

여기 현대적인 의미가 있습니다.

  • 터미널 : 실제 사용자가 뒤에 앉아있는 것. 물리적 터미널 (희귀) 또는 의사 터미널 (xterm, ssh) 또는 가상 터미널 (Linux의 경우 vty)
  • 셸 : 사용자가 시스템과 상호 작용하는 데 도움이되는 응용 프로그램 (bash, tcsh 등).
  • tty : 터미널을 지원하기위한 터미널 또는 커널 서브 시스템.
  • 콘솔 : 상태 및 오류가보고 된 것 (/dev/console) 또는 물리적 키보드 및 비디오 디스플레이가 컴퓨터에 연결되어 있습니다.
12
user996142

여기에 짧은 대답이 있습니다-

Kernel -실제 하드웨어와 직접 통신하는 최신 운영 체제의 가장 안쪽 부분입니다.

Shell -실제 커널 주위를 래퍼합니다. 명령을 실행할 때마다 실제로 쉘과 통신하여 적절한 커널 명령을 호출합니다. 이 외에도 셸은 명령, 파일 이름 짧은 손, 파이프 명령 등을 갖는 동안 적절한 프로그램을 찾는 것과 같은 다른 작업을 수행 할 수 있습니다.

터미널 -초기 컴퓨팅 시대에는 컴퓨터 (메인 프레임)가 거대했습니다. 따라서 단일 처리 장치를 가지고 여러 곳에서 쉽게 연결할 수있었습니다. 터미널은 키보드와 출력 장치가 메인 프레임에 연결된 실제 하드웨어입니다.

Console -OS 관리 목적으로 메인 프레임에 직접 연결된 특수 유형의 터미널.

tty -메인 프레임과 데이터를주고받는 데 사용되는 TeleTypewriter. 비디오 터미널을 사용하기 전에 사용되었습니다. 그러나 일반적으로 여전히 tty로 명명되었습니다. 심지어 coommand stty

자세한 답변은 다음과 같습니다. 터미널, 콘솔, 셸, 커널, 명령-컴퓨터의 다른 부분

9

받아 들여진 대답과 TTY demystified 기사 외에도이 두 기사를 읽는 것이 정말 좋습니다.

This 하나는 NetBSD를 기반으로합니다.

유닉스 시대에 컴퓨터 시스템은 메인 프레임, 메모리, 대용량 저장 장치 및 컴퓨팅 장치를 가지고 있으며 사용자 또는 운영자가 시작한 프로세스를 실행하는 큰 깜박이는 조명 상자로 구성되었습니다. 하드웨어가 매우 비싸기 때문에 시스템은 진정한 다중 사용자 시스템으로 사용되었으며 많은 사람들이 동시에 시스템과 상호 작용합니다. 오늘날의 유닉스 워크 스테이션과 달리 일반적으로 없었던 것은 고정 모니터와 키보드였습니다. 대신 기계에 명령을 내리고 출력을 검색하는 것은 텔레 타이 퍼를 먼저 사용하고 나중에 CRT (cathode ray tube) 터미널을 사용하여 직렬 회선을 통해 수행되었습니다. Teletypers-Unix의 "ttys"는 직렬 회선을 통해 눌려진 키를 호스트에 보내는 전자식 타자기이며 회신은 직렬 프린터를 통해 문자로 teletyper char로 다시 전송됩니다. 타자기와 마찬가지로 종이에 답장을 씁니다.

This 하나는 Linux를 기반으로합니다.

터미널은 일반 파일, 파이프 및 소켓으로 달성 할 수있는 것 이상의 향상된 입력/출력 기능을 제공하는 장치입니다. 이 기능은 사람이 컴퓨터와 쉽게 상호 작용할 수 있도록 설계되었으며 서로 대화하려는 프로그램에는 쓸모가 없습니다.

7
Nishant

이것에 균열을 보자 ... 나는 유닉스와 리눅스를 거의 동의어로 사용할 것이다. 내가 리눅스의 존재 이전의 역사적인 것을 언급한다면, 나는 보통 "Unix"라고 쓸 것이고, 최근의 것, 또는 리눅스의 유닉스 특유의 것에 대해 이야기한다면, 나는 보통 "Linux를 쓸 것이다. ".

껍질

목록에서 다른 것들과 겹치지 않는 개별 개념 인 유일한 것은 '쉘'입니다. 쉘은 사용자와 의사 소통하고 운영 체제 운영을 수행하기위한 프로그램입니다.

가장 일반적인 셸은 사용자에게 일종의 프롬프트를 보내고 텍스트 명령을 입력 할 때까지 기다린 다음 해당 명령을 수행하는 '명령 줄'이라는 기술을 사용합니다. 그러나 메뉴 기반 쉘과 심지어 Windows 파일 탐색기와 같은 그래픽 쉘도 있습니다.하지만 자존심있는 유닉스 사람은 그러한 것을 '쉘'이라고 부를 수는 없습니다.

유닉스에서 누군가가 '쉘'이라고 부른다면, 방금 설명한 것처럼 일종의 명령 행 인터페이스를 의미합니다. 그리고 유닉스 세계에서 내가 더 설명하는 tty 모델을 사용하여 사용자와 통신하지 않으면 '쉘'이라고 말하는 것이 매우 이상합니다.

TTY

이것은 몇 가지 다른 종류의 것들을 나타낼 수 있기 때문에 혼란스러운 것입니다.

리눅스에는 'tty'라는 장치가 있습니다. 이 장치는 사용자이거나 다른 방법으로 사용자로부터 입력을받는 것과 양방향 통신에 사용될 것으로 예상되는 추상 장치입니다. 때로는 해당 추상 장치가 실제 장치와 직접 일치 할 수 있습니다. 때로는 누군가에게 대화가 나타나고 사용자가 입력 할 수있는 창이있는 프로그램 일 수 있습니다.

그러나이 추상 장치가 존재하고 이것이 'tty'라고 불리는 이유는 'tty'가 'teletype'의 줄임말인데, 이는 키보드와 결합 된 종이에 인쇄 된 프린터가있는 실제 물리적 장치이기 때문입니다. 추상적 'tty'장치가 사용하는 프로그램에 제시하는 모델은 기본적으로 상대방에 텔레타이프가 있다는 것입니다. 문자를 보내면 해당 문자가 텔레타이프에 나타납니다. 문자를 읽을 때 해당 문자는 키보드에 입력 된 키를 나타냅니다.

오래된 종이 프린터 기반 tty는 비디오 tty로 빠르게 대체되었습니다. 물론, 롤 용지는 없습니다. 그리고 실제로 화면의 모든 문자를 덮어 쓸 수 있습니다. 그러나 프로그램에 일종의 추상적 인 '스크린'인터페이스를 제공하는 대신 프로그램은 다양한 작업을 수행하는 이스케이프 시퀀스라는 특수 문자 스트림을 대신 전송해야합니다. 일반적으로 화면 주위를 이동할 수있는 '커서'라는 추상적 인 요소가 있으며, 전송 된 문자는 커서에있는 모든 문자를 대체하고 커서는 한 문자 이상 이동합니다. 이스케이프 시퀀스로 인쇄하려는 문자의 색상을 변경할 수도 있습니다.

이 모델을 따르지 않는 'glass ttys'가 있으며 결과적으로 Unix 세계에서는 제대로 처리되지 않습니다. IBM 3270 비디오 터미널 제품군은이 범주에 속합니다.

리눅스/유닉스 사람들이 일반적으로 '쉘 윈도우'라고 부르는 것은 그래픽 사용자 인터페이스를 사용하여 유리 tty를 에뮬레이션하는 것입니다. 내부적으로 셸 창 내에서 실행되는 프로그램은 가상 tty 장치와 통신하는 경우가 있지만 가상 tty 장치는 의사 tty 또는 유사 터미널 (일명 pty)이라고도합니다.

단말기

터미널은 컴퓨터와 사람이 인터페이스해야하는 장소입니다. 프로그램이 기능을 사용하여이를 에뮬레이트 할 수 있더라도 터미널은 완전히 그래픽이어서 tty 모델을 따르지 않을 수 있습니다. 모든 실제 물리적 tty (유리 또는 기타)는 터미널입니다.

콘솔

콘솔은 일반적으로 운영 체제가 실행되는 하드웨어에 직접 안전한 방식으로 연결되는 특수한 종류의 터미널입니다.

Linux에서 콘솔은 작은 방식으로 가상화되므로 특별한 키 입력을 사용하여 가상 콘솔간에 전환 할 수 있습니다. 그러나이 가상화는 커널의 소프트웨어에 의해 실제 하드웨어로 수행됩니다.

USB 포트와 같은 직렬 포트를 통해 컴퓨터에 연결된 콘솔 인 '직렬 콘솔'을 통해 Linux를 사용하는 방법이 있습니다. 상당히 엄격한 방식으로 오래된 텔레타이프 모델을 따릅니다.

다시 말하지만이 콘솔은 누군가가 연결할 수있는 일종의 네트워크를 통하지 않고 컴퓨터에 직접 물리적으로 연결되어 있습니다.

5
Omnifarious