- /dev/ptmx は UNIX 98 マスターです。複製デバイス 源泉
- プロセスが/dev/ptmxを開くとファイル記述子PTM(擬似ターミナルマスター)の場合は、/ dev / ptsディレクトリにPTS(擬似ターミナルスレーブ)を作成します。源泉。持つノードなし基本デバイスのファイルシステムで源泉。
- スレーブに書き込まれたデータがマスターに表示されます。記述子入力として。マスターに書き込まれたデータはスレーブに入力として提供されます。源泉。
- Unixおよび関連するコンピュータオペレーティングシステムでは、ファイル記述子(FD、あまり一般的にはfildes)は、ファイルにアクセスするために使用される抽象指定子(ハンドル)です。文書またはその他の入力/出力リソース、パイプやネットワークソケットなど源泉。
結論として:
- /dev/ptmxはマスターレプリケーションのための「モールド」(実際にはファイル記述子)です。
- 擬似端末は、双方向通信を提供する一対の仮想デバイスである。チャンネルの一端はファイル記述子(マスター)もう一つは/dev/pts/nです。装備(奴隷)。
- PTMデバイスはなく、ファイル記述子のみがあります。
- ファイル記述子はアクセスに使用されます。文書またはリソース。
質問:
- ファイル記述子が処理するPTMリソースはどこにありますか?
- PTMマスターを「デバイス」と呼ぶのはなぜですか? /devにエントリがないためです。
- 一つできますか?修正済みSSHDなどのプログラムは、中間PTMなしでPTSと直接通信できますか?
ベストアンサー1
疑似端末がどのように機能するかを理解するには、これを実際の物理端末の抽象化と考える必要があります。今日、最も一般的な物理端末はLinux仮想コンソールですが、当時は実際の物理端末が非常に一般的で、日常業務でユーザーが見ることができるコンピュータシステムの唯一の部分でした。
実際の物理端末には2つの異なる側面(必要に応じて「側面」)があります。
ユーザーが座る「外部」。これには、ユーザーが文字を入力できるキーボードと、コンピュータの出力を表示できる画面があります。擬似端末の抽象化では、これは「主な」終わりです。
オペレーティングシステムで文字デバイスとして表示される「内部」側面。擬似端末の抽象化では、これは「スレーブ」側です。
プログラムがユーザーと通信するために使用する物理端末の「外部」側面と「内部」文字デバイスの間には、一連の処理セットがあり、端末ハードウェア自体は画面を更新し、オペレーティングシステムはユーザーキーストロークをバッファリングできます。ライン編集などを行います。
Digital Equipment Corporation VT220ターミナル。あなたはその「フロント」を見ています。擬似端末の場合、これは「基本」側として表示されます。 Wikimediaの画像。
ファイル記述子が処理するPTMリソースはどこにありますか?
カーネルメモリにあります。プロセスが開かれると、
/dev/ptmx
カーネルはマスターとスレーブからなる新しい擬似端末を生成します。マスター側はそれを作成したプロセスに属します/dev
。スレーブ側は、端末と通信したいすべてのプロセスによって開くことができるので/dev
。PTMマスターを「デバイス」と呼ぶのはなぜですか? /devにエントリがないためです。
私たちは通常それをデバイスと呼びません。私たちは通常これを擬似端末の基本的な側面と呼びます。しかし、そうです。通常のファイルではなく、文字デバイスに近いです。たとえば、これを保持しているプロセスは以前の場所を検索できません。新しいバイトを読み込むか、新しいバイトを書き込むことができます。
SSHDなどの修正プログラムは、中間PTMなしでPTSと直接通信できますか?
sshd は擬似端末のスレーブ側と通信しません。 sshdは擬似端末のマスター側を保持し、スレーブ側はSshdによって生成されたプロセス(シェルなど)によって使用されます。
sshdは次のように動作します。
ネットワーク経由でログイン要求が行われ、ユーザーが認証されると、Sshdはマスターを保持し、擬似端末からの要求に応じてプロセス(通常はシェル)を生成します。標準入力、標準出力、標準エラーによるスレーブ。
ネットワークから受信した文字は、Sshdによって擬似端末のマスター側に書き込まれます。これはユーザーがキーボードで入力することをシミュレートします。カーネルはこの文字ストリームを処理します(または処理しません)。擬似端末スレーブ(シェルなど)を持つプロセスは、実際の端末と通信しているかのようにそれを受け取ります。
マスターデバイスとスレーブデバイスの間にはオペレーティングシステムのカーネルがあり、スレーブデバイスの状態に応じて特定の処理を実行したり、特定の処理を実行したりしない場合があります。バラよりライン規律、そしてマニュアルページ
stty
(1) そしてioctl
(2)(特に端子または擬似端子のスレーブ側に適用されます。)。
_______ ______ ______ ______ _____ ______
( ) bytes in | | | | | | | | | Bash |
(Network)---------->| Sshd |---->|Master|---->| OS |---->|Slave|---->| Vi |
( )<----------| |<----| PTY |<----|kernel|<----| PTY |<----| Less |
(_______) bytes out |______| |______| |______| |_____| |______|
_______ _____ ______ ______ _____ _____ _______
< > Events | | | | | | | | | | ( )
< GUI >-------->|Xterm|--->|Master|--->| OS |--->|Slave|--->| Ssh |--->(Network)
< ><--------| |<---| PTY |<---|kernel|<---| PTY |<---| |<---( )
<_______> Drawing |_____| |______| |______| |_____| |_____| (_______)