web-dev-qa-db-ja.com

端末と端末エミュレータ

ここで私のターミナルの理解を明確にしようとしています。

端末は実際にはデバイス(キーボード+モニター)です。 CLIモードでは、キーボードからの入力は直接シェルに送られ、モニターにも表示されます。

一方、GUIモードを使用する場合は、ターミナルエミュレータープログラムを開いてシェルと対話する必要があります。キーボードからの入力はターミナルエミュレータプログラムに送られ、モニタのターミナルエミュレータウィンドウにも表示されます。入力は直接シェルに送られません。端末エミュレータープログラムは、キーボードからの入力をシェルに中継します。端末エミュレータープログラムは、疑似端末を使用してシェルと通信します。

ブートから直接CLIに移動する場合、ターミナルエミュレータプログラムは必要ありません。

私の理解に問題がある場合はコメントして訂正してください。

更新:読み返しました TTY demystified 。私が尋ねるべきことは、テキストターミナル(テキストモードに直接起動する)とGUIターミナルの違いだと思います。なぜなら、ターミナル=テキストターミナル、ターミナルエミュレータ= GUIターミナルです。 Gnomeターミナル。この更新前の回答から、ユーザーは実際にはGUIモードと同様にターミナルエミュレータプログラム(ユーザー空間)を使用しています。コマンド 'ps aux'を実行しているときにTTYプロセスを見つけたので、それがTTYプログラムであることがわかります。テキストモードでターミナルエミュレータプログラムが関与している(カーネルスペースのターミナルエミュレータを参照していない)ことも知りません。

Update2Linux console と読みました。それによると、テキストモードはコンソールであり、GUIモードのターミナルソフトウェアはターミナルエミュレータです。まあ、それは理にかなっていて、以前の私の理解と同じです。ただし、 TTY demystifiedからの図 によると、端末エミュレータはユーザー空間ではなくカーネル空間にあります。興味深いことに、この図はテキストモードを示しています。

10
Ron Vince

ここでは、個別に定義する必要があるいくつかの個別の用語があります。

ターミナル:VT100などの実際のキーボード/モニターインターフェイス: https://en.wikipedia.org/wiki/VT1 =

Terminal emulator(TTY):端末をエミュレートし、入力と出力を提供します。ほとんどのLinuxディストリビューションでctrl + alt + F2を押すと、1つになります。ターミナルで「w」と入力すると、「tty」によって実行されたwコマンドが表示されます。

Pseudo-Terminal(PTY):マスター/スレーブペア(ptmx)で、sshやGUI端末などの他のソフトウェアが端末を提供しますスレーブ(pts)を介したインターフェースのような。 http://linux.die.net/man/4/ptmx GUIターミナルで「w」と入力すると、ptsからのwコマンドがリストされます。

Shell:ログイン時に実行され、入力を解釈するコマンドラインインタープリター。この例は、bash/zshです。

ただし、これらの用語はすべて会話で交換可能になっていることに注意してください。誰かが「ターミナル」、「ターミナルエミュレータ」、「コンソール」、「コマンドライン」、または「シェル」に言及する場合、文脈で特に指定されていない限り、おそらくより一般的に次のことを指します。

「コンピュータを制御するためのテキストベースのもの」

質問の更新用に編集

Ptsまたはptyに一致するすべてのプロセスについては、以下を参照してください。

