Aller au contenu principal

Caractères d'interruption

Une manière normalisée de traiter le caractère d'interruption doit être établie pour le réseau et intégrée au protocole. Les problèmes liés au caractère d'interruption se posent dans plusieurs contextes. D'abord, le caractère d'interruption sert à deux fins bien distinctes. L'une est celle de bouton d'urgence. Il signifie : « Peu importe ce qui se passe, arrête et ramène-moi immédiatement au niveau du moniteur. » Cette commande est exécutée dès réception et sert le plus souvent à sortir d'un programme dans lequel on ne veut pas rester (par exemple un programme en boucle infinie, etc.).

L'autre fin servie est celle d'une sortie d'un sous-système, ou, sur une machine à structure de fork, d'un moyen de revenir au fork de niveau immédiatement supérieur. Cette seconde fin n'est pas immédiate, car l'utilisateur veut que le système achève tout ce qu'il lui a demandé avant de quitter.

Nous supposons qu'il n'existe pas dans chaque système 1) un moyen d'accomplir chacune de ces fonctions, ni 2) une distinction nette entre l'appel et l'opération des deux. En outre, il existe des différences subtiles dans la manière dont chaque système traite ces commandes.

La fonction de bouton d'urgence peut facilement être assurée par la commande de contrôle proposée <INT>. Cette fonction doit être accomplie au moyen d'une commande de contrôle, car un programme peut entrer dans un état où il n'accepte plus aucune entrée : il ne peut donc pas être interrompu en lui envoyant un message sur la liaison du télétype. Il n'y a pas lieu de se soucier de la condition de course provoquée par l'envoi de cette commande sur la liaison de contrôle, puisque son unique but est de forcer la machine à ignorer tout le reste de ce que l'utilisateur a envoyé.

Dans notre implémentation, nous demanderions à l'utilisateur d'indiquer au logger un caractère rarement utilisé qu'il souhaite voir servir de bouton d'urgence étranger. Il serait alors simple, pour l'émetteur, de mapper ce caractère sur une commande <INT>, que la machine étrangère doit interpréter correctement. Ce schéma fonctionnerait bien pour la plupart des machines, mais certaines pourraient se prêter à d'autres manières de générer <INT>.

L'autre problème qui se pose est la conduite à tenir si le caractère « exit » de la machine étrangère est identique à celui de la machine locale. Le problème est que, lorsqu'un utilisateur converse avec une machine étrangère, il souhaite se trouver en mode transparent, où tout ce qu'il tape est envoyé directement à l'autre machine. Pour sortir de ce mode, il tape soit le caractère « exit » de sa machine, soit son bouton d'urgence. Ainsi, si la machine étrangère possède le même caractère, il n'existe aucun moyen de l'envoyer. La solution est la même que ci-dessus — un simple mappage d'un autre caractère rarement utilisé sur le caractère « exit » de la machine étrangère. Ce type de mappage peut être poussé aussi loin que chaque installation le juge nécessaire. Donner à l'utilisateur un contrôle complet de la traduction est utile, car cela lui permet d'utiliser des caractères que son télétype ne peut pas produire.