II. Umfang der Softwareorganisation.
Das System basiert auf zwei Hauptprogrammen: dem Handler-Programm, das die Hardwareeinheit des Kanals ansteuert, und dem Netzwerkprogramm, das die Übertragungsanforderungen des Benutzers ausführt.
Da die Kommunikation im Vollduplexbetrieb erfolgt, kann jedes dieser Programme als in zwei Teile gegliedert betrachtet werden: Der eine befasst sich mit den Ausgabedaten, der andere mit den Eingabedaten. (Siehe Fig. 1)
Diese beiden Programme tauschen Daten über einen Pufferpool und logische Informationen über eine Schnittstellentabelle aus.
Im Folgenden konzentrieren wir uns nur auf den Ausgabeteil jedes Programms (Siehe Fig. 2). Der Eingabeteil wäre sehr ähnlich.
II-1. Das Netzwerkprogramm.
II-1-1. Multiplexfunktion.
Dieses Programm multiplext die ausgehenden Nachrichten (und verteilt die eingehenden Nachrichten). Das Multiplexen besteht darin, alle Anforderungen des Benutzers (oder des Rufers bzw. der Partei) aufzustapeln und den Pufferpool zu füllen, um den Handler beim Senden beschäftigt zu halten.
Das Multiplexen (und Verteilen) basiert auf den Verbindungskennnummern. (Verbindung = logische Verbindung zwischen zwei Benutzern). Das Multiplexproblem hängt eng mit der Schnittstelle zwischen dem Programm eines Benutzers und dem Netzwerkprogramm zusammen, die tatsächlich...(unreadable) Betriebssystem ist (Siehe unten: Fragen).
II-1-2. Verarbeitung ausgehender Nachrichten.
Wenn das Programm eines Benutzers Text senden möchte, sollte es die folgenden Informationen angeben (über ein Makro oder als Aufrufparameter): Position des Textes, Textlänge in Bytes und Ziel.
Unter Verwendung dieser Daten führt das Netzwerkprogramm Folgendes aus:
-
bereitet einen 16-Bit-Host-Kopf vor (1 Bit: Trace, 2 Bits: Reserviert, 8 Bits: Verbindungskennnummer, 5 Bits: Ziel-Host)
-
fügt zwischen dem Kopf und dem Text eine 16-Bit-Markierung ein, damit der Text an einer Wortgrenze beginnt. Diese Markierung besteht aus einer Eins, die dem ersten Bit des Textes vorangeht und ihrerseits von fünfzehn Nullen zum Auffüllen der Lücke eingeleitet wird.
-
prüft die Länge des Textes des Benutzers - falls sie 1006 Bytes überschreitet
+- -+
|8080 (max host message length) - 32 (heading + marking)|
|-------------------------------------------------------|
| 8 (byte = 8 bits) |
+- -+
zerlegt das Programm den Text in eine Folge von Nachrichten, deren maximale Länge 1006 Bytes beträgt - Jeder dieser Nachrichten ist ein Kopf vorangestellt, wie oben erläutert.
Bemerkung: In diesem Fall könnte eines der reservierten Bits des Kopfes dazu verwendet werden, anzugeben, dass mehrere Nachrichten zum selben Text gehören.
-
transkodiert die EBCDIC-Zeichen, aus denen die Nachrichten bestehen, in ASCII-Zeichen.
-
füllt die Puffer des Pools mit dem Inhalt der Nachrichten.
-
aktualisiert den Inhalt der Schnittstellentabelle und verschiebt die Füllzeiger (siehe unten).
II-2. Das Handler-Programm.
Dieses Programm wird entweder vom Netzwerkprogramm oder durch den E/A-Interrupt initiiert.
Dieses Programm wird sehr kurz sein. Es wird im Master-Modus (privilegierte Befehle) codiert und sollte in den E/A-Supervisor des Betriebssystems integriert werden.
Dieses Programm:
-
steuert die Hardwareeinheit des Kanals. Es initiiert das Senden, stellt gegebenenfalls eine Datenverkettung zwischen den Puffern her und prüft die verschiedenen Gerätezustände beim Empfang eines Interrupts.
-
leert die Puffer, die vom Netzwerkprogramm gefüllt werden.
-
durchsucht und aktualisiert die Schnittstellentabelle (siehe unten).
-
kann gegebenenfalls eine Steuerübertragungsprozedur mit dem IMP gewährleisten (Siehe Fragen).
II-3 Puffer und Schnittstellentabelle.
II-3-1 Puffer.
Sie sollten groß genug sein, um den maximalen Host-Nachrichtentext + Kopf und Markierung aufzunehmen (1006 + 4 = 1010 Bytes).
Folglich könnte die Puffergröße gleich 256 Wörtern (1024 Bytes) gewählt werden. Was die Anzahl der Puffer betrifft, so wird sie die Häufigkeit der Verbindungsnutzung bestimmen -
II-3-2 Schnittstellentabelle.
Über diese Tabelle teilt das Netzwerkprogramm dem Handler die Position und Länge der zu sendenden Daten mit.
Diese Tabelle könnte eine Ringtabelle mit 2 Zeigern sein: einer zum Füllen, der andere zum Entnehmen. Sie werden jeweils vom Netzwerk- bzw. vom Handler-Programm aktualisiert.
[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
+--------------+----------+