

ターミナルエミュレーター、またはターミナル アプリケーションは、他のディスプレイ アーキテクチャ内でビデオターミナルをエミュレートするコンピュータ プログラムです。ターミナルという用語は、通常はシェルまたはテキスト ターミナルと同義ですが、グラフィカル インターフェイスを含むすべてのリモートターミナルを指します。グラフィカル ユーザー インターフェイス内のターミナル エミュレーターは、ターミナル ウィンドウと呼ばれることがよくあります。
ターミナル ウィンドウを使用すると、ユーザーはテキスト ターミナルと、コマンド ライン インターフェイス(CLI) やテキスト ユーザー インターフェイス(TUI) アプリケーションなどのすべてのアプリケーションにアクセスできます。これらは、同じマシン上で実行することも、telnet、ssh、ダイヤルアップ、または直接シリアル接続を介して別のマシンで実行することもできます。Unix系のオペレーティング システムでは、ローカル マシンに 1 つ以上のターミナル ウィンドウが接続されているのが一般的です。
端末は通常、色やカーソルの位置などを制御するための一連のエスケープ シーケンスをサポートしています。例としては、 ECMA-48、ANSI X3.64、ISO/IEC 6429などの端末制御シーケンス標準ファミリが挙げられます。
背景
コンピュータの黎明期、インタラクティブ コンピューティングの出現により、複数の端末に接続された中央コンピュータを使用するモデルが普及しました。[1]この構成は集中型またはメインフレーム モデルと呼ばれ、強力な中央コンピュータがすべての処理タスクを実行し、端末はユーザーがシステムと対話するための入出力デバイスとして機能しました。これらのシステムは当初、文字ベースでした。
文字指向端末

