Aller au contenu principal

1. Concepts de base introduits dans NIL

1.1 Objectif de NIL​

Les deux principaux objectifs de NIL sont :

  1. décrire l'environnement dans lequel un programme est exécuté (son complément ) ; cela implique la description :

    • des formats de données et des structures de données
    • des échanges avec les périphériques d'entrée et de sortie et des caractéristiques attendues de ceux-ci
    • de l'interface avec le système d'exploitation
  2. exprimer la partie front-end d'un système interactif :

    Le flux de données à travers un système interactif diminue généralement à mesure que les données atteignent le noyau du système : on suppose que, dans de nombreux systèmes interactifs, il existe ou l'on peut définir un module séparable qui implique une grande quantité de données échangées avec l'utilisateur, et beaucoup moins échangées avec le reste du système. Ce module est appelé Front-End. Il importe que le temps de réponse du système soit affecté le moins possible par les délais de transmission supplémentaires. Il est également souhaitable de maintenir les débits de données aussi bas que possible sur le réseau.

On suppose que le transfert d'un Front End n'implique pas de résoudre l'ensemble du problème de la transférabilité des programmes.

1.2 Subdivision de NIL​

Comme l'a souligné S. Volansky [ ], il est commode de diviser les langages en plusieurs sous-langages correspondant à leurs fonctions principales. NIL est ainsi subdivisé en :

  • un sous-langage de contrôle
  • un sous-langage d'opérations
  • un sous-langage de déclaration des données
  • un sous-langage d'environnement

1.2.1 Sous-langage de contrôle​

Le sous-langage de contrôle indique QUAND un calcul est effectué : il décrit le flux de contrôle ou l'ordonnancement des calculs. À l'aide de certaines informations issues des autres sections du langage, il indique également OÙ les calculs doivent être exécutés.

Comme un réseau d'ordinateurs introduit des connexions lâches entre plusieurs systèmes, le langage de contrôle de la machine de réseau devrait être capable, dans une version élaborée, d'affecter les calculs aux processeurs disponibles, en tenant compte des délais et des problèmes d'allocation des ressources que cela implique. Il n'entre pas dans notre propos d'examiner ce niveau pour le moment.

1.2.2 Sous-langage d'opérations​

Le sous-langage d'opérations décrit les opérations à effectuer sur les données sans indication de l'enchaînement entre les opérations ; il répond à la question de savoir COMMENT une opération est effectuée. Les opérations sont subdivisées en deux groupes.

  • un groupe de calcul
  • un groupe de manipulation des données

Ce dernier est la partie la plus importante de NIL, puisque son objet principal est la transformation des structures et des motifs de données.

1.2.3 Sous-langage de déclaration des données​

Le sous-langage de déclaration des données est nécessaire pour déclarer les variables et les structures de données sur lesquelles les opérations sont effectuées.

Il est possible de construire des structures d'éléments atomiques appelés perles. NIL fournit un ensemble standard de perles utilisé dans le « mode standard » ; dans le « mode étendu », un utilisateur peut définir de nouvelles perles et de nouvelles structures de celles-ci.

1.2.4 Sous-langage d'environnement​

Le sous-langage d'environnement exprime le contexte dans lequel un programme compte fonctionner ; les caractéristiques attendues des périphériques, la sémantique des échanges avec le monde extérieur par l'intermédiaire d'un système d'exploitation particulier.

Ainsi, un « descripteur de programme » complet contiendra quatre sections distinctes :

  • section d'environnement
  • section de déclaration des données
  • section de contrôle
  • section d'opérations

La section d'identification est omise, car elle correspond à la partie connexion (log in) et prise de socket de la procédure d'initialisation.

1.3 La machine de réseau​

