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

IV. NCP の全体構造

我々は、NCP が 5 つの構成プログラム、いくつかの連想テーブル、およびいくつかのキューとバッファから成るものと捉える。

構成プログラム(図 4.1 を参照)​

1. 入力ハンドラ​

これは割り込み駆動のルーチンである。IMP からホストへの送信を常駐バッファに対して開始し、送信が完了すると入力インタプリタを起動する。

2. 出力ハンドラ​

これは割り込み駆動の出力ルーチンである。常駐バッファからホストから IMP への送信を開始し、送信が完了すると出力スケジューラを起動する。

3. 入力インタプリタ​

このプログラムは、入力がユーザ宛ての通常メッセージ、ネットワーク制御メッセージ、IMP からホストへのメッセージ、またはエラーのいずれであるかを判定する。メッセージの各クラスについて、このプログラムは適切な処理を行うサブルーチンを呼び出す。

4. 出力スケジューラ​

IMP へは 3 つのクラスのメッセージが送られる。

  • (a) ホストから IMP へのメッセージ
  • (b) 制御メッセージ
  • (c) 通常メッセージ

これらのクラスの間には優先順位を設けるべきだと考える。我々が提案する優先順位は上記の順序である。出力スケジューラは最も優先順位の高いメッセージを選び、出力ハンドラに渡す。

ホストから IMP へのメッセージは先着順に処理される。制御メッセージはホストごとに個別に処理され、各ホストが順番に扱われる。外部ホストごとに制御メッセージキューが 1 つ用意される。ある特定のホストが出力対象にスケジュールされると、そのホスト宛ての制御コマンドが収まる限り連結されて 1 つのメッセージにまとめられる。通常メッセージはホストとリンクごとにグループとして処理され、固有の組み合わせのそれぞれが順番に扱われる。

5. システムコールインタプリタ​

このプログラムはユーザからの要求を解釈する。各システムコールには、適切な処理を行う対応ルーチンがある。

興味深い構成要素は、入力インタプリタとシステムコールインタプリタの 2 つである。入力インタプリタが外部からの要求を処理し、システムコールインタプリタがローカルの要求を処理するという点で、両者は似ている。

図 4.1 は、我々が構想するネットワーク制御プログラムを示す。ぐにゃぐにゃしたアメーバ状の物体は構成プログラムを、円柱はキューを、矢印はデータ経路を表す。この簡略化した図ではテーブルは示していない。[編者注:原本の手描き図にあった「アメーバ状」の物体は、現在はしっかりした長方形の枠になっている。]

図中の略称ラベルの意味は次のとおりである。

  • HIQ: ホストから IMP へのキュー
  • OCCQ: 出力制御コマンドキュー
  • DQ: データキュー
  • IHBUF: 入力ハンドラバッファ
  • OHBUF: 出力ハンドラバッファ
             ____________
            |    USER    |    STRUCTURE OF THE NETWORK CONTROL PROGRAM
            |____________|
               ^      |                      Fig. 4.1
          _____|______V____
         |                 |
         |     System      |
         |      Call       |
         |   Interpreter   |
         |_________________|              _____________
            ^  |      |                  |             |
            |  |      |  +---------------|    Input    |
            |  |      |  |         +-----| Interpreter |
            |  |      |  |         |     |             |
            |  V      V  V         V      -------------
          |======| |=========| |=======|     |      ^
          | D Q  | | O C C Q | | H I Q |     |      |
          |======| |=========| |=======|     |      |
            |  ^        |          |         |      |
            |  |        |          |         |      |
            |  +--------)----------)---------+      |
            |           |          |                |
            +-------+   |   +------+                |
                  __V___V___V__                     |
                 |             |                    |
                 |   Output    |                    |
                 |  Scheduler  |                    |
                 |_____________|                    |
                        |                           |
                        V                           |
                  (===========)               (===========)
                  ( O H B U F )               ( I H B U F )
                  (===========)               (===========)
                        |                           ^
                  ______V______               ______|______
                 |             |             |             |
                 |   Output    |             |    Input    |
                 |   Handler   |             |   Handler   |
                 |             |             |             |
                  -------------               -------------
                        |                           ^
                        |                           |
                        +----------+    +-----------+
                                   |    |
                               ____V____|____
                              |              |
                              |     I M P    |
                              |______________|