IV. Der NCP - Grobstruktur
Wir betrachten den NCP als bestehend aus fünf Teilprogrammen, mehreren assoziativen Tabellen sowie einigen Warteschlangen und Puffern.
Die Teilprogramme (siehe Abb. 4.1)
1. Der Eingabe-Handler
Dies ist eine interruptgesteuerte Routine. Sie startet die Imp-to-Host-Übertragung in einen residenten Puffer und weckt den Eingabeinterpreter, sobald die Übertragung abgeschlossen ist.
2. Der Ausgabe-Handler
Dies ist eine interruptgesteuerte Ausgaberoutine. Sie startet die Host-to-Imp-Übertragung aus einem residenten Puffer und weckt den Ausgabe-Scheduler, sobald die Übertragung abgeschlossen ist.
3. Der Eingabeinterpreter
Dieses Programm entscheidet, ob die Eingabe eine reguläre, für einen Benutzer bestimmte Nachricht, eine Netzsteuernachricht, eine Imp-to-Host-Nachricht oder ein Fehler ist. Für jede Nachrichtenklasse ruft dieses Programm eine Unterroutine auf, die die entsprechende Aktion ausführt.
4. Der Ausgabe-Scheduler
An den IMP werden drei Klassen von Nachrichten gesendet
- (a) Host-to-Imp-Nachrichten
- (b) Steuernachrichten
- (c) Reguläre Nachrichten
Wir sind der Meinung, dass zwischen diesen Klassen eine Priorität gelten sollte. Die von uns vorgeschlagene Priorität entspricht der obigen Reihenfolge. Der Ausgabe-Scheduler wählt die Nachricht mit der höchsten Priorität aus und übergibt sie an den Ausgabe-Handler.
Host-to-Imp-Nachrichten werden in der Reihenfolge ihres Eintreffens verarbeitet. Steuernachrichten werden einzeln pro Host verarbeitet, wobei die Hosts der Reihe nach an die Reihe kommen. Für jeden fremden Host ist eine Warteschlange für Steuernachrichten vorgesehen. Wird ein bestimmter Host zur Ausgabe eingeplant, werden so viele Steuerbefehle für diesen Host, wie hineinpassen, zu einer einzigen Nachricht verkettet. Reguläre Nachrichten werden in Gruppen nach Host und Link verarbeitet, wobei jede eindeutige Kombination der Reihe nach an die Reihe kommt.
5. Der Systemaufrufinterpreter
Dieses Programm interpretiert Anforderungen des Benutzers. Zu jedem Systemaufruf gibt es eine zugehörige Routine, die die entsprechende Aktion ausführt.
Die beiden interessanten Komponenten sind der Eingabeinterpreter und der Systemaufrufinterpreter. Sie ähneln sich insofern, als der Eingabeinterpreter fremde Anforderungen und der Systemaufrufinterpreter lokale Anforderungen bedient.
Das Diagramm in Abbildung 4.1 zeigt unsere Vorstellung vom Network Control Program. Weiche, amöbenartige Objekte stellen Teilprogramme dar, Zylinder stellen Warteschlangen dar, und die Pfeile stellen Datenpfade dar. In diesem vereinfachten Diagramm sind keine Tabellen dargestellt. [Die „amöbenartigen“ Objekte der handgezeichneten Vorlage sind jetzt feste rechteckige Kästen: Hrsg.]
Die abgekürzten Beschriftungen in der Abbildung haben folgende Bedeutung:
- HIQ: Host-to-Imp-Warteschlange
- OCCQ: Warteschlange für ausgehende Steuerbefehle
- DQ: Datenwarteschlange
- IHBUF: Puffer des Eingabe-Handlers
- OHBUF: Puffer des Ausgabe-Handlers
____________
| 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 |
|______________|