文字指向端末は、データのブロック単位で通信するブロック指向端末とは対照的に、一度に 1 文字ずつホストと通信するタイプのコンピュータ端末です。実装とプログラミングが簡単なため、最も一般的なタイプのデータ端末です。メインフレーム コンピュータまたは端末サーバーへの接続は、RS-232 シリアル リンク、イーサネット、またはその他の専用プロトコルを介して行われます。
文字指向端末は、「ダム」または「スマート」である。ダム端末[2]は、限られた数の制御コード (CR、LF など) を解釈できるが、行のクリア、画面のクリア、カーソル位置の制御などの機能を実行する特別なエスケープ シーケンスを処理する機能を持たない端末である。この文脈では、ダム端末はガラス テレタイプと呼ばれることもある。これは、本質的に機械式テレタイプと同じ限られた機能を持つからである。このタイプのダム端末は、環境変数TERMを に設定することで、現代の Unix 系システムでもサポートされているdumb。スマート端末またはインテリジェント端末は、エスケープ シーケンス、特に VT52、VT100、または ANSI エスケープ シーケンスを処理する機能も備えている端末である。エミュレータ
1980年代にパソコンが普及すると、パソコン上でソフトウェアを実行するオプションが提供され、高価でスペースを消費するハードウェア端末を追加機能を備えたものに置き換える機会が生まれました。[3]すぐに、 PC上でハードウェア端末の機能をエミュレートできるソフトウェアが利用可能になりました。DOS用のそのようなソフトウェアの例としては、 1988年にリリースされ、DEC VT102端末をエミュレートできるTelixやTelemateがあります。[ 4]
ワークステーション(通常はUnixのバージョンを実行) も 1980 年代に普及しました。Unix システムは通常、ローカル接続またはダイヤルアップ端末でコマンド ラインにアクセスできるようにしました。Unix ワークステーションは、主にグラフィカル ユーザー インターフェイス(GUI) を介して使用するように設計されており、コマンド ラインにアクセスできるようにするために、GUI にはローカル接続端末のように動作する端末エミュレーター アプリケーションが含まれていました。
1990年代には、WindowsやOS/2などの新しいオペレーティングシステムが登場し、Telix for Windows、 ZOC for OS/2、PuTTYなどの端末エミュレーターの技術的背景が提供されました。PuTTYは1998年にWindows向けに最初にリリースされ、今日でも(その派生製品とともに)非常に人気のある選択肢の1つです。[5]
Linux は、特にデータセンターやクラウドサーバー上で稼働しており、その成功により[6] [ dead link ]、文字ベースの端末を介してリモートコンピューターにアクセスする必要性が残っています。これは、今日、前述のPuTTYの代替として使用できる端末エミュレータのリストに100 を超える代替品が掲載されていることからも明らかです。[7] [疑わしい–議論]
エミュレートされた端末の例
VT52、VT100 、VT220、VT320、IBM 3270/8/9/E、IBM 5250 、 IBM 3179G、Data General D211、Hewlett-Packard HP700/92、Sperry/Unisys 2000 シリーズUTS60、Burroughs/Unisys A シリーズ T27/TD830/ET1100、ADDS ViewPoint、AT386、Siemens Nixdorf (SNI) 97801、Televideo 925、Wyse 50/60 などの物理ハードウェア端末用に、多くの端末エミュレータが開発されています。
xtermなどの一部の端末エミュレータは、エミュレートされた端末には存在しない追加機能を実装しています。[8]
さらに、 Sun ワークステーションコンソールやLinux コンソールなどのさまざまなシステム コンソール「端末」をエミュレートするプログラムも開発されています。
最後に、一部のエミュレーターは、 ANSI エスケープ コードの標準など、一連の標準を単純に参照します。
このようなプログラムは、 DOS、LinuxやmacOSなどのUnix系システム、Windows、携帯電話や産業用ハードウェアに搭載されている組み込みオペレーティングシステム など、多くのプラットフォームで利用できます。
実装の詳細
Unix系システム
過去には、UnixやUnix系システムはRS-232ポートなどのシリアルポートデバイスを使用し、 それらの/dev/* デバイスファイルを提供していました。 [9]
端末エミュレータでは、これらのデバイスファイルは、一対の擬似端末デバイスを使用してエミュレートされます。このペアは、ホストコンピューティングエンドポイント(オペレーティングシステムAPI、rlogin、telnet、SSHなどの他のソフトウェアによって提供されるコンピューターのハードウェア)への物理ポート/接続をエミュレートするために使用されます。[10]たとえば、Linuxシステムでは、これらはそれぞれ/dev/ptyp0(マスター側)および/dev/ttyp0(スレーブ側)擬似端末デバイスになります。
のような特別な仮想コンソールファイルもあります/dev/console。テキスト モードでは、ファイルに書き込むと仮想コンソールにテキストが表示され、ファイルから読み取るとユーザーが仮想コンソールに書き込んだテキストが返されます。他のテキスト ターミナルと同様に、プログラムが使用できる特別なエスケープ シーケンス、制御文字、関数もあり、最も簡単にはncursesなどのライブラリを使用します。より複雑な操作については、プログラムはコンソールとターミナルの特別なioctlシステム コールを使用できます。vcs (「仮想コンソール画面」) と vcsa (「属性付き仮想コンソール画面」) のパターンを使用して、およびなどのデバイスを比較できます/dev/vcs1。/dev/vcsa1[ 11]
一部の端末エミュレーターには、貼り付けの括弧を構成するなど、端末とその内部で実行されているプログラム間の良好な相互運用性を実現するために、端末の動作を構成するためのエスケープ シーケンスも含まれています。
仮想コンソールは、 init/etc/inittabによって読み取られるファイルで設定できます。通常、 init は複数の仮想コンソールに対してテキスト モードログインプロセスgetty を開始します。X Window System は、 X ディスプレイ マネージャーで、または X ディスプレイ マネージャーによって設定できます。多くのLinuxディストリビューションでは、 initの代わりにsystemd が使用されており、これも仮想コンソールの設定を可能にします。
/etc/inittab
CLIツール
仮想コンソールにアクセスするために使用される一般的な Linux システム プログラムは次のとおりです。
chvt現在の仮想コンソールを切り替えるopenvt新しい仮想コンソールでプログラムを実行するdeallocvt現在使用されていない仮想コンソールを閉じる
ローカルエコー
端末エミュレータはローカルエコー機能を実装している可能性があり、これは誤って「半二重」、または少し誤って「エコープレックス」と呼ばれることがあります(これは正式には入力表示オプションではなくエラー検出メカニズムです)。 [12] [13] [14] [15]
行単位モード/ローカル編集
端末エミュレータは、ローカル編集を実装している場合があります。これは「行単位モード」とも呼ばれます。これは誤って「半二重」とも呼ばれます。[要出典]このモードでは、端末エミュレータは入力の完全な行のみをホストシステムに送信します。ユーザーは行を入力して編集しますが、編集中は端末エミュレータ内でローカルに保持されます。ユーザーが完了を知らせるまでは送信されません。通常は↵ Enterキーボードのキーまたはユーザーインターフェイスの「送信」ボタンのいずれかで完了を知らせます。その時点で、行全体が送信されます。行単位モードはローカルエコーを意味します。そうしないと、ユーザーは編集および構築中の行を見ることができません。[12] [16]ただし、行単位モードはエコーモードとは独立しており、ローカルエコーを必要としません。たとえば、パスワードを入力する場合、ローカル編集による行単位の入力は可能ですが、ローカルエコーはオフになります (そうしないと、パスワードが表示されます)。[17]
行単位モードの複雑さは、telnet プロトコルの行単位モード オプションに例証されています。これを正しく実装するには、端末エミュレータ プログラムによって提供されるネットワーク仮想端末実装が、ローカルで行を編集している途中で発生する「割り込み」および「中止」イベントを認識し、適切に処理できる必要があります。[18]
同期端末
非同期端末では、データはいつでもどの方向にも流れます。同期端末では、プロトコルによって誰がいつデータを送信できるかが制御されます。IBMメインフレーム コンピューターで使用されるIBM 3270ベースの端末は、同期端末の一例です。これらの端末は、基本的に「画面単位」モード (ブロック モードとも呼ばれます) で動作します。ユーザーは、更新された画面を 1 回のアクションでリモート マシンに送信する前に、ページに多数の変更を加えることができます。
3270 プロトコルをシミュレートする端末エミュレーターは、ほとんどのオペレーティング システムで使用でき、 z9などのシステムを管理するユーザーと、CICSなどの対応するアプリケーションを使用するユーザーの両方が使用できます。
同期端末の他の例としては、IBM 5250、ICL 7561、Honeywell Bull VIP7800、Hewlett-Packard 700/92 などがあります。
仮想コンソール
仮想コンソール(仮想端末とも呼ばれる) は、パーソナル コンピュータまたはワークステーションのキーボードとモニターを使用してエミュレートされたテキスト端末です。仮想コンソールは GUI 端末ではなく、グラフィカル インターフェイス内で実行されないため、「テキスト」という言葉が重要です。仮想コンソールは、ほとんどのUnix 系システムにあります。主に、グラフィカル デスクトップ環境を使用せずにサーバーにアクセスして対話するために使用されます。
参照
注記
- ^ ベルリン自由大学、3. ミニコンピュータのアーキテクチャ
- ^ 「ダム端末とは何か?定義と意味」。BusinessDictionary.com。2020年8月13日時点のオリジナルよりアーカイブ。 2019年3月13日閲覧。
- ^ 「パーソナルコンピュータ上での端末のエミュレーション」。
- ^ 「テレメイト Wiki」.
- ^ 「Windows 用 SSH クライアント」。
- ^ 「データセンターにおける Linux の強化」。
- ^ 「Puttyの代替品」。
- ^ Thomas E. Dickey. 「XTerm - よくある質問 (FAQ)」。なぜ VT220 なのか?
- ^ 「ターミナルエミュレーションの簡単な歴史 | Turbosoft」www.ttwin.com 。 2021年10月4日閲覧。
- ^ 「Ubuntu Manpage: tty — 一般的な端末インターフェース」. manpages.ubuntu.com . 2021年10月4日閲覧。
- ^ 「スクリーン ダンプ」。Linux キーボードおよびコンソール HOWTO。Linuxドキュメンテーションプロジェクト。2008年 7 月 31 日取得。/dev/ttyN
の画面の現在の内容は、デバイス /dev/vcsN を使用してアクセスできます (ここで、`vcs' は `仮想コンソール画面' の略)。[...] プログラムからは通常、代わりに /dev/vcsaN (`属性付き仮想コンソール画面') を使用する方が適切です。これは、行と列の数とカーソルの位置を示すヘッダーで始まります。vcs(4) を参照してください。
- ^ Daintith 2004、171ページより。
- ^ Weik 2000、「エコー」p.478。
- ^ Weik 2000、「エコープレックス」p.479。
- ^ Weik 2000、「エコープレックスモード」p.479。
- ^ バンギア2010、324ページ。
- ^ スティーブンス&ライト1994年、413ページ。
- ^ ミラー2009、590、591頁。
参考文献
- Bangia, Ramesh (2010)。「ライン モード ターミナル」。情報技術辞典。Laxmi。ISBN 978-93-8029-815-3。
- Daintith, John (2004)。「エコー」。オックスフォード コンピューティング辞典(第 5 版)。オックスフォード大学出版局。ISBN 978-0-19-860877-6。
- ミラー、フィリップ M. (2009)。TCP /IP – 究極のプロトコル ガイド。第 2 巻 – アプリケーション、アクセス、およびデータ セキュリティ。Universal- Publishers。ISBN 978-1-59942-493-4。
- Stevens, W. Richard ; Wright, Gary R. (1994) 。TCP/IP 図解。Addison-Wesley プロフェッショナル コンピューティング シリーズ。第 1 巻: プロトコル。Addison- Wesley。ISBN 978-0-201-63346-7。
- Weik, Martin H. (2000)。「端末エミュレーション」。コンピュータサイエンスとコミュニケーション辞書。第 1 巻。Springer。p. 1763。doi : 10.1007 / 1-4020-0613-6_19359。ISBN 978-0-7923-8425-0。
外部リンク
- Curlieのターミナル エミュレーション
- Linux 情報プロジェクト (LINFO) によるターミナル ウィンドウの定義