root@localhost tests]# ps fauxww | grep -P [pt]t[ys] 
root      2604  2.3  0.8  50728 34576 tty1     Ss+  07:09   1:15      \_ /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-VRHaoJ/database -nolisten tcp vt1
root      2569  0.0  0.0   2008   500 tty2     Ss+  07:09   0:00 /sbin/mingetty /dev/tty2
root      2571  0.0  0.0   2008   500 tty3     Ss+  07:09   0:00 /sbin/mingetty /dev/tty3
root      2573  0.0  0.0   2008   504 tty4     Ss+  07:09   0:00 /sbin/mingetty /dev/tty4
root      2575  0.0  0.0   2008   500 tty5     Ss+  07:09   0:00 /sbin/mingetty /dev/tty5
root      2577  0.0  0.0   2008   504 tty6     Ss+  07:09   0:00 /sbin/mingetty /dev/tty6
sin       3374  0.2  0.7  90668 28564 ?        Sl   07:13   0:09 /usr/bin/python /usr/bin/terminator   <<< Added this parent of 3377 manually to see the pts source
sin       3377  0.0  0.0   2076   620 ?        S    07:13   0:00  \_ gnome-pty-helper
sin       3378  0.0  0.0   5236  1712 pts/0    Ss   07:13   0:00  \_ /bin/bash
root      4054  0.0  0.0   5124  1676 pts/0    S    07:23   0:00  |       \_ bash
root      5034  0.0  0.0   5056  1092 pts/0    R+   08:03   0:00  |           \_ ps fauxww
root      5035  0.0  0.0   4416   740 pts/0    S+   08:03   0:00  |           \_ grep -P [pt]t[ys]
sin       4154  0.0  0.0   5236  1708 pts/1    Ss   07:23   0:00  \_ /bin/bash
sin       4485  0.0  0.0   7252  3500 pts/1    S+   07:41   0:00      \_ python

Ptsとttyに関連するプロセスの両方が表示されます。 ttyがpsで表示されているため、これがGUI端末で使用されているものであると想定していますが、そうではありません。この場合、mingetty TTYプロセスはすべてctrl + shift + F2-6で使用できるプロセスであり、ptyは私のGUI端末プロセスに関連するスレーブです。確認するには、GUI端末のプロセスのlsofを確認します。

[root@localhost tests]# ps fauxww | grep terminator
sin       3374  0.2  0.7  90668 28564 ?        Sl   07:13   0:08 /usr/bin/python /usr/bin/terminator
[root@localhost tests]# lsof -p 3374 | grep '[pt]t[ys]'
/usr/bin/ 3374  sin   17u   CHR      136,0      0t0      3 /dev/pts/0
/usr/bin/ 3374  sin   25u   CHR      136,1      0t0      4 /dev/pts/1

テキストモードで起動すると、デスクトップからctrl + alt + f2を押すのと同じようにTTYに入ります。 SSH/GUI端末を使用するときは、疑似端末を使用しています。

11
Brandon DuPree

(ディスプレイ)端末は、キーボードとディスプレイを備え、ホストコンピューターと通信するハードウェアの一部です。端末自体は小さなコンピュータです。組み込みシステム。

端末エミュレーターは、一部の端末の動作を実装する汎用マシンで実行されるソフトウェアです。

端末エミュレーターはすべてグラフィカルではありません。それらはテキスト表示モードに基づくことができます。この例は、Linuxカーネルのコンソールです。

端末エミュレータは、端末エミュレーション自体も使用できます。この例は、GNU Screenプログラムです。端末が必要ですが、その下で実行されているプログラムに端末エミュレーションを提供します。

ターミナルエミュレータは、ホストコンピュータ自体にアクセスする仮想端末を提供するために、ホストコンピュータで実行できます。ホスト上で実行されているソフトウェアは、接続されているリモート端末と同じホストを参照します。しかし、ターミナルエミュレータは、コンピュータasを使用して、リモートホストにアクセスするためにも使用できます。たとえば、PC上のWindowsで実行されているIBM 3270エミュレーターを使用してメインフレームにアクセスする場合などです。机の上にある実際の3270ではなく、Windowsでソフトウェアを使用しているため、これはエミュレーターです。しかし、Windowsコマンドラインにアクセスするためにそれを使用していません。この種の端末エミュレータのもう1つの例は、Minicom、Hyper Terminalなどのシリアル通信パッケージです。また、人気のあるPuTTY SSHクライアント。

4
Kaz