Un concept fondamental de NIL est celui d'une machine de réseau abstraite, qui présente les caractéristiques suivantes :

  • une mémoire infinie : il n'y a dans cette machine aucun problème d'allocation de mémoire ni de ramasse-miettes. Mais comme un élément doit être accessible, il doit tout de même avoir une adresse.

  • une longueur de mot variable : un mot peut être considéré comme le plus petit élément de données intelligible et adressable. L'élément atomique appelé perle est en fait le mot machine. La structure et la longueur de chaque type de perles sont exprimées dans le sous-langage de définition des données.

Comme le présente la figure 1.3.1, un HOST communique uniquement avec une machine de réseau, qui peut fonctionner selon deux modes.

                                                  Network
+--------+ Machine
| HOST | <----------------------------------(
+--------+

Figure 1.3.1

  • le mode standard, où les perles, leurs structures et les transformations autorisées sur celles-ci sont standard et n'ont pas besoin d'être redéfinies : les perles et structures standard sont connues de chaque HOST

  • le mode étendu, où, en plus ou à la place des définitions et manipulations de données standard, un HOST peut spécifier de nouvelles structures de perles et de nouvelles transformations. Le mode étendu permet à l'utilisateur de définir sa propre machine en tant que machine de réseau. Cela équivaut alors aux modes MY LOCAL, YOUR LOCAL proposés dans la RFC #42 par Ancona. Si la définition d'un nom n'a pas été modifiée, la définition standard est présumée.

Le sous-langage de définition des données sert également à documenter l'ensemble des perles standard.

Le jeu d'instructions de la machine de réseau se situe à un niveau élevé, permettant des transformations globales de structures de données.

L'environnement de la machine de réseau est déterminé par le sous-ensemble de l'environnement du HOST serveur qui est utilisé par le programme en cours d'exécution ; le système HOST-machine de réseau peut prendre deux configurations principales, présentées dans la figure 1.3.2.

   +----------+                     / Network
| user | <------------------( Machine
| HOST | \ (server)
+----------+

Network +------------+
Machine (user) ---------------( | server |
| HOST |
+------------+
  1. La machine de réseau tient lieu d'utilisateur d'un programme fourni par le HOST (HOST serveur)

  2. La machine HOST est l'utilisateur d'un programme fourni par la machine de réseau.

    La machine serveur attribue son environnement matériel à la machine utilisatrice. Ce choix est fait afin que les programmes puissent être utilisés à distance sans être modifiés ; c'est à l'utilisateur d'un programme distant de s'adapter, lui et son propre environnement.

    Ainsi, lorsque la machine de réseau est serveur, elle définit les sections de définition des données et d'environnement.

Figure 1.3.2

1.4 Implémentation​

Les sous-langages de définition des données et de l'environnement devraient pouvoir décrire aussi bien l'environnement et les données dans les HOST que les données dans la machine de réseau. À la limite, ils devraient permettre à deux programmes écrits dans des langages différents de communiquer, pour autant que les représentations de données qu'ils utilisent puissent être exprimées dans le sous-langage de description des données.

Dans chaque HOST sera implémenté un « générateur » qui acceptera des règles décrivant les structures de données et l'environnement du HOST et générera un traducteur adéquat pour les traduire au format de la machine de réseau, comme le montre la figure 1.4.1.

   HOST description      Network Machine
(description
non standard mode) +---------------------+
| Network Machine |
| standard mode |
+---------------------+
| |
v |
+-------------+ |
| GENERATOR | |
+-------------+ |
| |
v |
Data in +--------------+ Data is |
HOST | TRANSLATOR | Network Machine |
format +--------------+ format |
| |
+-------------------------------------------------+

Figure 1.4.1

Une fois les standards de la machine de réseau établis, il semble utile d'envisager l'émulation du traducteur au moyen d'une unité microprogrammée qui serait ajoutée soit au Host, soit plutôt à l'IMP", évitant ainsi la charge d'une traduction pouvant impliquer de longues opérations au niveau du bit - (figure 1.4.2.)

   +--------+            +--------+                /  Network
| HOST | <----------| HOST | <-------------( Machine
+--------+ +--------+ \

Figure 1.4.2