HOWTO Terminal Texte pour Linux: Vue d'ensemble du fonctionnement des terminaux (sous Linux)
5. Vue d'ensemble du fonctionnement des terminaux (sous Linux)
Voir aussi la section
quelques détails sur le fonctionnement des terminaux.
5.1 Noms de périphériques
Chaque terminal est relié à un port série sur l'ordinateur hôte (souvent un
simple PC). Les ports ont les noms suivants : ttyS0, ttyS1, ttyS2, etc. Ils
sont représentés par des fichiers spéciaux dans le répertoire /dev (device :
périphérique). /dev/ttyS0 correspond au COM1 sous DOS ou Windows. ttyS1 est
le COM2, etc. Voyez
fichiers spéciaux pour les terminaux pour plus de détails sur ceux-ci et les "périphériques" connexes
tels que cua.
5.2 Se logger / se délogger
Quand l'ordinateur hôte démarre il lance le programme (voyez le HOWTO
Serial 4.1 et 7.2) sur chaque port série qui y possède un terminal (ainsi
qu'il est spécifié dans le fichier /etc/inittab). Le programme lance le
programme "login" pour que les gens puissent se logger. Une invite "login:"
apparaît à l'écran. Les gens sur le terminal se loggent (après avoir donné
leur mot de passe) et ont alors accès à l'ordinateur. Quand il est temps
d'éteindre le terminal, on se délogge en général et on éteint le terminal.
Voyez
restrictions sur le login à propos de la
restriction sur les logins (avec la permission pour l'utilisateur root de se
logger sur un terminal).
5.3 Half/Full Duplex
Si on regarde quelqu'un taper sur un terminal, les lettres tapées
apparaissent simultanément sur l'écran. Une personne naïve pourrait penser
que ce qu'on tape est envoyé directement du clavier à l'écran avec une copie
dirigée vers l'ordinateur (de manière half-duplex, voir le paragraphe
suivant). Ce qui se passe généralement est que ce qui est tapé au clavier est
envoyé directement à l'ordinateur hôte uniquement qui en retour renvoie au
terminal chaque caractère qu'il reçoit (ce qu'on appelle full-duplex). Dans
certains cas (comme les mots de passe ou des commandes brutes d'éditeurs) les
lettres tapées ne sont pas renvoyées.
Full-duplex veut dire qu'il y a deux liens de communication
unidirectionnels. Le full-duplex est la norme de fait sur les terminaux. Le
half-duplex est la moitié d'un duplex, ce qui veut dire qu'il n'y a qu'un
lien de communication unidirectionnel. Ce lien doit être partagé par les
communications allant dans les deux directions et on ne peut utiliser qu'une
direction à la fois. Dans ce cas l'ordinateur n'est pas en mesure de répéter
les caractères que vous tapez (et que vous lui envoyez) et par conséquent le
terminal doit aussi envoyer directement sur son écran chaque caractère que
vous tapez. Certains terminaux possèdent un mode de fonctionnement
half-duplex qui est rarement utilisé.
5.4 Mémoire du terminal
L'image sur un tube à électrons s'évanouira presque instantanément à moins
qu'elle ne soit réaffichée fréquemment sur l'écran par un faisceau
d'électrons lancés sur la face du tube. Puisque que le texte envoyé à un
terminal doit rester sur l'écran, l'image de l'écran doit être stockée dans
les puces mémoire du terminal et le faisceau d'électrons doit balayer l'écran
de façon répétée (disons 60 fois par seconde) pour maintenir l'image. Voyez
mémoire du terminal pour plus de détails.
5.5 Commandes pour le terminal
Le terminal est sous le contrôle de l'ordinateur. L'ordinateur envoie au
terminal non seulement du texte pour afficher ce dernier sur l'écran mais
aussi des commandes que le terminal exécute. Ce sont des
codes de contrôle (octets) et des
séquences d'échappement. Par exemple, le code de
contrôle CR (retour chariot) déplace le curseur sur le côté gauche de
l'écran. Une certaine séquence d'échappement (plusieurs octets dans lesquels
le premier octet est le code de contrôle d'"échappement") peut déplacer le
curseur à l'emplacement de l'écran spécifié par les paramètres placés dans la
séquence d'échappement.
Les
premiers terminaux n'avaient que peu de
telles commandes mais les terminaux modernes en ont des centaines.
L'apparence de l'affichage peut être modifiée à certains endroits : fort,
faible, souligné, clignotant et vidéo inverse. Un haut-parleur dans un
terminal peut émettre un "cliquetis" quand une touche est pressée ou émettre
un bip si une erreur s'est produite. Les touches de fonctions peuvent être
programmées pour des utilisations spéciales. Des polices variées peuvent
exister. On peut faire défiler l'affichage vers le haut ou vers le bas. On
peut effacer des parties spécifiques de l'affichage. On peut utiliser divers
types de contrôle de flux pour arrêter le flux de données quand les octets
sont envoyés au terminal plus rapidement que le terminal ne peut le
supporter. Il y en a bien plus, que vous découvrirez en parcourant une notice
de terminal très technique ou à travers les liens Internet de la
liste des séquences d'échappement.
5.6 Manque de normalisation résolu par Terminfo
Alors que les terminaux faits pour les États-Unis utilisaient tous le même
code ASCII pour l'alphabet (sauf les terminaux IBM qui utilisaient EBCDIC),
il n'utilisaient malheureusement pas tous les mêmes séquences d'échappement.
Ceci s'est produit même après que plusieurs normes ANSI (et ISO) aient été
établies puisque ces normes n'ont jamais été suffisamment matures. De plus,
les vieux terminaux n'avaient pas les possibilités des nouveaux terminaux.
Ceci pouvait poser des problèmes. Par exemple, l'ordinateur pouvait envoyer
une séquence d'échappement à un terminal lui disant de séparer l'écran en
deux fenêtres de taille spécifiée, sans réaliser que le terminal était
incapable de le faire.
Pour surmonter ces problèmes une base de données appelée "termcap"
(maintenant "terminfo") a été mise en place. Cette base de données réside
dans certains fichiers sur l'ordinateur et en a une partie (quelquefois le
fichier entier) pour chaque modèle de terminal. Pour chaque modèle (comme le
VT100) une liste des capacités est fournie, avec une liste de certaines
séquences d'échappement disponibles et ce qu'elles font. Voyez la section
termcap et terminfo (détaillés) pour plus de
détails. Les applications peuvent utiliser cette base de données en appelant
certains programmes de la bibliothèque C. Un grand ensemble de tels
programmes (il y en a plus de 200) est appelé "ncurses" et ils sont listés
sur la page de manuel de ncurses.
5.7 L'interface
La variable d'environnement TERM décrit le type de terminal que Linux croit
que vous utilisez. Certaines applications l'utilisent pour regarder les
capacités dans la base de données terminfo et par conséquent TERM doit être
positionnée correctement. Mais que l'ordinateur connaisse les capacités du
terminal n'est qu'une partie du chemin vers une interface correcte.
Pour que les octets affluent de l'ordinateur vers le terminal, le terminal
doit être configuré pour recevoir les octets à la même vitesse (en bits par
seconde) qu'ils sont envoyés du terminal. Si on configure le terminal pour
recevoir à 19200 bauds et que l'ordinateur envoie des caractères à 9600
bauds, on ne verra à l'écran que des parasites (ou peut-être rien du tout).
On sélectionne la vitesse de transmission pour un terminal (ainsi que bien
d'autres possibilités) à partir des menus de "configuration" (set-up) sur le
terminal. La plupart des terminaux possèdent un grand nombre d'options dans
leurs menus de "configuration" (voyez
configuration du terminal (détaillée)). Le port série de l'ordinateur
a aussi des options et ces options doivent être configurées d'une manière
compatible (voyez
configuration de l'ordinateur (détaillée)).
5.8 Émulation
La plupart des terminaux de nos jours possèdent plus d'une émulation
(personnalité ou "mode de terminal"). Les numéros de modèles des terminaux
fabriqués autrefois par DEC (Digital Equipment Corporation, maintenant
Compaq) commencent par VT (par exemple, VT100). Bien d'autres terminaux
différents des VT100 peuvent être configurés pour émuler un VT100. Wyse est
un grand fabricant de terminaux et la plupart de leurs terminaux peuvent
émuler des terminaux DEC divers comme les VT100 et les VT220. Par conséquent
si vous voulez, disons, utiliser un terminal VT320 vous pouvez soit utiliser
un vrai VT320 en personnalité "naturelle" soit utiliser un autre terminal
capable d'émuler un VT320. Les personnalités "naturelles" ont en général plus
de capacités donc, toutes choses étant égales par ailleurs, c'est la
meilleure option à utiliser.
Le type d'émulation le plus courant est d'utiliser un PC comme si c'était un
terminal vt100 (ou identique). Les programmes chargés dans la mémoire du PC
permettent ceci. Dans Linux (sauf si vous êtes dans X Window) le moniteur du
PC (appelé la console) émule un terminal de type "Linux" (proche du vt100).
Même certaines fenêtres dans X Window émulent des terminaux. Voyez
émulation de terminal.
5.9 La console
Sur un PC, le moniteur est appelé la console. Elle émule un terminal de type
"Linux". On se logge dessus via un terminal virtuel. Voyez
la console : /dev/tty?. Elle reçoit des messages du
noyau concernant la progression du démarrage (boot) et de l'arrêt de la
machine. On peut faire en sorte que les messages allant normalement sur la
console aillent sur le terminal. Pour ceci, vous devez patcher et recompiler
le noyau à la main, sauf pour les noyaux 2.2 (et plus) pour lesquels il
s'agit d'une option de configuration. Voyez
faire qu'un terminal devienne la console.
[22 février 2002, JDNet]
|