II. Étendue de l'organisation logicielle.
Le système est fondé sur deux programmes principaux : le programme Handler, qui pilote l'unité matérielle de canal, et le programme Network, qui exécute les demandes de transmission de l'utilisateur.
La communication étant full duplex, chacun de ces programmes peut être considéré comme divisé en deux parties : l'une concerne les données de sortie, l'autre les données d'entrée. (Voir Fig. 1)
Ces deux programmes échangent des données par l'intermédiaire d'un pool de tampons, et des informations logiques par l'intermédiaire d'une table d'interface.
Dans ce qui suit, nous nous concentrons uniquement sur la partie sortie de chaque programme (Voir Fig. 2). La partie entrée serait très semblable.
II-1. Le programme réseau.
II-1-1. Fonction de multiplexage.
Ce programme multiplexe les messages sortants (et distribue les messages entrants). Le multiplexage consiste à empiler toutes les demandes de l'utilisateur (ou de l'appelant, ou du correspondant) et à remplir le pool de tampons de manière à maintenir le handler occupé à émettre.
Le multiplexage (et la distribution) repose sur les numéros d'identification de liaison. (Liaison = connexion logique entre deux utilisateurs). Le problème du multiplexage est étroitement lié à l'interface entre le programme d'un utilisateur et le programme réseau, c'est-à-dire en fait ...(unreadable) système d'exploitation (Voir ci-dessous : Questions).
II-1-2. Traitement des messages sortants.
Lorsqu'un programme d'utilisateur veut émettre du texte, il doit indiquer les informations suivantes (au moyen d'une macro, ou comme paramètres d'appel) : emplacement du texte, longueur du texte en octets et destination.
À partir de ces données, le programme Network :
-
prépare un en-tête Host de 16 bits (1 bit : trace, 2 bits : bits de réserve, 8 bits : no. d'identification de liaison, 5 bits : hôte de destination)
-
insère un marquage de 16 bits entre l'en-tête et le texte afin de faire commencer le texte à une limite de mot. Ce marquage est constitué d'un 1 précédant le premier bit du texte et, lui-même, précédé de quinze zéros pour combler l'écart.
-
vérifie la longueur du texte de l'utilisateur - si elle dépasse 1006 octets
+- -+
|8080 (max host message length) - 32 (heading + marking)|
|-------------------------------------------------------|
| 8 (byte = 8 bits) |
+- -+
le programme découpe le texte en une séquence de messages dont la longueur maximale est de 1006 octets - Chacun de ces messages est précédé d'un en-tête comme expliqué ci-dessus.
Remarque : dans ce cas, l'un des bits de réserve de l'en-tête pourrait servir à indiquer que plusieurs messages appartiennent au même texte.
-
transcode les caractères EBCDIC constituant les messages en caractères ASCII.
-
remplit les tampons du pool avec le contenu des messages.
-
met à jour le contenu de la table d'interface et déplace les pointeurs de remplissage (voir ci-dessous).
II-2. Le programme gestionnaire.
Ce programme est lancé soit par le programme réseau, soit par l'interruption d'E/S.
Ce programme sera très court. Il sera codé en mode maître (instructions privilégiées) et devrait être intégré au superviseur d'E/S du système d'exploitation.
Ce programme :
-
contrôle l'unité matérielle de canal. Il déclenche l'émission, assure éventuellement le chaînage des données entre les tampons, teste les différents états du dispositif à la réception d'une interruption.
-
vide les tampons qui sont remplis par le programme réseau.
-
explore et met à jour la table d'interface (voir ci-dessous).
-
peut éventuellement assurer une procédure de transmission de contrôle avec l'IMP (Voir Questions).
II-3 Tampons et table d'interface.
II-3-1 Tampons.
Ils devraient être suffisamment grands pour contenir le texte de message hôte maximal + l'en-tête et le marquage (1006 + 4 = 1010 octets).
Par conséquent, la taille de tampon pourrait être choisie égale à 256 mots (1024 octets). Quant au nombre de tampons, il déterminera la fréquence d'utilisation de la liaison -
II-3-2 Table d'interface.
C'est par l'intermédiaire de cette table que le programme réseau informe le handler de l'emplacement et de la longueur des données à émettre.
Cette table pourrait être une table en anneau avec 2 pointeurs : l'un pour le remplissage, l'autre pour l'extraction. Ils sont mis à jour respectivement par le programme réseau et le programme gestionnaire.
[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
+--------------+----------+