Skip to main content

IV. The NCP - Gross Structure

We view the NCP as having five component programs, several associative tables, and some queues and buffers.

The Component Programs (see Fig. 4.1)​

1. The Input Handler​

This is an interrupt-driven routine. It initiates Imp-to-Host transmission into a resident buffer and wakes up the input interpreter when transmission is complete.

2. The Output Handler​

This is an interrupt-driven output routine. It initiates Host-to-Imp transmission out of a resident buffer and wakes up the output scheduler when transmission is complete.

3. The Input Interpreter​

This program decides whether the input is a regular message intended for a user, a network control message, an Imp-to Host message, or an error. For each class of message this program invokes a subroutine to take the appropriate action.

4. The Output Scheduler​

Three classes of messages are sent to the Imp

  • (a) Host-to-Imp messages
  • (b) Control messages
  • (c) Regular messages

We believe that a priority should be imposed among these classes. The priority we suggest is the ordering above. The output scheduler selects the highest priority message and passes it to the output handler.

Host-to-Imp messages are processed first come first served. Control messages are processed individually by host, each host being taken in turn. A control message queue for each foreign host is provided. When any particular host is scheduled for output, as many control commands for that host as will fit are concatenated into a single message. Regular messages are processed in groups by host and link, each unique combination being taken in turn.

5. The System Call Interpreter​

This program interprets requests from the user. Each system call has a corresponding routine which takes the appropriate action.

The two interesting components are the input interpreter and the system call interpreter. These are similar in that the input interpreter services foreign requests and the system call interpreter services local requests.

The diagram in Figure 4.1 is our conception of the Network Control Program. Squishy amoeba-like objects represent component programs, cylinders represent queues, and the arrows represent data paths. In this simplified diagram tables are not shown. ["Amoeba-like" objects in original hand drawing are now firm rectangular boxes: Ed.]

The abbreviated labels in the figure have the following meanings:

  • HIQ: Host-to-Imp Queue
  • OCCQ: Output Control Command Queue
  • DQ: Data Queue
  • IHBUF: Input Handler Buffer
  • OHBUF: Output Handler Buffer
             ____________
            |    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    |
                              |______________|