Devpts
devptsは、バージョン2.1.93(1998年4月)以降のLinuxカーネルで使用可能な仮想ファイルシステムディレクトリです。これは通常、にマウントされ、そこにある多重化マスターのスレーブ/dev/ptsを表すデバイスファイルのみを含み、そこにターミナルエミュレーター(X11 xtermなど)を実装するために使用されます。 /dev/ptmx
Linuxカーネルの単純化された構造
:端末と文字デバイスドライバー、別名「TTYサブシステム」。
Linuxポータル
コンテンツ
1 ターミナルエミュレーション
2 実装履歴
3 も参照してください
4 参考文献
ターミナルエミュレーション
疑似端末(「疑似TTY」または「PTY」)は、特殊な種類の通信チャネルを提供する疑似デバイスのペア(スレーブとマスター)です。スレーブ疑似デバイスは、物理的なコンピュータテキスト端末(たとえば、DEC VT100など)をエミュレートし、そのような物理的な端末であるかのようにテキストを読み書きできます。マスター疑似デバイスは、テキストベースのユーザーインターフェイスを提供するプログラムがそのスレーブと連携して制御する手段を提供します。
テキストベースのユーザーインターフェイスを備えた広く普及しているプログラムは、ターミナルエミュレーター(xterm、gnome-terminal、Konsoleなど)、またはSSHやtelnetを使用するプログラムです。マスターへの書き込みは、端末での入力とまったく同じです。したがって、マスター疑似デバイスは、物理的なコンピューターのテキスト端末の前に座っている人のように機能します。
疑似端末ペアは、双方向パイプに似ています。マスターに書き込まれるものはすべてスレーブに入力として表示され、スレーブに書き込まれるものはすべてマスターに入力として表示されます。 POSIXに関しては、端末デバイス(ファイル)は全二重モードで動作する場合がパイプと同様に、擬似端末の容量には制限がLinuxでは、擬似端末の容量は各方向で約4KiBです。
典型的なLinuxカーネルベースのオペレーティングシステムは、ターミナルエミュレーター(xtermやgnome-terminalなど)やSSHなどのリモートアクセスインターフェイスによって提供されるテキストベースのインターフェイスをサポートする多くのPTYを提供します。
devptsの作成は、setuidヘルパープログラムの必要性を放棄したいという願望から生じました/usr/libexec/pt_chown。これは、擬似端末のアイデアの明確な実装です。以前の実装では、永続的なデバイスノードを持つ固定数のマスター/スレーブペアが提供されていました。たとえば、マスタースレーブペア/dev/ptyp63と/dev/ttyp63、を参照してLinuxプログラミングインターフェイスの第62章「端末」および第64章「疑似端末」。
実装履歴
1998年2月、Linux2.1.87は/dev/ptmx多重化マスターデバイスのサポートをもたらしました。このデバイスを開くと、他の方法では使用されていない疑似TTYマスターへのアクセスが提供され、を使用して一致するスレーブを識別できますioctl()。その年の4月、Linux 2.1.93は、通常はにマウントされるdevptsと呼ばれる新しい仮想ファイルシステムを追加しました/dev/pts。新しいマスター/スレーブペアが作成されるたびに、スレーブのデバイスノードがその仮想ファイルシステムに作成されます。
TTYサブシステム(セッション管理と回線管理)をそのまま維持しながら、端末エミュレーションをユーザーランドに移動しやすくするために、疑似端末が発明されました。
ラインディシプリンがカーネル内にある理由は、各文字の受信時にコンテキストスイッチを回避するためです(これは、初期の小さなコアメモリでは、スワップアウトとスワップインを意味します!)。したがって、ラインディシプリンはカーネルバッファに入力ラインを保持します。特定のバイトをテストし、カウンタをデクリメントしてバックスペースの「編集」(およびその他のいくつかの単純な編集関数)を実装するのは簡単なので、そこで行われます。 。
別の方法は、文字が受信されるとすぐにアプリケーションに転送されるrawモードを使用することです。これは、(当時)有名なEmacsのようなより洗練されたエディターに必要です。実際、emacsはこのrawモードを使用する必要がありました。これは、入力された各文字の受信時にコンテキストスイッチを意味するため、コンピューターにemacsや他のすべてのプログラムをコアに保持するのに十分なメモリがない場合は常にスワップしていました。
疑似端末(PTY)が追加されたことで、TTYコードも一種のプロセス間通信メカニズムになり、奇妙なTTYセマンティクスがすべて保持されています。TTYコードは、パフォーマンスのボトルネックを発生させることなく、PPPなどのネットワークプロトコルもサポートする必要が
も参照してください
FIFO(コンピューティングおよびエレクトロニクス)
参考文献
^ ニールブラウン(2016-06-01)。「コンテナ、疑似TTY、および下位互換性」。LWN.net。
^ “pts(4)-Linuxのマニュアルページ”。man7.org 。
^ 「定義」。pubs.opengroup.org 。
^ 「一般的なターミナルインターフェース」。pubs.opengroup.org 。
^ 「/ drivers / char / pty.cの差分」。
^ LinuxAkesson。「TTYの謎を解き明かす」。
^ Jonathan Corbet(2009-07-29)。「ttyポットのテンペスト」。LWN.net。