メインコンテンツまでスキップ

II. ソフトウェア構成の範囲

本システムは、チャネルハードウェアユニットを駆動するハンドラプログラムと、ユーザーの伝送要求を実行するネットワークプログラムという2つの主要プログラムに基づいている。

通信は全二重であるため、これらの各プログラムは2つの部分に分かれていると見なすことができる。一方は出力データを扱い、他方は入力データを扱う。(Fig. 1参照)

これら2つのプログラムは、バッファプールを介してデータを交換し、インターフェーステーブルを介して論理情報を交換する。

以下では、各プログラムの出力部分のみに注目する(Fig. 2参照)。入力部分も非常によく似ているであろう。

II-1. ネットワークプログラム​

II-1-1. 多重化機能​

このプログラムは、送出メッセージを多重化する(そして受信メッセージを分配する)。多重化とは、ユーザー(または発呼者、または相手)のすべての要求を積み重ね、ハンドラが送信し続けられるようにバッファプールを満たすことである。

多重化(および分配)は、リンク識別番号に基づいている。(リンク=2人のユーザー間の論理接続)。多重化の問題は、ユーザーのプログラムとネットワークプログラムとの間のインターフェースと密接に関係しており、それは実際には...(unreadable)オペレーティングシステムである(後述の「質問」を参照)。

II-1-2. 出力メッセージ処理​

ユーザーのプログラムがテキストを送出しようとするときは、次の情報を示さなければならない(マクロを通じて、または呼び出しパラメータとして):テキストの位置、バイト単位のテキスト長、および宛先。

これらのデータを用いて、ネットワークプログラムは次のことを行う:

  • 16ビットのホストヘッディングを準備する(1ビット:トレース、2ビット:予備、8ビット:リンク識別番号、5ビット:宛先ホスト)

  • ヘッダーとテキストの間に16ビットのマーキングを挿入し、テキストがワード境界から始まるようにする。このマーキングは、テキストの最初のビットに先行する1つの1からなり、さらにその前に、隙間を埋めるために15個の0が置かれる。

  • ユーザーのテキストの長さを検査する - それが1006バイトを超える場合

+-                                                     -+
|8080 (max host message length) - 32 (heading + marking)|
|-------------------------------------------------------|
| 8 (byte = 8 bits) |
+- -+

プログラムはテキストを、最大長が1006バイトである一連のメッセージに分解する - これらの各メッセージの前には、上で説明したようなヘッディングが置かれる。

備考:その場合、ヘッディングの予備ビットの1つを、複数のメッセージが同じテキストに属することを示すために使用できる。

  • メッセージを構成するEBCDIC文字をASCII文字に_トランスコード_する。

  • メッセージの内容でプールのバッファを_満たす_。

  • インターフェーステーブルの内容を_更新_し、充填ポインタを移動する(後述)。

II-2. ハンドラプログラム​

このプログラムは、ネットワークプログラムによって、またはI/O割り込みによって起動される。

このプログラムは非常に短くなるであろう。マスターモード(特権命令)でコーディングされ、オペレーティングシステムのI/Oスーパーバイザに組み込まれるべきである。

このプログラムは次のことを行う:

  • チャネルハードウェアユニットを_制御_する。送信を開始し、場合によってはバッファ間のデータチェーニングを行い、割り込みを受信したときにさまざまなデバイス状態を検査する。

  • ネットワークプログラムによって満たされたバッファを_空にする_。

  • インターフェーステーブルを_探索_し_更新_する(後述)。

  • 場合によっては、IMPとの制御伝送手順を保証することができる(「質問」を参照)。

II-3 バッファとインターフェーステーブル​

II-3-1 バッファ​

それらは、最大ホストメッセージのテキスト+ヘッディングとマーキング(1006 + 4 = 1010バイト)を格納するのに十分な大きさでなければならない。

したがって、バッファサイズは256ワード(1024バイト)に選ぶことができる。バッファの数については、それがリンクの利用率を決定する -

II-3-2 インターフェーステーブル​

ネットワークプログラムが、送信データの位置と長さをハンドラに通知するのは、このテーブルを通じてである。

このテーブルは、2つのポインタを持つリングテーブルとすることができる。1つは充填用、もう1つは取り出し用である。それらはそれぞれ、ネットワークプログラムとハンドラプログラムによって更新される。

           [Length] of the message
contained
in the buffer
^
|
+--------------+----------+
| Buffer addr. | nb bytes |
+--------------+----------+
| | | <== Filling pointer
+--------------+----------+ |
| | V
| |
// //
| |
| |
| |
+--------------+----------+
| Buffer addr. | nb bytes | <== eEtracting pointer
+--------------+----------+ |
| Buffer addr. | nb bytes | V
+--------------+----------+