[Linuxの基本] -LinuxTTYフレームワーク(2)_ソフトウェアアーキテクチャ

I.はじめに

LinuxTTYFramework(1)_Basic Conceptsの紹介によると、Linuxカーネルでは、TTYはさまざまなタイプの端末の略語です。Linuxカーネルは、端末の使用と端末ドライバーの作成を簡素化するために、TTYフレームワークを抽象化します。上部には、端末を使用するための統一されたインターフェイスを提供し、下部には、端末ドライバーを作成するための統一されたフレームワークを提供します(シリアルドライバなど)。

この記事は、Linuxフレームワーク分析の2番目の記事であり、アーキテクチャ全体の観点から、後続の分析のために比較的独立したサブモジュールを分解するためにLinuxTTYフレームワークを紹介します。

第二に、ソフトウェアアーキテクチャ

LinuxカーネルのTTYフレームワークは「drivers / tty」ディレクトリにあり、そのソフトウェアアーキテクチャを下の図1に示します。

他のLinuxフレームワークと同様に、TTYフレームワークはTTYコアを介してTTY関連の技術的な詳細を保護し、文字デバイスの形式でアプリケーションへの統合インターフェイスを提供し、TTYデバイス/ TTYドライバーの形式でドライバーを作成するためのフレームワークを提供します。詳細については、以下の章を参照してください。

2.1、TTYコア

TTYコアはTTYフレームワークのコアロジックであり、その機能は次のとおりです。

1)文字デバイスの形式でTTYデバイスにアクセスするためのインターフェイスをユーザースペースに提供します。次に例を示します。

デバイス番号(プライマリ、セカンダリ)文字デバイス備考
(5、0)/ dev / tty制御端末

5、1 )/ dev / consoleコンソール端末(4、0)/ dev / vc / 0または/ dev / tty0仮想端末
(4、1)/ dev / vc / 1または/ dev / tty1上記と同じ
...……
(x、x)/ dev / ttyS0シリアル端末(名前とデバイス番号はドライバーが独自に決定します)
… ……
(x、x)/ dev / ttyUSB0USBからシリアルポート端子
…………

注1:制御端末、コンソール端末、仮想端末などの概念は比較的抽象的であり、以降の記事で詳しく紹介します

2)デバイスモデルのstruct device構造体を介してTTYデバイスを抽象化し、struct tty_driverを介してデバイスドライバーを抽象化し、対応するレジスタインターフェイスを提供します。TTYドライバーの書き込みは、対応するstructtty_driver構造体に入力して登録するように簡略化されています。

注2:TTYフレームワークはTTYデバイスの概念を弱めます(図1で破線のボックスでマークされています)。通常、TTYドライバーを登録するときにTTYデバイスを自動的に割り当てて登録できます

3)structtty_structやstructtty_portなどのデータ構造を使用して、TTYデバイスとその「コンポーネント」を論理的に抽象化し、ハードウェアに依存しないロジックを実現します

4)TTYハードウェアにデータを送信する前、およびTTYデバイスからデータを受信した後、Line Discipinesという名前のモジュールを抽象化し、対応する処理(特殊文字の変換など)を実行します。

2.2、システムコンソールコア

Linuxカーネルのシステムコンソールには、2つの主要な機能があります。

1)ユーザーが対話型操作のためにログインできるように、システムにコンソール端末を提供します。

2)カーネルコードのログ出力にprintk関数を提供します。

2.3、TTY回線分野

Line Disciplinesは、TTY Frameworkの非常にエレガントなデザインであり、デバイスドライバーとアプリケーションインターフェイスの間の適応レイヤーと見なすことができます。文字通り、TTYドライバーがTTYデバイスを介して入力した文字を1行ずつのデータに変換するのを支援することです。もちろん、実際の状況はこれよりもはるかに複雑です。たとえば、中国では、 Wowo xプロジェクトには、次のLine Disciplinesがあります(接頭辞n_、フォローアップ記事で詳しく説明します)。

pengo @ DESKTOP-CH8SB7C:〜/ work / xprj / linux $ ls drivers / tty / n_ *
drivers / tty / n_gsm.c drivers / tty / n_r3964.c drivers / tty / n_tracesink.c drivers / tty / n_tty.c
drivers /tty/n_hdlc.c drivers / tty / n_tracerouter.c drivers / tty / n_tracesink.h

2.4、TTYドライバーとシステムコンソールドライバー

最後に、カーネルとドライバーのエンジニアは、特定のTTYデバイスドライバーに関心を持っています。カーネルによって構築されたこのようなビューティーフレームワークを使用すると、対応するドライバーを作成することは比較的簡単なことです。もちろん、カーネルには、主に2つのタイプのTTYドライバーがあります。

1)drivers / tty / vtにある仮想ターミナル(VT)ドライバーは、VT関連の機能を実装する責任があります(以降の記事で詳しく説明します)。

2)シリアルサブシステムとも呼ばれるシリアルターミナルドライバーは、drivers / tty / serialにあります。

3、まとめ

この記事では、Linux TTY Frameworkのソフトウェアフレームワークについて簡単に紹介します。目的は、LinuxTTYのソフトウェア実装全体を理解することです。この記事の説明に基づいて、フォローアップでは、次の観点からTTYフレームワークの分析を継続する予定です。

制御端末、コンソール端末、仮想端末などの概念の理解と解釈。

TTYコアの分析;

システムコンソールコアの分析。

シリアルサブシステムの分析;

仮想端末(VT)の分析。

ライン分野の紹介と分析;

等々。

4、参照ドキュメント

[1] TTYドライバー分析

[2]制御端末、https://linux.die.net/man/4/tty

[3] https://utcc.utoronto.ca/~cks/space/blog/unix/TTYLineDisciplineWhy

 

これは切り替えられました:カタツムリの巣技術www.wowotech.net

 

おすすめ

転載: blog.csdn.net/u014674293/article/details/115296095